re学习笔记(66)第五空间智能安全大赛-re-nop

打开老多花指令
挨个把这样的替换掉就好了
点击push的地址,ctrl+c复制。点击jmp ebp使用插件ctrl+alt+k修改,修改为jmp <复制的地址>
在这里插入图片描述

搜了一下字符串找到输出正确与否的代码,发现没有跳到Right的代码,,Right上面的那个jmp跳过了他,,,
在这里插入图片描述
刚开始以为是要修改main函数最底部栈顶的数值,让他等于Right的地址,然后pop ebx赋值给ebx,最后jmp ebx跳转到Right

调试了半天这里什么都没有!
整个main函数就是对表面上的,对输入的数Num+3-0x33333334
在这里插入图片描述
调试了好久才确信main函数没东西,,,
然后看提示错误的函数
在这里插入图片描述
唯一可以的就是8048691函数了,对result进行一个赋值操作,,,让他等于144
刚开始外层没有显示参数是Num,所以就没重点关注这里,,
在这里插入图片描述
也就是将Num解释成地址,将其的一个字节写入144,转换为十六进制正好是0x90也就是nop,,
所以这两个函数就是将Num的地址的两个字节改成nop。改完之后如果能出来Right的话
在这里插入图片描述

也就是将08048765地址的两个字节nop掉,jmp就不生效了,就可以运行Right了
在这里插入图片描述
也就是Num变换后的值应该等于0x08048765
输入的Flag+3-0x33333334 == 0x08048765
得到输入为993507990
在这里插入图片描述
可以看到得到Right(无法运行的直接nop掉main里的四个函数,eax=1时执行int 80h直接exit了,
在这里插入图片描述
flag为flag{993507990}

想着从1开始爆破来着,不知道为啥不能分配内存了,(这么大的数也爆破不出来,,
在这里插入图片描述

from pwn import *
i = 0
while True:
	r = process('./nop0')
	r.sendline(str(i))
	fu = r.recvline()
	if 'Right' in fu:
		print(i)
		break
	i += 1
	r.close()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forgo7ten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值