zoukankan      html  css  js  c++  java
  • DVWA SQL Injection Medium

    Mdeium

    基本的步骤及知识点在上节已经提到过这里不再赘述:https://blog.csdn.net/WQ_BCJ/article/details/84554777

    1)与low级别不同,本次采用的是下拉按钮的方式,限制了用户的输入,通过url可以发现并没有?id=.....类似的参数所以不是get方法,那么我们可以通过火狐的hackbar提交post数据试一试:

    2)通过以上页面可以发现我们查询id=3的信息成功,说明这里存在注入点,当我们输入1 and 1=1 时页面返回正常查询结果,         说明存在数字型注入

    3)通过源码审计可以发现,$id = mysql_real_escape_string($id );转义 SQL 语句字符串中的特殊字符

         但是由于是数字型注入,这个函数就没有任何意义了

     

    4)跟着套路走,我们获取了列数,数据库名,用户名等

        

    5)过滤了' 那么我们就直接用函数查询,构造playload为

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

    找到了users表

    6)参照Low级别的步骤得到admin密码

    总结一下注入类型的判断:

    1.整型注入

    测试步骤:

    (1) 加单引号,URL:www.text.com/text.php?id=3’

    对应的sql:select * from table where id=3’ 这时sql语句出错,程序无法正常从数据库中查询出数据,就会抛出异常;

    (2) 加and 1=1 ,URL:www.text.com/text.php?id=3 and 1=1

    对应的sql:select * from table where id=3’ and 1=1 语句执行正常,与原始页面如任何差异;

    (3) 加and 1=2,URL:www.text.com/text.php?id=3 and 1=2

    对应的sql:select * from table where id=3 and 1=2 语句可以正常执行,但是无法查询出结果,所以返回数据与原始网页存在差异

    如果满足以上三点,则可以判断该URL存在数字型注入。
     

    2、字符型注入
    当输入的参数为字符串时,称为字符型。字符型和数字型最大的一个区别在于,数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的。

    例如数字型语句:select * from table where id =3

    则字符型如下:select * from table where name=’admin’

    因此,在构造payload时通过闭合单引号可以成功执行语句:

    测试步骤:

    (1) 加单引号:select * from table where name=’admin’’

    由于加单引号后变成三个单引号,则无法执行,程序会报错;

    (2) 加 ’and 1=1 此时sql 语句为:select * from table where name=’admin’ and 1=1’ ,也无法进行注入,还需要通过注释符号将其绕过;
     

  • 相关阅读:
    汉语-谚语:条条大路通罗马
    汉语-词语:缱绻
    几何-对称图形:中心对称图形
    java解析获取Excel中的数据--同时兼容2003及2007
    如何使gcc输出搜索到的头文件路径?
    如何使tmux可以像vi一样操作(如快速跳转到某一行)?
    如何使tmux能够使用鼠标上下滚动?
    ID3v2: 为aac格式的音频文件添加ID3v2 Header
    FFmpeg: 利用FFmpeg提取音频文件中的metadata
    C语言:变长结构体
  • 原文地址:https://www.cnblogs.com/qingwuyou/p/10687470.html
Copyright © 2011-2022 走看看