安全面试之MYSQL注入
前言
作者简介:不知名白帽,网络安全学习者。
博客主页:https://blog.csdn.net/m0_63127854?type=blog
安全面试专栏:https://blog.csdn.net/m0_63127854/category_11869916.html
网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan
Mysql注入:
1、sql注入漏洞原理
开发者没有在网页传参点做好过滤,导致恶意sql语句拼接到数据库进行执行
2、sql注入分类:联合注入、布尔盲注、时间盲注、堆叠注入、宽字节注入、报错注入
3、联合注入的步骤
找传参点-->判断闭合符-->判断列数-->判断显示位-->查询database()-->查表-->数据
4、盲注分类
布尔盲注(页面回显长度:burp里的Content-Length)、时间盲注(页面回显时间:burp包的右下角)、Dnslog
5、盲注函数
if()、sleep()、substr()、left()、limit、ascii()、length()
5、报错注入原理:
6、报错注入函数,例如:floor() group by、exp()、updatexml()、extractvalue()
7、Dnslog注入原理
7.1、利用load_file()函数读取共享文件
7.2、共享文件形式:\\hex(user()).dnslog.cn/或者\\host\
7.3、利用myslq的load_file()函数解析拼接过的dnslog域名,进而带出数据
8、判断闭合符方式:
构造真和假:id=1 and 1=1、id=1' and 1=2、=1" or 1=1、') or 1=2、and 234=234、and 1、or 1、and 1^1、&&1、||0
9、堆叠注入原理
在mysql中,分号代表一个查询语句的结束,所以我们可以用分号在一行里拼接多个查询语句
10、宽字节注入原理
10.1、数据库使用gbk编码
10.2、使用反斜杠进行转义
11、sql注入绕waf
11.1、代替空格:/**/、/*!*/、+、%09、%0a、%00、括号
11.2、关键字:16进制、char()、字符串拼接
11.3、等价函数替换:sleep()==benchmark()、if()==case when then else end、ascii()==ord()、substr()==substring()
11.4、内联注释:/*! */
12、sqlmap常用参数
-r:用于post型注入,指定txt文件的post数据包
--os-shell:用户获取shell
--os-cmd:执行系统命令
--force-ssl:sqlmap跑https站,此参数主要用来伪造一个ssl证书,或者在host地址后面加一个443端口
--tamper:指定绕过用的脚本文件
-u:指定url,通常用于get型注入
-p:指定注入点,例如:python sqlmap.py -u http://127.0.0.1/index.php?id=1&mid=2&page=3 -p "page"
*:指定注入点,例如:python sqlmap.py -u http://127.0.0.1/index.php?id=1*&mid=2&page=3* 注意:*号也可以用于伪静态的注入,用法同前面一样,直接在注入点后面加*
--fresh-queries:刷新缓存
--current-db:获取当前数据库名称
--time-sec=5:设置延时时间
-m:用于sqlmap批量跑注入,指定一个含有多个url的txt文件
--level 3:指定测试等级,等级越高,检查项越多,共1-5个等级
--risk 3:指定风险等级,等级越告,payload越复杂,共1-3个等级
--random-agent:指定随机agent头
--batch:默认选项
13、sql注入获取webshell的方式
1、写文件(需要写权限)
2、写日志文件(不要学权限,但是需要通过命令开启日志记录功能,而且还需要把日志文件的路径指定到网站根路径下面)
14、sql注入防御
1、过滤敏感字符,例如:information_schema、into out_file、into dump_file、’、"、()
2、预编译
3、站库分离:增加攻击者的时间成本、防止通过数据库拿到webshell
安全面试之MYSQL注入相关推荐
- concat mysql sql注入_sql注入-mysql注入基础及常用注入语句
最近在教学中,关于SQL注入,总发现学生理解起来有些难度,其实主要的原因是对各类数据库以及SQL语句不熟悉,今天先介绍mysql注入需要掌握的基础, Mysql内置information_schema ...
- MySQL注入中报错的利用
MySQL注入中报错的利用 在很多的情况 下我们不能直接方便的进行注入,于是有了BENCHMARK延迟注射,如果能得到MySQL的错误信息的话,现在又有了更方便的方法. 网上流传了两三种方法,以前我在 ...
- mysql内置变量_详解MySQL注入利用的变量
MySQL注入数据库时,我们可以利用内置的变量来得到更多的mysql信息,下面就让我们一起来了解MySQL注入利用的变量. 当我们注射mysql库的输入点的时候,可以通过version()/user( ...
- php面试专题---MYSQL查询语句优化
php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存) ...
- mysql注入语句解释,MYSQL注入语句实用精解
MYSQL注入语句实用精解 只讲字符型. order by XX Union select ..... 1' UNION SELECT 1,CONCAT(user(),0x3a,database(), ...
- mysql注入提取邮件_【sql注入教程】mysql注入直接getshell
Mysql注入直接getshell的条件相对来说比较苛刻点把 1:要知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道 2:gpc没有开启,开启了单引号被转义了,语句就不能正 ...
- jsp mysql 注入_由Jsp+Mysql注入到root权限的全程展 【好久没有安全类文章了,转一篇看看】...
由Jsp+Mysql注入到root权限的全程展 最近有点空闲,所以写点垃圾文章来消磨一下时间.文中没有什么技术含量,如果要转载,请注明作者并保持文章的完整. 很多人可能都知道asp,php的编程要防止 ...
- 面试:MySQL InnoDB 事务隔离
面试:MySQL InnoDB 事务隔离 几种隔离级别 事务的隔离性是数据库处理数据的几大基础之一,而隔离级别其实就是提供给用户用于在性能和可靠性做出选择和权衡的配置项. ISO 和 ANIS SQL ...
- 面试:MySQL 架构
面试:MySQL 架构 总体来说 MySQL 可以分为两层,第一层是 MySQL 的服务层,包含 MySQL 核心服务功能:解析.分析.优化.缓存以及内置函数,所有跨存储引擎的功能都在这一层实现:存储 ...
最新文章
- 斯坦福CS329S:机器学习系统设计,课程、笔记上线了!
- Linux进程间通信五 Posix 信号量简介与示例
- linux下面把png文件转化为背景透明
- 禁用导航栏的右滑返回实现全屏手势返回
- Effective Java~57. 将局部变量的作用域最小化
- php websocket 帧封装,swoole websocket封装类和调用
- 给i茅台APP提几个建议
- java poi操作word2007_java使用poi解析2007以上的word文档中的表格与图片
- JSON在Android网络交互中的使用方法
- aes加密 js_吊打SRC的加密传输实现SQLi挖掘
- HeidiSQL- csv 表格导入数据到 DB表
- java请求url拼接xml_java访问一个URL,会返回给你一个XML格式的数据,该怎么实现?...
- 陈耀烨九段加冕新名人见证实录
- php 识别二维码内容
- Fairy Tail - Main Theme Slow Version guitar (solo)
- Vista发布在即 各版本详情介绍
- SMT操作员是做什么的?工作职责?
- INF443 Amphi 1
- 买了云服务器不会用?写了网站不会部署?超详细springboot+vue前后端项目部署教程来啦
- 创业,请神志不清者走开—leo看赢在中国第三季(3)