首页
社区
课程
招聘
[原创]2019CTF晋级赛Q1第六题RePwn分析
2019-3-24 22:12 7423

[原创]2019CTF晋级赛Q1第六题RePwn分析

2019-3-24 22:12
7423

看到这个名字的时候,我就感觉出题人会使用溢出来出题,因为我见证了溢出类题目的发展,从17年的秋季赛的第二题,再到lctf2017我自己出题用了,所以取这个名字,我非常的怀疑。

静态分析

先试运行下:

输入错误直接就退出了https://bbs.pediy.com/upload/attach/201903/732490_MCA27R3A9A9SDZS.jpg
peid看下

存在des加密。
然后拖入ida分析,根据提示字符串,然后找到主流程:

传入了sub_4021f0这个函数:

比较输入的第八个字符往后的此符传是不是X1Y0uN3tG00d
然后返回进入另外一个函数:

flag的长度为24然后进入sub_4013b0验证:

sub_401380是:

说明输入是应该是0-9之间的数字,然后转为整数,那个里边是方程:
一开始z3解不对,后来用手解的,其实就是一个整数的方程,注意千、百、十、个位的系数相等就行了。这里就不列方程了,那张纸被我搞丢了。
最终解出来是:xxxxxxx(抱歉我真的忘了)

 

然后进入,最后一阶段,溢出,溢出到哪儿呢?

 

还记得刚才一开始peid看到的那个des么?我们看在哪里用到了他。
0x407080.
来到ida,然后看引用pbox表的地方,然后一步一步往上找,然后可以找到这个函数:

这个函数就是对最后一段flag进行验证的函数,我们看他的地址是多少?
0x4018b0
然后我们看:

溢出的时候,最高位为0,所以flag[23]=k
接下来应该是40,所以flag[22]=chr(0x40+3)=C
然后是0x18,flag[21]=0x1b+0x46=a
然后是0xf0mflag[20]=0xf0+0x58?不对这里其实有个整数溢出,轮回到f0,其实应该是H,这个可以算下,或者结合出题人的名字猜吧。Hacky。应该是西安某个高校的。
进入到最后一段的验证流程:

这个流程是des加密用到的地方,这里是初始化key,然后进入real_check这个流程,des加密然后与目标加密结果比较:

然后提取出来,des解密:

脚步如下:

from Crypto.Cipher import DES
import base64


key="XiyouNet"
cipher="9db084ac97041e305697d5a499355a28"

cryptor = DES.new(key,DES.MODE_ECB)
print cryptor.decrypt(cipher.decode("hex"))

然后解密结果下:

然后及部分拼凑起来!
就是结果了,有点陶瓷娃的嫌疑!


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞1
打赏
分享
最新回复 (1)
雪    币: 2049
活跃值: (74)
能力值: ( LV3,RANK:31 )
在线值:
发帖
回帖
粉丝
Littlebirds 2019-4-1 19:41
2
0
大佬写的详细,小白勉勉强强能看懂,好评!
游客
登录 | 注册 方可回帖
返回