ctfhub_WEB基础关(RCE)
WEB基础
七、RCE
1、eval执行
-
页面给的是一段PHP代码,这段代码允许用户通过'cmd'参数执行PHP代码
<?php if (isset($_REQUEST['cmd'])) { eval($_REQUEST["cmd"]); } else { highlight_file(__FILE__); } ?>
-
传入参数执行代码
-
浏览flag中的内容
2、文件包含
-
打开页面,分析代码,将shell.txt传入当前的php文件并执行
页面代码
文件包含
-
shell.txt中,文件参数为ctfhub
-
查看flag中的内容
3、php://input
-
分析页面源码,php://input可以执行输入的php代码
-
查看目录
-
查看flag中的内容
4、读取源代码
用法 | 描述 | 示例 |
---|---|---|
read 操作符 |
用于读取数据流并应用过滤器。 | file_get_contents('php://filter/read=string.toupper/resource=example.txt'); |
write 操作符 |
用于写入数据流并应用过滤器。 | file_put_contents('php://filter/write=string.toupper/resource=output.txt', $data); |
resource 参数 |
指定数据源,通常是文件路径或 php://input 。 |
file_get_contents('php://filter/read=string.toupper/resource=example.txt'); |
convert.base64-encode 过滤器 |
对数据进行 Base64 编码。 | file_get_contents('php://filter/read=convert.base64-encode/resource=example.txt'); |
convert.base64-decode 过滤器 |
对数据进行 Base64 解码。 | file_get_contents('php://filter/read=convert.base64-decode/resource=example.txt'); |
string.toupper 过滤器 |
将字符串转换为大写。 | file_get_contents('php://filter/read=string.toupper/resource=example.txt'); |
string.rot13 过滤器 |
对字符串执行 ROT13 编码。 | file_get_contents('php://filter/read=string.rot13/resource=example.txt'); |
zlib.deflate 过滤器 |
使用 zlib 压缩数据流。 | file_put_contents('php://filter/write=zlib.deflate/resource=output.txt', $data); |
zlib.inflate 过滤器 |
使用 zlib 解压缩数据流。 | file_get_contents('php://filter/read=zlib.inflate/resource=compressed.txt'); |
自定义过滤器 | 创建自定义过滤器以自定义数据处理逻辑。 | 自定义过滤器的创建和使用需根据具体需求而定。 |
-
读取文件源码
5、远程包含
-
现在自己的服务器上写一个一句话木马,当靶场读取主机上的文件时,会在靶场中执行下面代码中的操作,在靶场中创建muma.txt文本,并将一句话木马写入该文本中
-
利用靶机的文件读取读取服务器上的文件
-
访问写入后的muma.txt文本并传入
ls
命令
-
查看flag文本内容
6、命令执行
-
该关卡在pikachu中有,直接开始做
||ls
,查看文件 -
逐个访问试试
7、过滤cat
以下是一些常用的Linux命令和工具:
-
cat:用于查看文件内容的命令。
cat filename.txt
-
less:逐页查看文本文件内容,具有交互性。
less filename.txt
-
more:逐页查看文本文件内容,较简单。
more filename.txt
-
head:显示文件的前几行,默认为前10行。
head filename.txt
-
tail:显示文件的末尾几行,默认为最后10行,通常用于查看日志文件。
tail filename.txt
-
nl:为文本文件的每一行添加行号。
nl filename.txt
-
vim 或 nano:文本编辑器,可以用于查看和编辑文件内容。
vim filename.txt
-
echo:将文本输出到终端的命令,可用于显示特定信息。
echo "Hello, World!"
-
先用
ls
查看目录下的文件||ls
-
利用
less
命令查看flag_这个php文件||less flag_20784129286002.php