我的是php写的,服务器是justhost上申请的。
今天查看后台发现admin有被别人在凌晨用的痕迹,但那个时间我没上网,而且那个进入我admin的人IP是在中东,我后台有自动记录ip。
后来查看justhost日志和最近访客,发现这个IP访问了很多类似这种的页面:/au/shop.php?dest_id=3&shop_id=999999.9+union+all+select+%28select+concat%280x7e%2C0x27%2CCART.username%2C0x27%2C0x7e%29+from+%60whimwin1_DB%60.CART+Order+by+ip_address+limit+40%2C1%29+--正常人访问的页面应该是/au/shop.php?dest_id=3 之类的,这么长的访问地址是不是恶意试探的?而且在1分钟之内访问了很多类似的地址,是不是用黑客软件在自动探测????但是我又感觉不像,这地址里面包括了我数据库名字和一些表,这些是怎么出来的???愁死我了
今天查看后台发现admin有被别人在凌晨用的痕迹,但那个时间我没上网,而且那个进入我admin的人IP是在中东,我后台有自动记录ip。
后来查看justhost日志和最近访客,发现这个IP访问了很多类似这种的页面:/au/shop.php?dest_id=3&shop_id=999999.9+union+all+select+%28select+concat%280x7e%2C0x27%2CCART.username%2C0x27%2C0x7e%29+from+%60whimwin1_DB%60.CART+Order+by+ip_address+limit+40%2C1%29+--正常人访问的页面应该是/au/shop.php?dest_id=3 之类的,这么长的访问地址是不是恶意试探的?而且在1分钟之内访问了很多类似的地址,是不是用黑客软件在自动探测????但是我又感觉不像,这地址里面包括了我数据库名字和一些表,这些是怎么出来的???愁死我了
互联网上闲得蛋痛的人太多了
而且查看日志 这个人明显是登录了我的后台。所以我就很奇怪,他怎么知道我admin账号的 而且怎么知道我数据库名字和表的名字 我很费解!
所有外部提交的数据,我们都先假设他是不安全的
例如$_POST $_GET
那么根据实际的最后结果我们做一些过滤比如 id 他肯定是个数字 那么用 $id=intval($_GET['id']);
就能省掉很多事当然 你可以参考http://www.phphtm.com/2011/1022/3NMDAwMDAwNjk3Ng.html
http://blog.163.com/yes___ican/blog/static/1850624492012029105531388/互联网上已经有很多这种介绍了,解决方法也很多。看看吧,不懂再来问1.检测提交数据的长度
2.检测提交数据的类型
3.过滤提交内容包含的非法符号/单词
他用注入的方法绕过了你的验证 你的php代码没写好,这个是典型的。不过只要密码不是明文,将漏洞堵上就不怕咯.
这个是id吧?取值时用 (int)$_GET['shop_id']; 。或用addslashes($_GET['shop_id']),给单引加转义,
SQL查询时就 shop_id = '$shop_id' 单引查询值。或把你网站贴上来给给你找洞洞 或...
2, 没有对用户数据addslashes就执行了sql查询必须悲剧, 随便丢两个垃圾请求让mysql报报错就知道你的sql语句了,表结构就知道了, 直接开始注入了.
所以,首先addslshes你的各个字段,另外一定用''包裹, 这样就OK了.
就是,给我们也去注入注入练练SQL呗。