查看完整版本: 个人总结之-脚本入侵技术系列(5)

zhirumuma 2007-7-21 00:12

个人总结之-脚本入侵技术系列(5)

第5课  手工住入的实战应用

前面,我们讲到,什么寻找住入点啊,和工具搜索啊,这其实,我们还是在依赖于工具,大家应该明白工具只是一个程序,现在的网络入侵更多的是要求我们有一个灵活的大脑去思考问题.学会以不变应万变!

一.SQL查询语句的基本讲解

我们先了解下什么是ASCII编码:
  鉴于信息交换的重要及为统一文字符号的编码标准,让不同厂牌机型的计算机皆能使用同一套标准化的信息交换码,于是美国国家标准局特别制定了ASCII码(America Standard Code for Information Interchange,美国信息交换标准码),作为数据传输的标准码。早期使用7 个位来表示英文字母、数字0~9及其它符号,现在则使用8个位,共可表示256个不同的文字与符号,为目前各计算机系统中使用最普遍也最广泛的英文标准码,相对于ASCII code,中文系统使用最广泛的内码则为Big-5码.

好,我们现在开始学习SQL的查询语句:
1.检测表名:  And (Select Count(*) from 要检测的表)>=0 ;如果正常返回,表示存在

2.检测列名: And (Select Count(要检测的列名) from 已经检测到的表)>=0 ;如果正常返回,表示存在

提示:在这里说明下,因为现在ASP用到了很多过滤技术,我们如何去绕过这一环节进行查询很关键!

3.检测列名内容长度:and (select top 1 len(要测试的列名) from Admin)>0

4.检测列名内容:and (select top 1 asc(mid(要测试的列名,N,1)) from Admin)>0

二.手工注入攻击流程:

第一,检测表名 And (Select Count(*) from 要检测的表)>=0 ;admin存在

第二,检测表名里面的列名 And (Select Count(要检测的列名) from 已经检测到的表)>=0
username存在,password存在

第三,检测列名长度 username长度等于5 password等于16位,MD5加密

第四,检测列名内容 username admin       password的MD5散列的第一位ASCII码是 49,依次猜解,通常用的折半法猜解,如果大家有什么更好的经验或方法可以回贴发表下嘛!

第五,进后台了,呵呵! 发挥我们的自由空间吧!

三.绕过程序限制继续注入

  很多人喜欢用’号测试注入漏洞,所以也有很多人用过滤’号的方法来“防止”注入漏洞,这也许能挡住一些入门者的攻击,但对SQL注入比较熟悉的人,还是可以利用相关的函数,达到绕过程序限制的目的。
在“利用系统表注入SQLServer数据库”中,有些语句包含有’号,我们举个例子来看看怎么改造这些语句:
简单的如where xtype=’U’,字符U对应的ASCII码是85,所以可以用where xtype=char(85)代替;如果字符是中文的,比如where name=’用户’,可以用where name=nchar(29992)+nchar(25143)代替。


四.经验小结

1.有些人会过滤Select、Update、Delete这些关键字,但偏偏忘记区分大小写,所以大家可以用selecT这样尝试一下。

2.在猜不到字段名时,不妨看看网站上的登录表单,一般为了方便起见,字段名都与表单的输入框取相同的名字。

3.特别注意:地址栏的+号传入程序后解释为空格,%2B解释为+号,%25解释为%号,具体可以参考URLEncode的相关介绍。

4.用Get方法注入时,IIS会记录你所有的提交字符串,对Post方法做则不记录,所以能用Post的网址尽量不用Get。

5. 猜解Access时只能用Ascii逐字解码法,SQLServer也可以用这种方法,只需要两者之间的区别即可,但是如果能用SQLServer的报错信息把值暴露出来,那效率和准确率会有极大的提高

zhirumuma 2007-7-21 00:14

如果大家有兴趣的话! 我会抽时间把我个人总结的东西陆续拿出来!

我需要你们的支持哦,哈哈

就这样取名 2007-7-27 22:50

学过SQL对注入应该一看就会~我就只看了一遍
页: [1]
查看完整版本: 个人总结之-脚本入侵技术系列(5)