基本漏洞篇
SQL注入就是在网站中注入sql语句,使其可以显示一些有用敏感信息 本章描述的数字型即是注入点为数字,采用GET方式
//sql_num.php <?php $conn = mysql_connect('localhost:3306','root','123456')or die('bad!'); //$conn定义一个名字为conn的变量 //使用账号root密码123456 去连接localhost这个mysql服务 mysql_query("SET NAMES utf-8'"); //执行了SET NAMES utf-8 这条SQL命令 mysql_select_db('sqltest',$conn); //连接数据库后 选择了sqltest数据库 $id=isset($_GET['id']) ? $_GET['id'] : 2; //0.php?id=可控制值 $sql="SELECT * FROM news WHERE id={$id}"; $result = mysql_query($sql,$conn) or die(mysql_error()); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> vivid package </title> </head> <body> <?php $row = mysql_fetch_array($result,MYSQL_ASSOC); echo "SQL语句:SELECT * FROM news WHERE id=<font color='red'>{$id}</font>"; echo "<hr>"; echo "<center><table border='2'><tr><td>标题</td><td>内容</td></tr><tr><td>{$row['title']}</td><td>{$row['content']}</td></tr></table></center>"; mysql_free_result($result); ?> </body> </html>确定存在注入点,一般判断注入点采用以下测试:
and 1=1 and 1=2
or 1=1 or 1=2
xor 1=1 xor 1=2
like 1=1 like 1=2
单引号 ‘ 减号 -
采用order 确定表中属性为3列
确定数据库名为sqltest
得到表名为admin 得到另外表名为news
确定列名为id、username、password