首页 > 代码库 > 实验吧Web-PHP大法
实验吧Web-PHP大法
链接: http://www.shiyanbar.com/ctf/54
页面情况
获得提示: index.php.txt<?phpif(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 = ‘%68ackerDJ‘;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 --> %68 --> %2568
构造url: index.php?id=%2568ackerDJ
提交即可获得flag: flag: DUTCTF{PHP_is_the_best_program_language}
笔记:字符串比对解析,与大小写无关。eregi()函数语法: eregi(string pattern, string string, array [regs]);返回值: 整数/数组特点:PHP函数eregi()与大小写无关,类似函数ereg() 则区分大小写例:if (eregi("C","abcdef") //trueURl双编码: 将经过url编码产生的‘%‘再次编码,及把‘%‘替换为‘%25‘
实验吧Web-PHP大法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。