wmsuper 发表于 2018-11-4 22:21

一道简单的ctf

本帖最后由 wmsuper 于 2018-11-15 18:04 编辑

flag是以“@52pojie.cn”结尾,分析这个ctf,找到flag。{:301_997:}
wp:
1.先分析算法找到,算法是一个简单的xor和一个简单的方程组,密钥是 7B90076C4EE278E673,这个是压缩包密码。
相关代码:
import binascii
key="h3ll0_w0rld"
enc_str='7B90076C4EE278E6'#7B90076C4EE278E673
str_len=len(enc_str)
key_len=len(key)
ret=''
print '{',
for i in range(str_len):
      t=(ord(enc_str)^ord(key))&0xff
      t=((~t)^(ord('7')^ord('3')))&0xff
      ret+=chr(t)
      
      print '0x%02x,'%t,
      
print '}'

print ord('7')-ord('3')
print ord('7')+ord('3')

2.压缩包是以附加数据存储在exe后面,开头是“PK",简单提取出来保存解压之后是一个纯黑的图片。

3.这里是图片隐写,因为怕有些同学想不出来于是调低下难度,就把文件名改为查看图像隐写工具的名称”Stegsolve“,简单的搜索就能搜索到这个工具。
相关的隐写代码,LSB隐写:
using System;
using System.Drawing;
using System.Drawing.Imaging;

namespace level9
{

      public class Level9Impl
      {
               
                public Level9Impl()
                {
                        this.picWidth = 1600;
                        this.picHeight = 800;
                        this.drawLoc = new PointF(20f, 20f);
                        this.fontName = "Comic Sans MS";
                        this.fontSize = 40;
                        this.bgr = 0;
                        this.bgg = 0;
                        this.bgb = 0;
                        this.outFilename = "Stegsolve.png";
                        this.password = "D0ub1e_11_G1ft@52pojie.cn";
                }

               
                private void setTextColors()
                {
                        this.fgr = (byte)(this.bgr ^ 1);
                        this.fgg = this.bgg;
                        this.fgb = this.bgb;
                        this.bgBrush = new SolidBrush(Color.FromArgb(255, (int)this.bgr, (int)this.bgg, (int)this.bgb));
                        this.fgBrush = new SolidBrush(Color.FromArgb(255, (int)this.fgr, (int)this.fgg, (int)this.fgb));
                }

               
                public bool writePictureNow()
                {
                        this.setTextColors();
                        using (Bitmap bitmap = new Bitmap(this.picWidth, this.picHeight))
                        {
                              using (Graphics graphics = Graphics.FromImage(bitmap))
                              {
                                        using (Font font = new Font(this.fontName, (float)this.fontSize))
                                        {
                                                graphics.FillRectangle(this.bgBrush, new Rectangle(0, 0, this.picWidth, this.picHeight));
                                                graphics.DrawString(this.password, font, this.fgBrush, this.drawLoc);
                                        }
                              }
                              bitmap.Save(this.outFilename, ImageFormat.Png);
                        }
                        return true;
                }


                public int picWidth;

                public int picHeight;

                public string outFilename;


                public string password;

                public string fontName;


                public int fontSize;

                public PointF drawLoc;


                public Brush bgBrush;

                public Brush fgBrush;

                public byte bgr;

                public byte bgg;

                public byte bgb;

                public byte fgr;

                public byte fgg;

                public byte fgb;
      }
}


4.最后查看的结果如图:

BeneficialWeb 发表于 2018-11-7 17:05

本帖最后由 BeneficialWeb 于 2018-11-7 17:14 编辑

算法

验证部分


长度



解密:

#include<stdio.h>
#include<windows.system.h>

int main()
{
      byte key[] = { 0xA4,0x8A,0xAE,0xA7,0xFB,0x93,0xBA,0x88,0xBD,0xD2,0xDA,0xA1,0xFF,0xAF,0xD2,0xFD,0x37,0x33,0x0 };
      char table[] = "h3ll0_w0rld";
      
      for (int i = 0; i < 16; i++)
      {
                key ^= 0x33;
                key ^= 0x37;
                key=(-key)-1;
                key^=table;
      }
      printf("%s", key);
      system("pause");
      return 0;
}

然后我把后缀改成rar,输入密码,不对啊???!!!!!

wmsuper 发表于 2018-11-13 17:46

雨落!! 发表于 2018-11-13 17:35
好的,谢谢大佬,看雪我知道,第二个不清楚,有网址吗,嘻嘻


http://www.flare-on.com/
这几年都可以做做看,每年12道题,能做到11题已经很厉害,12题是地狱级难度。

gotu110 发表于 2018-11-4 22:27


不错不错 鼓励鼓励

逆轩 发表于 2018-11-4 22:37

好久不来看了,还有这么多好东西

onmiuncai 发表于 2018-11-5 00:49

本帖最后由 onmiuncai 于 2018-11-5 01:05 编辑

D0ub1e_11_G1ft@52pojie.cn

x4998 发表于 2018-11-5 06:36

谢谢分享

ytdzjun 发表于 2018-11-5 09:06

前面至少有8位去干这个事了;www

dd650705 发表于 2018-11-5 11:58

感谢楼主分享 谢谢

艾希尼尔 发表于 2018-11-5 15:19

我不会!

hahaerlx 发表于 2018-11-5 17:30

下载回来,一开起来,咱也看不懂···我不会:Dweeqw

BeneficialWeb 发表于 2018-11-5 19:18

珊珊来迟,又有人已经做出来了,哈哈。
页: [1] 2 3 4 5 6
查看完整版本: 一道简单的ctf