我正在做一个关于webapp安全和漏洞的学校项目,为此,我制作了我自己的非常简单的网站,包括登录和搜索栏。
现在,我故意使登录保持沉默,而搜索栏则显示SQL注入的输出。因此,为了演示目的,我想对登录进行基于时间的完全盲SQL注入攻击.但我有点卡住了。
在基于时间的情况下,我不知道如何枚举登录查询的表中有多少列:
SELECT * FROM customer WHERE cMAIL='' AND cPWD='';
我不能通过n;#进行排序,因为当出了问题时,我绝对不会得到错误输出。唯一能得到任何指示的方法是睡眠()或基准测试()。
但我不能在SELECT IF()语句中按顺序排序。那么,我如何才能找到有多少列呢?(这使我不可能有工会)。
谢谢!
编辑:值得一提的是,这个站点是非常不安全的(不使用mysqli,只使用mysql)。因为它只是为了演示
发布于 2013-12-16 02:28:04
好吧,我找到了自己问题的答案:
我没有使用ORDER,而是使用SELECT和蛮力来查看存在多少列:
SELECT * FROM customer WHERE cMAIL='' AND cPWD='';
可以通过执行以下操作在黑暗中枚举:
SELECT * FROM customer WHERE cMAIL='' UNION SELECT null,null,null AND SLEEP(5);# AND cPWD=''
您只需继续向select添加更多的空值,直到数据库休眠5秒。然后,您就知道给定表中有多少列。
希望这能帮到别人。
https://stackoverflow.com/questions/20602222
复制相似问题