逆向20180829

题目:https://pan.baidu.com/s/1WcwrIZiUw3DNclN-J3lxPA
提取码:le8q

工具:kali ida

题解:
1、elf文件,拖进kali执行一下,权限不够?chmod 777 re0,
发现关键字wrong
2、丢进ida中,shift+F12,锁定关键字所在函数,F5反编译,由代码得
①输入字符串长度14②经judge函数返回为真
3、
(1)进入judge函数看看,报错了,是positive错误,找到报错的地方,有提示:sp-analysis failed,在报错的上一行,alt+k一下,将sp改为正确的即一致的。F5看看judge怎么能返回真,
有提示,“本地变量分配失败,输出可能出错!”,
(2)看一下代码,不正常,看不出判断与返回,还太短了,可能judge函数下面还有许多字符没有被译成代码,用c解一下。发现有些地方上了锁似的,解不动啊。
4、怎么办,回到主函数那里,依稀记得主函数有对judge函数进行处理(这很重要,要敏感),judge函数被整个的异或了一下。写个python脚本异或回来吧。(注:u后缀表示unsigned long,前面0x表示十六进制,十六进制每两位占一个字节. ^异或符)

base=0x600B00
for i in range (182):
	addr=base+i
	byte=get_bytes(addr,1)
	byte=ord(byte)^0xC
	patch_byte(addr,byte)

5、跑一下,哇呜!解得开了,再次查看judge函数,又报错,“请将光标在一个函数”,哦,他没将judge函数处理成块,那我们“p”一下,
这里写图片描述
之后我的ida 'p’不了啊啊啊,学长的明明可以
解决了,‘u’一下judge函数,在‘c’开,再F5就好了
6、之后F5一下,读一下代码,嗯,写个逆算法跑一下就好;

flag_enc="......."
flag=""
for i in range(len(flag_enc)):
	c=flag_enc[i]
	flag+=chr(ord(c)^i)
print flag

知识点:
1、chmod开权限,alt+k解决positive错误
2、写python脚本,逆异或

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值