首页
社区
课程
招聘
[原创]]CTF2019第六题---Repwn
发表于: 2019-3-18 17:53 3108

[原创]]CTF2019第六题---Repwn

2019-3-18 17:53
3108

反编译程序,查看所有字符串,来到如下位置:

首先来看scanf接收输入后的第一个函数

这里会校验输入字符串的第9-20位,并且限制第21位为字符"H"
接着来看接收输入后的第二个函数:

这个函数里会限制输入的长度为24个字符,然后通过一个计算后,将输入的后四位依次减去一个值,之后将该字符串进行拷贝(此处有溢出)。
看下计算函数的内容:

此处首先计算输入的前8位,并进行验证。

通过以上分析可知,关键在于输入字符串前8位的计算,

通过该处计算内容与验证条件可编写爆破脚本,对前八位进行爆破。由于直接爆破8位字符串难度较大,所以根据验证条件,将爆破分为两部分。
第一部分,通过

爆破字符串的后四位,我使用的是26位大小写字符加数字进行爆破,速度很快。
符合条件的后四位有:
图片描述
使用任意一个,并根据前一个判断条件,使用相同的方法来爆破字符串的前四位。得出的结果有很多,都符合条件,随意取一个即可。
这样,便可获取到输入字符串的前21位。

接下来便是计算字符串的后三位,这里就用到了前面所说的溢出点,通过调试可知,字符串的后四位,即为可控的返回地址,这个返回地址的后两位已经由字符串的第21位“H”和上面对于字符串后四位的计算确定为“0xF0”。但是控制返回地址该跳往何处呢?
没什么思路的时候还是看看字符串吧,果然在字符串中发现了蛛丝马迹。。。。
有一处加密的字符串看起来很可疑,跳转过去。。。果然

这里发现了很多和算法相关的代码,查找源头

这里的函数地址正好为“0x00401BF0”,那么通过第一处字符串的后四位便可将程序跳转到这里。
至此,第一处算法的分析结束,第一处输入的字符串为"20101001X1Y0uN3tG00dHaCk"

过了第一关之后,对第二关的代码进行分析后,可知这里使用的是标准的DES算法,并且密钥也很明显。

分析关键验证处可知,校验的字符串为

提取前16位为“9DB084AC97041E30”,通过DES解密,获取明文

将前两关所得的结果以此输入,可得flag


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-3-18 17:53 被SnowMzn编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//