攻防世界 re1-100

1.下载附件,exeinfo查壳,无壳

2.拖进IDA进行静态分析,找到main函数,F5反编译,分析函数

 从返回的正确的结果判断是主要的过程,前面的都是系统函数。

3.开始进行分析if语句功能

如图,其中的strlen(bufParentRead) == 42,得到长度内容

看到下面的{daf29f59034938ae4efd53fc275d81053ed5be8c}的长度很想,对其中的123,125进行转化为ASCII码(IDA中的快捷键R)分别代表的是{,},所以长度也包括花括号。

计算长度:

#include 
#include 
#include int main()
{char a[]="{daf29f59034938ae4efd53fc275d81053ed5be8c}";int b=strlen(a);printf("%d",b);//结果为42
}

4.对其重要进行分析

 后的confuseKey(bufParentRead, 42),使用key的用法,双击进去

观察得到key的顺序为3,4,1,2

{daf29f59034938ae4efd53fc275d81053ed5be8c},对其字符进行分成四份(记得将花括号给去掉)

然后按照顺序得到:53fc275d81053ed5be8cdaf29f59034938ae4efd

首尾都和判断参数一致。

这个就是flag.

5.总结错误:

(1)、找到if语句为重点后, !strncmp(&bufParentRead[1], "53fc275d81", 0xAuLL)以为这个函数是对其与bufParentRead存储的字符进行比对。没有注意到bufParentRead前的&取地址符号。

(2)、对无关的系统函数进行了分析,还得加强观察重点,分清楚系统函数与其他函数的区别。

观察不仔细。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部