CTF题解五 Web PHP大法(实验吧)
程序员文章站
2022-05-15 10:23:30
...
实验吧题目链接:http://www.shiyanbar.com/ctf/54
首先,根据题目中提示,要注意备份文件。
点开题目链接后,最后有提示index.php.txt
。于是进行访问。
采用的是GET方法,代表着之后可以用?id=XXX
的方式进行测试。
程序的主要逻辑是,GET方法得到的id的值必须被hackerDJ
所包含,却又在进行一次url解密后,与其相等。
这里涉及到PHP中urldecode
这一函数的特性。urldecode
会把字符串中所有带%
的数字进行解密。
尝试输入?id=%68ackerDJ
,按下回车键,发现什么也没发生。看一下浏览器的url,发现浏览器为我们完成了一次url解码,如图:
所以我们需要对hackerDJ
进行两次url加密。
看一个例子:
<?php
$a="%2568ackerDJ";
$a=urldecode($a);
echo $a, "</br>";
$a=urldecode($a);
echo $a;
?>
这里%25
对应的符号是%
。
所以第一次解密后得到%68ackerDJ
,再解密一次得到hackerDJ
。
输入?id=%2568ackerDJ
,就可以得到flag了:
flag: DUTCTF{PHP_is_the_best_program_language}