Vol*_*ile 5 mysql sql-injection
我正在做一个关于webapp安全性和漏洞的学校项目,为此我创建了一个非常简单的网站,带有登录和搜索栏.
现在,我已经故意使登录静默,而搜索栏显示SQL注入的输出.因此,出于演示目的,我想对登录进行基于时间的完全盲目SQL注入攻击...但我有点卡住了.
在基于时间的情况下,我不知道如何枚举表中登录查询的列数:
SELECT * FROM customer WHERE cMAIL='' AND cPWD='';
我不能做ORDER BY n;#,因为当出现问题时我绝对没有错误输出.我能得到任何指示的唯一方法是通过SLEEP()或BENCHMARK().
但我不能将ORDER BY放入SELECT IF()语句中.那么如何找出存在多少列呢?(它使我的工会不可能).
谢谢!
编辑:可能值得一提的是,该网站的目的是非常不安全(不使用mysqli,只是mysql).因为它只是为了演示
好吧,我找到了我自己问题的答案:
我没有使用 ORDER BY,而是使用 SELECT 并强制查看存在多少列:
SELECT * FROM customer WHERE cMAIL='' AND cPWD='';
可以通过执行以下操作在黑暗中枚举:
SELECT * FROM customer WHERE cMAIL='' UNION SELECT null,null,null AND SLEEP(5);# AND cPWD=''
您只需不断向选择添加更多空值,直到数据库休眠 5 秒。然后您就知道给定表中有多少列。
希望这可以帮助别人。