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)过滤单引号:

https://blog.csdn.net/qq_42181428/article/details/105061424

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注入技巧备忘录的更多相关文章

  1. 安全测试===Mysql 注入技巧学习 MySQL注入技巧(2)

    原文地址:http://websec.files.wordpress.com/2010/11/sqli2.pdf 0x00.介绍 也可以参考瞌腄龙的mysql注入科普:http://drops.woo ...

  2. 安全测试===Mysql 注入技巧学习 MySQL注入技巧(1)

    默认存在的数据库: mysql 需要root权限读取 information_schema 在5以上的版本中存在 测试是否存在注入方法 假:表示查询是错误的 (MySQL 报错/返回页面与原来不同) ...

  3. 对MYSQL注入相关内容及部分Trick的归类小结

    前言 最近在给学校的社团成员进行web安全方面的培训,由于在mysql注入这一块知识点挺杂的,入门容易,精通较难,网上相对比较全的资料也比较少,大多都是一个比较散的知识点,所以我打算将我在学习过程中遇 ...

  4. 【mysql注入】mysql注入点的技巧整合利用

    [mysql注入]mysql注入点的技巧整合利用 本文转自:i春秋社区 前言: 渗透测试所遇的情况瞬息万变,以不变应万变无谓是经验与技巧的整合 简介: 如下 mysql注入点如果权限较高的话,再知道w ...

  5. MySQL注入总结

    SELECT first_name, last_name FROM users WHERE user_id = '$id' 1.id=1' or 1=1 --     这个可以查询所有的信息,其中“- ...

  6. MySQL注入与防御(排版清晰内容有条理)

    为何我要在题目中明确排版清晰以及内容有条理呢? 因为我在搜相关SQL注入的随笔博客的时候,看到好多好多都是页面超级混乱的.亲爱的园友们,日后不管写博客文章还是平时写的各类文章也要多个心眼,好好注意一下 ...

  7. Mysql注入小tips --持续更新中

    学习Web安全好几年了,接触最多的是Sql注入,一直最不熟悉的也是Sql注入.OWASP中,Sql注入危害绝对是Top1.花了一点时间研究了下Mysql类型的注入. 文章中的tips将会持续更新,先说 ...

  8. MySQL注入技巧性研究

    0x00 前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,本人最近针对MySQL注入做了 ...

  9. MySQL注入与防御

    1.简介 1.1.含义 在一个应用中,数据的安全无疑是最重要的.数据的最终归宿都是数据库,因此如何保证数据库不被恶意攻击者入侵是一项重要且严肃的问题! SQL注入作为一种很流行的攻击手段,一直以来都受 ...

随机推荐

  1. 『动善时』JMeter基础 — 31、JMeter中BeanShell断言详解

    目录 1.BeanShell简介 2.Beanshell的内置变量和方法 3.BeanShell断言界面详解 4.BeanShell断言的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 ...

  2. 【六】K8s-Pod 水平自动扩缩实践(简称HPA)

    一.概述 Pod 水平自动扩缩(Horizontal Pod Autoscaler)简称 HPA,HPA 可以根据 CPU 利用率进行自动伸缩 Pod 副本数量,除了 CPU 利用率,也可以基于其他应 ...

  3. 微服务架构(Microservices) ——Martin Flower

    不知不觉到达了Sring Boot的学习中了,在学习之前,了解微服务架构是很有必要的,对于自己提升今后面试的软实力有很大帮助,在此写下. 让我们接下来看下Martin Flower 如何解释微服务架构 ...

  4. Go string 详解

    前言 字符串(string) 作为 go 语言的基本数据类型,在开发中必不可少,我们务必深入学习一下,做到一清二楚. 本文假设读者已经知道切片(slice)的使用,如不了解,可阅读 Go 切片 基本知 ...

  5. Camera噪声问题

    Camera噪声问题 Camera RGB 域的噪声 以上部分属于sensor processing,接下来的部分属于color.luminance processing. gamma gamma是在 ...

  6. TcaplusDB祝大家端午安康!

    "五月五,端午到,赛龙舟,真热闹.吃粽子,带香包,蚊虫不来身边闹."这首脍炙人口.描绘着端午节风俗的儿歌,想必大家都听过. 每年的农历五月初五,是我国四大传统节日(春节.清明节.端 ...

  7. 解决:django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not 的方法

    错误类型: 该错误是在在创建Django工程时出现遇到的错误 完整报错信息:(博文标题输入长度有限制) django.core.exceptions.ImproperlyConfigured: Req ...

  8. 教你三种jQuery框架实现元素显示及隐藏动画方式

    摘要:在jQuery框架中对元素对象进行显示和隐藏有三种方式,分别是"默认方式显示和隐藏"."滑动方式显示和隐藏"."淡入淡出显示和隐藏". ...

  9. PTA4-6题目集总结与归纳

    前言: 继上篇blog所写的几种日期的求法,这次是把那几种聚合起来,即日期类的聚合设计.除下这类,一种是图形继承设计的3种变化,还有一种是3次对正则表达式的应用.当然,作为一个菜鸟,还是无法写成大佬的 ...

  10. 安装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软件 ...