题目一览
1、easyre 1
2、reverse1 1
3、reverse2 1
4、内涵的软件 1
5、新年快乐 1
6、xor 1
7、helloword 1
8、reverse3 1
1、easyre 1
![](https://img-blog.csdnimg.cn/img_convert/739b7c2c4babfca027cd7807cbdce3a1.png)
exeinfo了解到是64位无壳
![](https://img-blog.csdnimg.cn/img_convert/5b3b396d7e5e174dd5ce3a31d0eb2a7e.png)
IDA打开,shift+F12查看字符串
![](https://img-blog.csdnimg.cn/img_convert/1f516d36d5603233776976bca295f0a6.png)
flag{this_Is_a_EaSyRe}
2、reverse1 1
![](https://img-blog.csdnimg.cn/img_convert/ff47691edbf626fc90c74166f4681e40.png)
exeinfo了解到64位无壳
![](https://img-blog.csdnimg.cn/img_convert/e799c1a78abe4b476e8755a52b5a521b.png)
IDA打开,shift+F12查看字符串
这里涉及到了flag
![](https://img-blog.csdnimg.cn/img_convert/e30cfe981f29ad4c5a83a0ad10699ba3.png)
这里看到了这个字符串与flag格式相似
![](https://img-blog.csdnimg.cn/img_convert/fb132b5848f8da4efd1ab8d476764162.png)
跳转过来发现被引用
![](https://img-blog.csdnimg.cn/img_convert/d3297dec1b30f5f8041f3eb323851442.png)
跳转过来
![](https://img-blog.csdnimg.cn/img_convert/4cb18bca09ab099902dbbd2eae56d223.png)
F5查看伪代码
![](https://img-blog.csdnimg.cn/img_convert/77b8025e999e9a743dde7d407e24071e.png)
这里是输入str1与str2进行比较,相同则为flag
str2为{hello_world}
上面有一个判断,将111换为48,转为char即为
![](https://img-blog.csdnimg.cn/img_convert/6fafeea68824403be3d32971c9039a7c.png)
将o转换为0
flag{hell0_w0ld}
3、reverse2 1
![](https://img-blog.csdnimg.cn/img_convert/6ec6ea451d81c9232873a5e7e8b71000.png)
64位的ELF文件
![](https://img-blog.csdnimg.cn/img_convert/933be59e4b8ea77b2332dc316c117fab.png)
shift+F12查看字符串
![](https://img-blog.csdnimg.cn/img_convert/7f5a6444093fc3b11a0ccf857b4d8ac6.png)
跟前面那个差不多,跟进right flag
F5转换伪代码
![](https://img-blog.csdnimg.cn/img_convert/3fd0c938ae80819d5ae85a91e044aed3.png)
相同的套路,输入的字符串与flag进行比较,相同则正确
flag就是{hacking_for_fun}
上面的ASCII码转字符就可以了
![](https://img-blog.csdnimg.cn/img_convert/8f8dacaaaff405aae325984989db2d8a.png)
把上面的字符串中的i和r换为1
flag{hack1ng_fo1_fun}
4、内涵的软件 1
![](https://img-blog.csdnimg.cn/img_convert/61d55d698334de346d1c3f4e638db231.png)
exeinfo了解到32位无壳
![](https://img-blog.csdnimg.cn/img_convert/843d83f0af186eb99244604bc44be7e2.png)
shift+F12查看字符串
![](https://img-blog.csdnimg.cn/img_convert/9fa92041fd2eea1bd2867320c7f8b878.png)
main函数F5查看伪代码
![](https://img-blog.csdnimg.cn/img_convert/22a39c367514a70d860bbbe966d9b249.png)
v5在这里并没有被调用
直接把DBAPP换为flag提交就可以了
flag{49d3c93df25caad81232130f3d2ebfad}
5、新年快乐 1
exeinfo查看,32位upx壳
![](https://img-blog.csdnimg.cn/img_convert/f00939b45974b9bb4ff07770ba3f95d3.png)
upx.exe -d脱一下壳
![](https://img-blog.csdnimg.cn/img_convert/36c02bdca80ad52ebc40e783a71c1f05.png)
shift+F5看一下字符串
![](https://img-blog.csdnimg.cn/img_convert/7a3adda6fe75aada34bbf3ddd8e6c7e9.png)
main函数F5看一下伪代码
![](https://img-blog.csdnimg.cn/img_convert/6d9716c4ab1a983f75dc0a1622f155c8.png)
根据提示,字符串应该就是HappyNewYear!
6、xor 1
![](https://img-blog.csdnimg.cn/img_convert/bfdb594c1a072d0fd5ddde1f68618c7c.png)
exeinfo查看一下,64位无壳
![](https://img-blog.csdnimg.cn/img_convert/3435b5bca387e6399d45159200d2410d.png)
拖入IDA,shift+F12查看字符串
![](https://img-blog.csdnimg.cn/img_convert/32abadbb94b825a145892bda3e590d97.png)
直接F5查看一下伪代码
![](https://img-blog.csdnimg.cn/img_convert/cf95fb5d1228ef5d4a7199e501ffd6a8.png)
第一个if很明显,表示flag长度为33位
后面就是一个for循环,进行异或运算
最后判断__b和global是否相等,相等则返回success
这样的话,flag应该就是global的值
双击跟踪找到global的值
![](https://img-blog.csdnimg.cn/img_convert/e166ecca69afb72fdcf3635e7bcf7357.png)
写脚本运算一下
这里的数组可以直接shift+E得到
![](https://img-blog.csdnimg.cn/img_convert/97a8fe5045c9985f5dc44bd2193daf7b.png)
test = [0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11,
0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F,
0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F,
0x47, 0x32, 0x4F, 0x00]
flag = [0 for i in range(len(test))]
flag[0] = 'f'
flag1 = 'f'
for i in range(1,len(test)):
flag[i] = test[i] ^ test[i-1]
flag1 += chr(flag[i])
print(flag1)
得到flag
flag{QianQiuWanDai_YiTongJiangHu}
7、helloword 1
附件是个APK文件,使用APKIDE打开
下载地址:https://down.52pojie.cn/Tools/Android_Tools/ApkIDE_v3.3.rar
找到主函数,直接就看到了flag
![](https://img-blog.csdnimg.cn/img_convert/a642aa85a78b455bf40887ad855332bc.png)
8、reverse3 1
exeinfo查看信息
32位无壳
![](https://img-blog.csdnimg.cn/img_convert/25330b999d0c02e5145afd34f262c234.png)
IDA32位打开,shift+F5查看字符串
![](https://img-blog.csdnimg.cn/img_convert/eb1fa31907e133fe67fd5e9a3fbb3885.png)
跟踪一下right flag
找到main函数,F5查看一下伪代码
![](https://img-blog.csdnimg.cn/img_convert/849574372579fc1ab1368a5d13c49e16.png)
输入的数据进行了一次sub_9A10BE这个算法的处理,处理后的结果赋值给v4
使用strncpy函数把v4的数据赋值给Destination
v11为Destination的长度
for循环对Destination的数据进行了一下移位(ASCII码层面)
v5为移位后的Destiantion的长度
移位后的Destination与Str2相同的话,正确
Str2为这个
e3nifIH9b_C@n@dH
![](https://img-blog.csdnimg.cn/img_convert/2c22c5cc5f3cd3b98dbe9ab50cb7a7ea.png)
需要得到flag的话应该就是把上面处理的过程反过来
Str2——>移位——>sub_9A10BE算法解码
这样的话关键就是sub_9A10BE这个算法是什么算法
双击跟踪,这个算法是直接调用的sub_9A1AB0,变量为三个
![](https://img-blog.csdnimg.cn/img_convert/7f438ef95841ff170a76f960a34b286d.png)
可以了解到这个是base64加密算法
![](https://img-blog.csdnimg.cn/img_convert/0669745b86cc4c3bf03cfa1c93565447.png)
其实根据一开始的字符串检索那里就能猜到
![](https://img-blog.csdnimg.cn/img_convert/cc882e5511a12130e7881b3d9798f60b.png)
这样的话就可以用以下的脚本处理一下
import base64
test = "e3nifIH9b_C@n@dH"
flag = ""
for i in range(len(test)): //对每个字符进行循环处理
flag += chr(ord(test[i])-i) //伪代码中的处理是循环j,在循环中每次+j,这里就是反过来每次-
print(base64.b64decode(flag)) //移位的字符串进行一下base64解码就可以了
![](https://img-blog.csdnimg.cn/img_convert/d1d2841ecf25e33627d3417e6c25a261.png)
flag{i_l0ve_you}