SQLMAP Part 1

in #cn6 years ago

SQLMAP Part 1

放上大佬写的一个流程图

em .... 这篇文章 只写自己注入的一个方式 error-based injection

error-based也有叫做DOUBLE QUERY INJECTION,即双查询注入

Error-based tests - WHERE or HAVING clause

payload 如下:

AND (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT('[DELIMITER_START]',(SELECT (ELT([RANDNUM]=[RANDNUM],1))),'[DELIMITER_STOP]','x'))s), 8446744073709551610, 8446744073709551610)))

其中

SELECT (ELT([RANDNUM]=[RANDNUM],1))

会返回NULL 如下:

SELECT CONCAT('[DELIMITER_START]',(SELECT (ELT([RANDNUM]=[RANDNUM],1))),'[DELIMITER_STOP]','x')

ELT() 函数使用方法如下: 这张图 能很好地解释了

CONCAT() 函数 如下:

mysql> SELECT CONCAT(’My’, ‘S’, ‘QL’);

-> ‘MySQL’

if() 函数用法如下:

if(expr1,expr2,expr3) 
如果 expr1 是TRUE ,则if()的返回值为expr2; 否则返回值则为 expr3。
if() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

至于为什么会报错 你只要在mysql中 执行如下命令 就可以就明白了:

select 3 * 8446744073709551610;

mysql> select 3 * 8446744073709551610;
ERROR 1690 (22003): BIGINT value is out of range in '(3 * 8446744073709551610)'
mysql>
Sort:  

我们都是脚本小子

Hi ~ I'm a robot of lynnhua.I just upvoted your post!
Please come visit me here: https://steemit.com/@lynnhua
Thanks so much~!!

thanks