PHP大法
笔记
字符串比对解析,与大小写无关。
eregi()函数
语法: eregi(string pattern, string string, array [regs]);
返回值: 整数/数组
特点:PHP函数eregi()与大小写无关,类似函数ereg() 则区分大小写
例:if (eregi(“C”,“abcdef”) //true
URl双编码: 将经过url编码产生的’%‘再次编码,及把’%‘替换为’%25’
拿到题目发现
于是访问目标文件
http://ctf5.shiyanbar.com/DUTCTF/index.php.txt
<?php
if(eregi("hackerDJ",$_GET[id])) {
echo("<p>not allowed!</p>");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
echo "<p>Access granted!</p>";
echo "<p>flag: *****************} </p>";
}
?>
<br><br>
Can you authenticate to this website?
首先eregi()函数进行一次比较判断,如果想打印flag,id不能等于"hackerDJ" ,并且经过url解码后id等于"hackerDJ"
下面是关于:urldecode的信息:
就是需要构造get链接就可以得到答案:利用了两次urldecode,第一次是在浏览器中提交时浏览器会为我们进行一次解码,第二次是函数的解码,所以我利用了里面的其中一个字母J编码第一次编码是%4A,第二次编码是%254A
这个部分可以不止使用J一个字母,可以使用其他的所有字母hackerDJ,只要将他们进行二次编码就好了
就是需要构造:?id=hackerD%254A
最后就可以拿到flag