码迷,mamicode.com
首页 > 其他好文 > 详细

CSAW 2016:Rock-100

时间:2019-03-29 09:14:25      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:为什么   div   +=   elf   函数   直接   com   脚本   错误   

ELF文件 拖进ida 震惊:

技术图片

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

f5看一下伪代码

技术图片

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

如果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)

 

CSAW 2016:Rock-100

标签:为什么   div   +=   elf   函数   直接   com   脚本   错误   

原文地址:https://www.cnblogs.com/dyhaohaoxuexi/p/10618848.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!