首先来说下入侵什么样的网站,什么类型的网站我们有机会入侵。
一般来说,动态网站都是可以入侵的,为什么这样说呢? 要想知道为为什么,则先要了解下这类网站的运行机制。什么是动态网站?动态网站,顾名思义是内容会“动”的网站,常见的如asp,php,jsp,cgi,等这类的网站,都是将信息动态的展示给大家的,将信息从数据库中读取出来,按照网站的程序进行动态的编写和更新。
而正因为如此,都是要进行编译的。所以这就给我们留下了可趁之机。试想我们将木马代码插入网页中,在编译的时候就会运行我们的木马程序,这样就可以通过我们的木马程序进行更大程度的破坏和窃取入侵。
好了 下面我们来谈谈怎么入侵,都是什么样的方法(由于我的技术有限,也只是我所知道的技术而已)。
1.注入。
注入又叫注射,说白了就是利用SQL语句对数据库的动作。之所以会常实用注入,是因为数据库中大多都会储存管理员的账户密码,或更高的sql或者mysql的数据的密码。
注入者将注入信息插入到表单或者url信息中,只要有对数据查询的都有可能的被注入。
如:url:xxxxx.asp?user=user。 页面中或获取到id的值,然后进行按照特定的条件进行查询。基本上会出现这样的语句:SELECT * FROM XXX WHERE user = request("user")
这样就暴露出来一个漏洞, 假如我们 将原有的url变更成为 url:xxxxx.asp?user=user ' and 1=1 如果这样没有返回错误,则代表当前页面没有进行特殊字符的过滤。接着我们进行下一步,url:xxxxx.asp?user=user‘ and 1=2 如果返回错误,则就可以代表我们可以对现在的网站进行注入攻击了,至于为什么这样,分析下函数就会出现这样的语句.
SELECT * FROM XXX WHERE user = user and 1 = 1
SELECT * FROM XXX WHERE user = user and 1 = 2
如果对传入的值进行处理了则不会返回任何的错误,如果没有处理的话 这两句话都是被执行的,显然 第二个是不可能会有信息产生的,这也就是我们为什么可以确定有漏洞的原因了。好了,接着进行的第三步,
url:xxxxx.asp?user=user and len(pwd)=6
返回是否成功,如果成功则证明密码是六位的密码,想下是六位的密码一般不是md5的加密,md5的密码一般都是固定的18或者32位
下一步就是开始查询密码的第一位了,
url:xxxxx.asp?user=user and (select top 1 asc(mid(pwd,1,1)) from userdb)>0 如果可以正常返回则代表我们的数据查询应该是对的,也就说 密码是的第一位就是 查出来的ascii码,解析下就出现明文了。注意在查询的时候 空格是 %20.在浏览器是自动解析的。
这就是简单的注入查询,攻击者可以灵活的利用sql语法进行任何想做的操作,比如 向服务器添加一个用户,往网站中添加一个管理员,等等操作。
但是并不是所有的入侵者都可以很顺利的进入,这需要技术,也需要运气的。如果查询出来的是md5的密码就有点麻烦了。呵呵。
至于防护:做好传入值的所有的检测,如过滤特殊字符,限制sql的查询等等方法。一般都是用过滤特殊字符。
2.旁注
未完 待续