攻防世界—刷题(1)

一.parallel-comparator-200

1.。.c文件,用记事本打开。

 2.分析代码:关键是result(根据main函数可知result=0)的计算argument[2]为flag,argunment[1]:differences  argument[0]:爆破出的(范围是64~128)

 3.exp

flag==lucky_hacker_you_are

二.Windows_Reverse1

1.查壳

upx加壳,32位文件。

2脱壳,IDA反编译。关键是sub_401000函数。

 跟进,分析:没看出v4和v5的关系但可以大胆猜测一波:v1就是变形后的flag,v4为原flag(逻辑很简单)。

需要注意的是v1[v4]的转化:由于v4和v1都是地址所以可以把他转化为图中注释的形式。

 看一下byte_402FF8的值:麻了,为毛是?,看了大佬的wp才知道ascii表中的前32位(也就是无用的非字符)是无法显示的,有计算了一下402FF8+32(十进制)得到0x403018。

所以byte_402FF8有用的的值从0x403018开始 。

3,脚本解密

4.get flag

flag{ZZ[JX#,9(9,+9QY!} 

三.re2-cpp-is-awesome

1.查壳

无壳,64位。

2.IDA反编译。

分析:关键在第三个if判断,以 dword_6020C0中的值为下标查找 off_6020A0的值与v8做对比,寻找v8与flag的关系。从if开始往上捣,v8==v10,v10==v13 ,v13==v11,v11=flag。

3,脚本解密。

4.get flag

ALEXCTF{W3_L0v3_C_W1th_CL45535}

四.re4-unvm-me 

1..pyc文件,反编译为py文件。

 2.解析源码。

 逻辑很简单就是把flag分段,并把每段进行MD5加密,得到的数转化为十进制数,在与md5s比较。

3.解密

4.get flag 

ALEXCTF{dv5d4s2vj8nk43s8d8l6m1n5l67ds9v41n52nv37j481h3d28n4b6v3k} 

五.Replace

1.查壳

upx壳,32位。

2.脱壳,IDA反编译。

可以看出关键函数为sub_401090,跟进。

逻辑比较简单:以flag为下标检索byte_4021A0中的字节并与byte_401250的字节和0x19异或的结果比较。(通过动调可以得到v11+v12==byte_401250的字符两个一组组成的字节。)

注:动调是报错是由于ASLR机制,关闭就可以正常动调。(ASLR_Boketto的博客-CSDN博客

3.exp.

 4.get flag

flag{Th1s_1s_Simple_Rep1ac3_Enc0d3}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值