sql注入基础
0x00原理
SQL 注入的攻击行为可以描述为通过用户可控参数中注入SQL 语法
sql注入的产生满足两个条件:
(1)参数可控
(2)参数带入数据库查询
0x01 SQL 注入漏洞的危害
(1)对数据库查询,删除,修改,插入
(2)利用SQL 注入漏洞直接获取Shell或者提权
0x02 mysql注入知识补充
information_schema库
(1)SCHEMATA表,记录所有的库名
(2)TABLES表 记录所有的表名
(3)COLUMNS表 记录所有的字段名
0x03 如何判读注入
字符型
数字型
数字型
注入点数据类型为整型
代码如下
$sql="SELECT * FROM users WHERE id"=.$id;
上传参数为在php代码中为整型
<?php
include("../sql-connections/sql-connect.php");
error_reporting(0);
if(isset($_GET['id']))
{
$id=$_GET['id'];
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
$sql="SELECT * FROM users WHERE id"=.$id;
?>
字符型
注入点数据类型为整型
代码如下
$sql="SELECT * FROM users WHERE id='$id' ";
上传参数为在php代码中为整型
<?php
include("../sql-connections/sql-connect.php");
error_reporting(0);
if(isset($_GET['id']))
{
$id=$_GET['id'];
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
$sql="SELECT * FROM users WHERE id='.$id'";
?>
0x04 sql注入修复
(1)过滤危险字符
(2)使用PDO预编译