1. 判断是否可以注入 id=145 and 1=1正常显示 id=145 and 1=2 我这里可以注入的是正常显示,网上说提示错误 id=145′后面加入‘这样提示错误(有的甚至连表名都提示了)
2. 猜管理员表名
比如原来是***.php?id=49在后面加入 And (Select Count(*) from Admin)>=0 ,如果页面和id=49一样那么,表名就可以确定了——————就是admin了。
3. 猜猜用户表中字段 将刚才的*换成你猜的字段,如果页面也和id=49的一样,恭喜你,字段名字出来了 常用字段名:(user,users,member,members,userlist,memberlist,userinfo,admin,manager,yonghu )
4. 然后判断管理表中有几个字段 输入:id=145 and 1=2 union select 1,1,1 from admin其中admin就是你刚才猜出来的管理表
5. 如果才出来字段会在页面上本来显示的地方显示成了数字,然后将数字替换成你才出来的字段名字,这样密码以及用户名都显示在页面上了。一般后台账户都是md5加密的,找个md5解密工具试试
下面介绍怎么过滤
[php]
function NO_SQL($str) { <span style="color: #ff0000;">$arr=array(‘select’,’update’,’delete’,’union’,’where’,’admin’,’insert’,’count’);</span>
//数组内的字符串是过滤掉的非法字符,如果传递有这样的非法字符,则提示非法操作,关闭窗口 foreach($arr as $pattern) {
if(preg_match("/$pattern/", $str)) { echo "<script language=\"javascript\">alert(\"非法操作!\");self.close();</script>"; exit(); break; } }
return $str; }[/php]
其他要注意编程规范
比如:字段名和表名要加上“ ` “”(这个就是tab上面那个键)、正确使用post和get、提高数据库名字命名、关闭错误提示、封装sql