buuctf——(GUET-CTF2019)number_game

1.查壳。

无壳,64位。

2.IDA反编译。

分析代码共有四个未知函:sub_4006D6,sub_400807,sub_400881,sub_400917。

查看sub_4006D6可知flag是由0,1,2,3,4组成的,且长度为10.

再看第二个if中的函数:由循环可知要把unk_601060中的数据写成5 *5的方阵,两个if判断分别是要使方阵的每行,每列中的元素都不同(也就是数独。)

解数独。

得到这十个数为:0421421430

提交发现不对,应该是在中间进行了变换。

3.看sub_400807函数。

递归函数。(没看懂,看了看大佬的wp,发现他们是动调出的结果。) 

开始动调因为是liunx系统文件,所以要借助ubuntu远程调试。

在if处设置断点,输入0123456789这十个数(v5也是十位。),

 然后f8单步调试到jz处,改ZF的值为0(这样才能进入if结构)。

继续f8调试。知道栈中v7所对的地址中有值

(如下图AE00-AE08:v5输入的0123456789,AE10-AE18:变换后的值。)

4.脚本解密

5.get flag

flag{1134240024}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值