webhacking.kr challenge 8

Posted by rk700 on December 22, 2014

接连的几道题都是代码审计的。这道题里,对User-Agent有两个取法,一种是getenv,另一种是$_SERVER,而对两个的不一致的过滤就造成了问题。

具体地,getenv得到的里面不限制单引号、括号和注释符号#,而且会在后面的插入语句里出现。如果我们这里取User-Agent: agent','ip', 'admin')#,那么就会插入一条id为admin的记录。

接下来,我们再请求一次,这次是User-Agent: agent,那么就会取出刚才插入的那条记录,满足id为admin的条件。