zoukankan      html  css  js  c++  java
  • SQL手动注入解析

    注入环境:DVWA

    探测步骤:

    1、首先探测是否可以注入以及注入方式


    原SQL语句为

    SELECT * FROM xxx WHERE a='';
    

    注入后为

    SELECT * FROM xxx WHERE a='' or '1'='1' --;
    

    这样注入有常见情况有两种用途
    第一种用途是用于登录,可以用作万能密码直接进入后台
    第二种用途是用于查询,若查询出所有内容则代表可以进行注入
    此处展示的是第二种用途

    2、探测列数

    由于接下来要采用union探测内容,而union的规则是必须要列数相同才能正常展示,因此必须要探测列数,保证构造的注入查询结果与元查询结果列数与数据类型相同

    探测采用order by

    SELECT * FROM xxx WHERE a='' ORDER BY 1;
    

    order by 1代表按第一列升序排序,若数字代表的列不存在,则会报错,由此可以探测出有多少列

    3、探测展示位置

    SELECT * FROM xxx WHERE a='' UNION SELECT 1,2 ;
    


    并不是所有的查询结果都会展示在页面中,因此需要探测页面中展示的查询结果是哪一列的结果。上述SQL语句在本示例中展示了1,2,代表1,2列被展示在了页面中。因此可以利用1,2列进行注入查询。

    4、探测数据库名、表名、列名

    SELECT * FROM xxx WHERE a='' UNION SELECT 1,schema_name from information_schema.schemata;
    

    上述SQL语句是查询数据库名的SQL语句,查询表名和列名的语句很类似,翻阅文档即可。

    在探测数据库名、表名、列名的时候需要一些经验,经验不会影响最后的结果,但是经验会影响注入时间。名字如Admin,User的一般有可能是与用户有关的数据库,可以特别关注。

    5、探测用户信息

    最后一步,探测用户信息。其实有了以前的铺垫,探测用户信息是一个很简单的事情。

    SELECT * FROM xxx WHERE a='' UNION SELECT User,Password FROM users ;
    

    通过这一条数据便可以探测出所有用户的信息

    部分数据使用了MD5加密,可以复制到MD5解密网站进行解密

    6、更高级的SQL注入

    对于有防护措施的程序,需要采用更高级的SQL注入手段进行诸如,比如替换SQL关键字大小写等手段。对于十分优秀的程序,SQL注入的意义就不大了,需要采用更高级的手段进行渗透测试。

  • 相关阅读:
    Reactive Extensions (Rx) 入门(5) —— Rx的事件编程
    Reactive Extensions (Rx) 入门(4) —— Rx的事件编程
    Reactive Extensions (Rx) 入门(3) —— Rx的事件编程
    Reactive Extensions (Rx) 入门(2) —— 安装 Reactive Extensions
    Reactive Extensions (Rx) 入门(1) —— Reactive Extensions 概要
    Xamarin NuGet 缓存包导致 already added : Landroid/support/annotation/AnimRes 问题解决方案
    Android 系统Action大全
    Xamarin Forms 实现发送通知点击跳转
    如何理解灰度发布
    推荐一款分布式微服务框架 Surging
  • 原文地址:https://www.cnblogs.com/zhenlingcn/p/7099885.html
Copyright © 2011-2022 走看看