2017 X-NUCA 代码审计

今天的比赛中的一道代码审计的题目。

今天的比赛中的一道代码审计的题目。



发现所有的数据库操作都是 PDO操作,这也就意味着不可能是SQL注入了。查找flag出现的位置


do_changepass.php

这里写图片描述

user.php

这里写图片描述

发现如果是要获取flag 那么必须要更改userinfo数组的值····




step 2 代码回溯


我们发现在上述两个页面userinfo的值就是session的值,所以目标转化为更改session值,找到登录后的操作

这里写图片描述


在这里发现了$_session[userinfo]的赋值操作$userinfo,本来userinfo是数组,我们在这里有个变量覆盖

common.php

这里写图片描述


我们如果传入?userinfo=a那么就是一个字符串这时

$userinfo[“id”]=$userinfo[0]=a


我们看register.php

这里写图片描述

role = 1


所以$_session[userinfo]=’1’ session是字符串1


这时再次访问do_changepass.php即可


这里写图片描述