题目链接:http://www.shiyanbar.com/ctf/1788
点开题目链接,是一道关于PHP审计的题目:
观察代码,在代码中并没有什么函数,关键就在于:password = $_session['password']。
问题到了这一步,让我们把这放下,先来分析一下PHP中的Session和Cookie。
Cookie与 Session,一般都会认为这是两个独立完全不同的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。在PHP配置中的默认情况下,Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。
说到这里我们再回到题目,这里小编还是先用Burp Suite进行抓包:
从抓包的内容中我们就能看见在Cookie中已经是包含了Sessid,并且发送的password在URL中以Get的方式传值。
那这里我们就可以以这样的思路来求解。首先我们删除所有的Cookie,将PHPSessid值直接删掉,这样的结果就会使得$_session['password']值为空,接下来我们将URL中的password值清空,这样我们就能达到password = $_session['password']的效果。
右键,发送到Repeater,删掉Cookie和password,点击go就能得到我们的结果: