[WUSTCTF2020]朴实无华
[WUSTCTF2020]朴实无华
打开题目,里面只有一句话和一个Warnings

发现里面有个index.php的文件,打开看看有没有什么东西

打开后发现里面什么都没有,只能退后去再看看有没有其他可发现的
在经过很久的查看后在标题里发现里面有个bot,一下联想到robots协议

一:使用robots协议查看

发现里面有个php文件,我们打开这个php文件看一下

打开后显示flag不在这里,但是我们检查一下网页,在网络里发现了新的的php文件

打开fl4g.php,发现了php代码

这里我们可以看到这里有两层绕过,最后要执行system命令得到flag,这里我们先看第一层绕过
二:第一层绕过
要使用GET提交提交一个变量num的参数值,对num值取intval的值要小于2020并且intval($num+1)要大于2021
intval
intval() 函数用于获取变量的整数值。
intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。
<?php
echo intval(42); // 42
echo intval(4.2); // 4
echo intval('42'); // 42
echo intval('+42'); // 42
echo intval('-42'); // -42
echo intval(042); // 34
echo intval('042'); // 42
echo intval(1e10); // 1410065408
echo intval('1e10'); // 1
echo intval(0x1A); // 26
echo intval(42000000); // 42000000
echo intval(420000000000000000000); // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8); // 42
echo intval('42', 8); // 34
echo intval(array()); // 0
echo intval(array('foo', 'bar')); // 1
?>
绕过方法
如果intval函数参数填入科学计数法的字符串,会以e前面的数字作为返回值而对于科学计数法+数字则会返回字符串类型
填入2e4则可以要过intval
?num=2e4

三:第二层绕过
这里一眼可以看到md5,可以知道这道题是MD5绕过
MD5弱类型
因为php具有弱类型,== 在进行比较的时候,会先将字符串类型转化成相同,再比较
百度就可以得到0e215962017
?num=2e4&md5=0e215962017

四:system命令
这里还是使用GET提交方法提交一个名为get_flag的参数,提交的参数不能包含空格
这里我们要利用system命令输入命令从而得到目录里的flag
我们先查看一下目录里的文件,这里使用命令 ls
?num=2e4&md5=0e215962017&get_flag=ls

得到目录里的文件,flag应该就在这个文件里面,接下来打开这个文件
使用 cat命令
五:cat绕过
假如输入的参数值里有cat,后面会使用str_ireplace函数将cat替换为wctf2020,所以这里我们不能直接输入cat命令查看文件
绕过:
将cat修改为ca\t
六:空格绕过
发现文件目录里存在许多的空格,因此我们要绕过空格,
绕过:将空格改为%09既可
payload:
fl4g.php?num=2e4&md5=0e215962017&get_flag=ca\t%09404.html%09fAke_f1agggg.php%09fl4g.php%09fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag%09img.jpg%09index.php%09robots.txt


浙公网安备 33010602011771号