攻防世界 re1-100

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

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

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

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

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

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

计算长度:

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 


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)、对无关的系统函数进行了分析,还得加强观察重点,分清楚系统函数与其他函数的区别。

观察不仔细。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值