但上述SQL语句有个问题,因为原信息有一部分
怎么办呢?
其实这里之所以不能执行,就是因为有一个换行符\n,但因为前面存在一个 substr($post['content'], 30)
,所以我们只需要将长度设置的大于30,就能让换行符被切掉。
所以,我最后得到的payload如下: ,0,0,0,0,0,0,user(),3)##########
,再将UA最后一位设置为 \
,如下图:
就能成功在reply的位置注入信息出来啦:
不过大家也看到了,这个注入有个30字符的限制,所以要注意一下几点:
最后感叹一下吧,这个漏洞其实有意思的一点在于,他和很多CTF里出现的题目一样,但又是那么巧合——巧合的是,content前面的部分进行了addslashes,最后的部分没有addslashes,却有htmlspecialchars。
也就说,后面的部分没有单引号,却有反斜线;前面的部分没有反斜线,却有多出来的一个单引号。二者相结合,构成了一个SQL注入漏洞。
最后,请使用者尽快升级20170109版本吧,以修复这个漏洞。另外,经过我神器的检查,这个漏洞在v6.0版本就存在了,大概时间是2015年9月开始。
==== 分割线 ====
这个链接最下方,有【代码审计】小密圈的加入方式:
来源: