当前位置:网站首页>安全基础4 ---正则表达式
安全基础4 ---正则表达式
2022-07-25 19:25:00 【抱小猫】
正则表达式
定义
又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。
元字符
| 字符 | 描述 |
|---|---|
| \ | 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 |
| ^ | 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。 |
| $ | 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。 |
| * | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 |
| + | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 |
| ? | 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 。? 等价于 {0,1}。 |
| \b | 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 |
| \B | 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 |
| \cx | 匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 |
| \d | 匹配一个数字字符。等价于 [0-9]。 |
| \D | 匹配一个非数字字符。等价于 [^0-9]。 |
| \f | 匹配一个换页符。等价于 \x0c 和 \cL。 |
| \n | 匹配一个换行符。等价于 \x0a 和 \cJ。 |
| \r | 匹配一个回车符。等价于 \x0d 和 \cM。 |
| \s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 |
| \S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 |
| \t | 匹配一个制表符。等价于 \x09 和 \cI。 |
| \v | 匹配一个垂直制表符。等价于 \x0b 和 \cK。 |
| \w | 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。 |
| \W | 匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。 |
| \n | 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。 |
常用正则表达式
| 正则表达式 | 描述 |
|---|---|
| /\b([a-z]+) \1\b/gi | 一个单词连续出现的位置。 |
| /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ | 匹配一个 URL 解析为协议、域、端口及相对路径。 |
| /^(?:Chapter|Section) [1-9][0-9]{0,1}$/ | 定位章节的位置。 |
| /[-a-z]/ | a 至 z 共 26个 字母再加一个 - 号。 |
| /ter\b/ | 可匹配 chapter,而不能匹配 terminal。 |
| /\Bapt/ | 可匹配 chapter,而不能匹配 aptitude。 |
| /Windows(?=95 |98 |NT )/ | 可匹配 Windows95 或 Windows98 或 WindowsNT,当找到一个匹配后,从 Windows 后面开始进行下一次的检索匹配。 |
| /^\s*$/ | 匹配空行。 |
| /\d{2}-\d{5}/ | 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。 |
| <[a-zA-Z]+.*?>([\s\S]*?) | 匹配 HTML 标记。 |
正则表达式案例
案例1:利用正则表达式解决长度问题
要求:将正则表达式:(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&*\\\.\(\)])
定位8-16位
分析:
(?=.*[0-9]):字符+数字

(?=.*[0-9])(?=.*[a-z]):字符+数字+小写字母

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]):字符+数字+小写字母+大写字母

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&*\\\.\(\)]):字符+数字+小写字母+大写字母+特殊字符

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&*\\\.\(\)])(?=^.{8,16}$):字符+数字+小写字母+大写字母+特殊字符+最短8位最长16位
1、没有8位字符时

2、有8位但小于16位字符时

3、大于十六位字符时
案例2:利用正则表达式进行绕过网页
环境:sqllabs靶场
1、我们首先通过测试可以得到该数据表一共有三列,利用order by联合查询时列数不一样时会有报错信息进行测试。

2、判断数据显示位置

3、查看当前数据库名称

4、查看当前用户及主机名

5、 获取所有库名


7、获取users表中信息:http://127.0.0.1:8003/Less-1/?id=-1%27%20union%20select%201,(select%20group_concat(username,0x3a,password)from%20users),3--+

参考:
边栏推荐
- 高并发下如何保证数据库和缓存双写一致性?
- GBASE 8s UDR内存管理_01_mi_alloc
- Dynamic implementation of wechat applet 27 progress bar and static construction of search box and hot search list
- Fearless of high temperature and rainstorm, how can Youfu network protect you from worry?
- Introduction of this course (Introduction to machine learning)
- 600000 pieces of data are made from March 1 to March 31. Videodate requires starting time from 00:00 to 24:00 on March 1 to 31, which is only for notes
- kubernetes RBAC
- 【HDLBits 刷题】Verilog Language(3)Modules: Hierarchy 部分
- The difference between PHP equal to = = and identity equal to = = =
- Solve the problem that the win10 account has no administrator rights
猜你喜欢

高并发下如何保证数据库和缓存双写一致性?

小程序毕设作品之微信校园维修报修小程序毕业设计成品(3)后台功能

高效生成接口文档好方法

Istio exposes applications to the Internet

“未来杯”第二届知识图谱锦标赛正式启动
![[web technology] 1391 page visualization building tool, previous life and present life](/img/59/a4efd1a703f5d876b170908ed0053c.png)
[web technology] 1391 page visualization building tool, previous life and present life

某公司网络设计与规划

聊聊接口性能优化的11个小技巧

modelsim和quartus联合仿真PLL FIFO等IP核

Imperial cms7.5 imitation "question and answer library" question and answer learning platform website source code with mobile version
随机推荐
485 current acquisition module dam-8041
基于PHP的中非南南合作信息交流平台网站建设
Website construction of information exchange platform for China Africa South South cooperation based on PHP
iMeta | Sangerbox: 交互式整合临床生信分析平台
Pymoo学习 (6):终止条件
Flutter 小技巧之优化你使用的 BuildContext
[cloud native kubernetes] management of secret storage objects under kubernetes cluster
Istio exposes applications to the Internet
【DETR用于3D目标检测】DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries
Use of swift basic codable (jsonencoder jsondecoder)
解决Win10账户没有了管理员权限
QT compiled successfully, but the program could not run
QIIME2得到PICRUSt2结果后如何分析
网络数据包多层传输演示
Full scale and Xuan of C key
GBASE 8s UDR内存管理_02_mi_dalloc
小程序毕设作品之微信校园维修报修小程序毕业设计成品(1)开发概要
Imperial cms7.5 imitation "question and answer library" question and answer learning platform website source code with mobile version
SQL Server 2019 安装教程
The second "future Cup" knowledge map championship was officially launched