题目
|
|
Solution
一个简单的投票功能。初步测试后没有回显,没有报错。在CTF中,越是简单越是没有提示的,往往都有源码泄露之类的。
源码泄露/恢复
访问:
下载下来,win下下下来后文件名变成了index.php.swp。用vim恢复文件。命令如下:
直接在vim中看可能不太方便,可以用下面的命令将其另存为:
得到恢复后的源码:
二次注入
注入点在这里:
post进的参数id,经过php的函数is_numeric()检测后,insert到数据库中;
在完成投票后,根据id值将title取出来:
当我们传入经过十六进制转换的payload后,通过is_numeric()的检查,然后被插入到数据库中。而mysql将数据取出来时候会自动unhex一下,从而造成sql注入。
根据泄露出来的源码,我们推测表为 t_flag,字段为flag。我们要注入后的语句为:
这样因为不存在id为-2,从而能显示出flag。即payload为:
flag: