sql注入之联合查询

本次注入采用DVWA作为靶场,数据库采取mysql

首先我们设置一下dvwa的安全等级
dvwa1.png
修改等级后点击submit按钮,之后我们进入sql注入的实战靶场
dvwa2.png
联合查询注入,我们需要用到 union 来连接两条sql语句
.判断注入类型
他给了我们一个form表单,让我们提交一个user ID进去,这个注入点很明确,肯定是我们输入进去的id了,id一般都是int 类型的,但也有可能是字符串类型的
那数据库的查询语句可能是

select * from 表 where id = $user_id

也可能是

select * from 表 where id = '$user_id'

那这个id到底是字符串类型的还是数字类型呢
我们可以输入 1 和 1’ 分别测试一下
首先,我们在表单中输入一个数字1来测试
dvwa3.png
正常显示,然后我们在输入1’试一下
dvwa4.png
我们发现当我们输入1’时,数据库报错了,他说在’1’‘附近出现语法错误,(’ ‘1’’ '最外层的单引号是mysql报错后为了标记错误的位置自动加入的,我们不需要看),那这就说明是出现了单引号闭合的错误,所以本次注入应该是字符串类型的!
.确认字段数
确认注入类型后,我们需要确认表中的字段数,为联合查询做准备
我们可以使用 **order by ** 来判断字段数,order by 在mysql中是对表以某个字段进行排序用的,例如查询student表中的男性学生的姓名,按照id进行升序排列 select username from student where sex=‘male’ order by id;
那我们不知道字段名该怎么使用呢?我们可以order by 后面加一个数字,这个数字代表着第几个字段,一直改变这个数字,直到报错,报错就说明这个字段不存在
在表单中输入 1’ order by 3 – (注意-- 的后面要加一个空格,表示注释)页面报错,说明这个表只有两个字段
.判断回显点

a' union select 1,2 -- 

dvwa5.png
两个字段都可作为回显点使用
.获取数据库信息
常用函数:

version()  显示mysql版本
user()    数据库用户名
database()    数据库名
@@datadir    数据库路径
@@version_compile_os     操作系统版本

(1).确认库名

a' union select 1,database() -- 

dvwa7.png
可以看到当前库名为 dvwa
(2)找到库中所有表
group_concat() 此函数是将查询到的结果从列展示转换为单行显示,每个结果之间用逗号隔开
information_schema.tables 是从information_schema 库中的tables表中查询

a' union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa' --  

dvwa8.png
(3)查询每个表中的每个字段

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

dvwa9.png

a' union select 1,group_concat(column_name) from information_schema.columns where table_name='guestbook' and table_schema='dvwa' -- 

dvwwa10.png
这样就可以拿我们需要的数据了,本次注入教程到此结束!!!(注:对任何未经授权的网站进行攻击均为违法行为,请谨慎行事)

更多内容请关注笔墨稠思

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笔墨稠思

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值