1
- Less-38 GET-Stacked Query Injection - String
- Less-39 GET - stacked Query lnjection - Intiger based
- Less-40 GET - BLIND based - String - Stacked
- Less-41 GET - BLIND based - Intiger - Stacked
- Less-42 POST - Error based - string - stacked
- Less-43 POST - Error based - String - Stacked with twist
- Less-44 POST - Error based - string - stacked -Blind
- Less-45 POST -Error based - string - stacked - Blind
- Less-46 GET - Error based - Numeric - ORDER BY CLAUSE
- Less-47 GET - Error based - string - ORDER BY CLAUSE
- Less-48 GET - Error based - Blind- Numeric- ORDER BY CLAUSE
- Less-49 GET - Error based - String- Blind - ORDER BY CLAUSE
- Less-50 GET - Error based - ORDER BY CLAUSE -numeric- stacked injection
- Less-51 GET - Error based - ORDER BY CLAUSE-string- stacked lnjection
- Less-52 GET - Blind based - ORDER BY CLAUSE-numeric- Stacked injection
- Less-53 GET - GET - Blind based - ORDER BY CLAUSE -String- stacked injection
Less-38 GET-Stacked Query Injection - String
38关到45关考察的都是堆叠注入,虽然用报错注入和联合注入都能做出来,但是还是都用堆叠注入的方法加深印象。
堆叠注入:
又叫多语句注入,一般情况下只执行一条sql语句,通过函数可以让多条sql语句同时执行,在不同的sql语句中加;
来区别,在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。
首先判断出这题是字符型注入,闭合符为'
,然后尝试用堆叠注入,添加一组数据进去。
此时id=16对应的数据不存在,我们添加一组数据到这个位置。
插入数据语法: insert into 表名 values('数据1','数据2');
构造:
http://127.0.0.1/sqli-labs-master/Less-38/?id=16';insert into users(id,username,password) values('16','admin','password')--+
再查询id=16,看到我们插入的数据。
当然除此之外还可以执行其他很多sql语句,这也说明了堆叠注入危害极大。
Less-39 GET - stacked Query lnjection - Intiger based
和上题基本一样,只是这题是数字型注入,不需要加单引号即可。
Less-40 GET - BLIND based - String - Stacked
闭合方式换成')
,其他不变。
Less-41 GET - BLIND based - Intiger - Stacked
这题不回显错误信息,测试后发现是数字型注入,而且不需要注释符即可注入。
Less-42 POST - Error based - string - stacked
这题换成了一个登陆界面
随便输入账号密码后抓包
这题是基于post请求的堆叠注入,在id=17处构造一组数据,payload:
login_user=admin&login_password=1';insert into users(id,username,password) values('17','adm','paswd')--+&mysubmit=Login
Less-43 POST - Error based - String - Stacked with twist
与42题基本一致,只是这题用的是')
闭合。
Less-44 POST - Error based - string - stacked -Blind
这个题没有报错信息,一般采用盲注,不过经过测试发现可以和42题一样直接构造相同的payload,并且成功注入。
Less-45 POST -Error based - string - stacked - Blind
堆叠注入的最后一题,这题也是没有报错信息,但是经过测试发现和43题一样的步骤即可成功注入。
Less-46 GET - Error based - Numeric - ORDER BY CLAUSE
这题开始又是新的知识点了,order by 注入。
给了一句提示:Please input parameter as SORT with numeric value(请输入带有数字值的SORT参数)
也就是说要构造?sort=
传入?sort=1
,得到
有一个知识点就是,order by 查询时,默认是以指定参数(这里是id的值)从低到高排序的,如果想要从高到低排序,需要在语句结尾加一个DESC
表示“倒序”。
构造?sort=1 DESC
或?sort=1 desc
(大小写不影响)
发现此时倒序了,说明存在order by注入点,并且是数字型。
可以采用报错注入或延时注入,如报错注入爆数据库:
http://127.0.0.1/sqli-labs-master/Less-46/?sort=1 and updatexml(1,concat('~',database()),1) --+
下面的步骤可以参考我前面的博客。
Less-47 GET - Error based - string - ORDER BY CLAUSE
这题是字符型注入,闭合方式为'
,其他和46一样。
Less-48 GET - Error based - Blind- Numeric- ORDER BY CLAUSE
这题是数字型注入,并且没有报错回显,考虑时间盲注:
如,猜数据库名长度:http://127.0.0.1/sqli-labs-master/Less-48/?sort=1 and if(length(database())=7,1,sleep(5))--+
猜的数字正确时耗时少,如果错误会执行sleep(5),消耗更长时间。
下面步骤以此类推,建议写脚本。
Less-49 GET - Error based - String- Blind - ORDER BY CLAUSE
这题是闭合方式为'
的字符型注入,其他和48题一样。
Less-50 GET - Error based - ORDER BY CLAUSE -numeric- stacked injection
这题开始是order by stacked injection(排序叠层注入),而且是数字型的。
如构造:http://127.0.0.1/sqli-labs-master/Less-50/?sort=1;insert into users(id,username,password) values(80,'biaodi','giao')--+
成功插入数据
Less-51 GET - Error based - ORDER BY CLAUSE-string- stacked lnjection
和50相比,这题是字符型注入,用'
闭合,并且没有报错信息,但是不妨碍直接堆叠注入。
构造:http://127.0.0.1/sqli-labs-master/Less-51/?sort=1';insert into users(id,username,password) values(99,'giao','abc')--+
插入数据成功:
Less-52 GET - Blind based - ORDER BY CLAUSE-numeric- Stacked injection
不显示报错信息,数字型,但是不影响堆叠注入,和50题一样构造即可。
Less-53 GET - GET - Blind based - ORDER BY CLAUSE -String- stacked injection
不显示报错信息,'
闭合的字符型,但是不影响堆叠注入,和51题一样构造即可。