web30
这道题目的考点是file_get_contents()函数绕过
绕过方法:
使用php://input伪协议绕过
1、将要GET的参数?xxx=php://input
用post方法传入想要file_get_contents()函数返回的值
2、用data://伪协议绕过
将url改为:?xxx=data://text/plain;base64,想要file_get_contents()函数返回的值的base64编码
或者将url改为:?xxx=data:text/plain,(url编码的内容)
原文链接:https://blog.csdn.net/silence1_/article/details/90241302
本题适用的方法是第一种,因为还有个参数ac需要传递,接下来看代码
<?php
extract($_GET); // 将get穿传入的参数以数组的方式传入(可能不太准确)
if (!empty($ac)) // 如果变量ac不为空
{
$f = trim(file_get_contents($fn)); // 变量f等于变量fn这个文件读取的结果
if ($ac === $f) // 如果变量 ac 等于 变量 f
{
echo "<p>This is flag:" ." $flag</p>"; // 回显flag
}
else
{
echo "<p>sorry!</p>"; // 如果不符合上述条件,回显sorry
}
}
?>
所以使用bp改包,构建payload
得到flag
注:萌新第一次写write up,不足之处还请见谅,不对之处欢迎批评指正