CSAW 2016:Rock-100

时间:2023-12-17 11:11:44

ELF文件 拖进ida 震惊:

CSAW 2016:Rock-100

这一堆堆都是什么神仙函数呀!!

f5看一下伪代码

CSAW 2016:Rock-100

可以看出来 其实看起来函数很多 但是真正管用的函数也就那么几个

如果sub_4017E6的值是0 那么就会输出flag 点进去发现是检查比对a1+16和a1+32是否相同,相同返回0。

再向上可以找到 sub_4015DC 是对v23进行处理的函数 是将FLAG23456912365453475897834567存到了v23+32里面 将输入的v18存到了v23+16里面

还可以看到

sub_4016BA函数 是将v23+16进行一顿操作的函数  这也就是我们解题的重点!

可以根据它的逻辑直接写出反推的脚本:

string = 'FLAG23456912365453475897834567'
flag = ''
for i in string:
flag += chr((((ord(i) - 9) ^ 0x10 )- 20) ^ 0x50) print (flag)

但是 如果去掉(ord(i) - 9) ^ 0x10外面的括号(如下面代码) 我认为是没有任何问题的 但是就是会报错 我也不知道为什么。。还是太菜了自己

#错误代码:
string = 'FLAG23456912365453475897834567'
flag = ''
for i in string:
flag += chr(((ord(i) - 9) ^ 0x10 - 20) ^ 0x50) print (flag)