一.流浪者
1.查壳
无壳,32位。
2.IDA反编译。
shift+f12查看字符串。找到pass!(通过)跟进。
找到关键函数(猜的) :逻辑简单:写exp发现结果是乱码,前面应该是还有加密。
快捷键x找到调用位置,这才是主函数。
分析代码:逻辑:先判断是小写字母,大写字母或数字并分别进行减法操作,然后在以加密后的值为下标检索aAbcdefghiabcde中的值然后与”KanXueCTF2019JustForhappy“比较。
3.exp
4.get flag
flag{j0rXI4bTeustBiIGHeCF70DDM}
二.SignIn
1.查壳
无壳,64位。
2.IDA反编译。
关键函数为:sub_96A,_gmpz_powm.
_gmpz_powm不知道是什么,问了一下度娘了解到这是一个 GNU 高精度算法库.
_gmpz_str:将 字符数组(中间的变量)以 指定的进制( 末位的数)解读成数值并写入 v7 所指向的内存
_gmpz_cmp:比较
_gmpz_powm:计算 第二个v6的 v5 次方,并对 v4 取模,最后将结果写入 第一个v6 中(相当于RSA加密)
sub_96A:
逻辑:把v8的每一个字符转化为16进制并拼接。
3.exp
4.get flag
suctf{Pwn_@_hundred_years}
三.easy_Maze
1.查壳
无壳,64位,elf文件。通过题目可知是迷宫题。
2.IDA反编译。
Step_2:
在主函数中迷宫做过变换。通过动调(远程调试)可以得到变换后的迷宫。
(IDA远程调试(elf文件)设置_aiQG_的博客-优快云博客_ida远程调试)
分析Step_2:
迷宫为7*7方阵
w:上,s:下,a:左,d,右,起始位置在(0,0),末位置在(6,6),只能走1.
3.get flag
UNCTF{ssddwdwdddssaasasaaassddddwdds}
四.easyRE1
1.查壳
无壳,64位(还有一个32位的,和这个一样。看一个就行)
2.IDA反编译,shift+f12查找字符串。
直接就得到flag:flag{db2f62a36a018bce28e46d976e3f9864}