安恒西湖论剑线下上午CTF部分题目WP

简单的做了两个题,一道逆向,一道misc,其他题目,因为博主上课,时间不太够,复现时间也只有一天,后面的会慢慢补上

先说RE1,一道很简单的win32逆向,跟踪主函数,R或者TAB按几下,

根据esp返回地址,来确定,这里将字符串根据偏移地址依次入栈,在调用print函数后,又对字符进行了替换

因此flag很容易得到

Dbapp{crackme100}

F5看一下伪代码

如下图和汇编代码一样,做了一个赋值替换

一个do while循环将满足条件的转化为Ascll码

下一题

Misc1

开局一张图

后面用hxd和tweakpng分析的时候,留意到一个警告,百度,大致意思的图片里面内嵌了图片,

复现结束后问一个做出来的师傅,那个师傅说这张图里面内嵌了很多图片,只不过出题人把文件头给改掉了

这里我搜索的是png文件头的一部分4E47,从上图可以看到第一行就是我们所看到的最外层的图片,文件头是完整的

参考第一个,往后面看,可以注意到,文件头类似的有三张图,有开头(PNG)还有结束的标识(IEND)

可以看到文件头确实被改掉了,我们改回来然后用foremost分离图片

可以得到四张图(一张原图,三张隐藏图片)

对隐藏图片修改宽高,无果

用图片分析工具,查看,可以找到一丝端倪

 

有隐写痕迹,但是很模糊(三张图片都有痕迹),猜测需要异或,但是有三张图片,可能需要把三张图合并

合并之后,还是很模糊

分析不出有效的信息,太模糊了

尝试三张图片与原图片(0000000)依次异或,再进行合并

xor1和xor2合并之后,右下角的标记清晰了一些,再拿合并后的图片与xor3合并

可以看到清晰了很多,转一圈,flag有了

 杂谈:

一些本人对题目的理解,多张图片合并之所以无法得到清晰的图片,关键点在像素点上,简单做个比喻,黑色像素点代表0,白色像素点代表1

异或大家都知道,1 xor 1=0;         0 xor 0=0               ;1  xor 0 =1

那么用黑白像素点做异或的话就很好理解了,多张图片黑白像素点分布是不均衡的,一旦合并,存在有的图片有全0或者全1的状况,合并之后就会把其它突破的像素点给覆盖掉

异或之后,再进行合并,0变成1,1变成0,恰好能够还原出原来的信息。

猜你喜欢

转载自www.cnblogs.com/mke2fs/p/10952460.html