实验吧Web-PHP大法

mac2022-06-30  128

笔记 字符串比对解析,与大小写无关。 eregi()函数 语法: eregi(string pattern, string string, array [regs]); 返回值: 整数/数组 特点:PHP函数eregi()与大小写无关,类似函数ereg() 则区分大小写 例:if (eregi("C","abcdef")   //true URl双编码: 将经过url编码产生的'%'再次编码,及把'%'替换为'%'

 

链接:  http://www.shiyanbar.com/ctf/54

    

页面情况

    

获得提示: 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"但这里需要注意的是:在浏览器中提交时浏览器会为我们进行一次解码 可以在本地执行下面的代码: <?php $id = 'hackerDJ'; if(eregi("hackerDJ",$id)) { echo("<p>not allowed!</p>"); exit(); } $id = urldecode($id); if($id == "hackerDJ") { echo "<p>Access granted!</p>"; echo "<p>flag: *****************} </p>"; } ?> 可以看到成功打印,说明浏览器的确为我们转换了一次 因此我们需要进行两次编码: h --> h --> %68构造url: index.php?id=%68ackerDJ提交即可获得flag:   flag: DUTCTF{PHP_is_the_best_program_language}

 

转载于:https://www.cnblogs.com/ssooking/p/5901440.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)