0x02 场景描述
经过前几期的python专题文章,经师傅们反馈,已经会写一些简单的python poc脚本,但同时又遇到个新的问题,遇到多个请求传递参数时,不知道怎么从响应里面获取指定的字符,不知道python中,正则函数该怎么使用。因此,今天给师傅们分享本人常用的一些正则以及对应的python代码。
0x03 场景举例
1、任意文件读取漏洞读取/etc/passwd,怎么写判断语句?
这个问题有的师傅会解答,说直接使用if 'root:' in response.text:直接就可以进行判断,因为所有的/etc/passwd文件里面,都包含'root:'这个字符。当然,这么写也能作为判断依据,但是会出现较高误报。如下:
解决办法:
if
re
.search
("
root
:.
*
:0"
,
response
.text
):
上述代码中。正则"root:.*:0"表示匹配root:、任意字符、:0这三部分,即格式为 root:xxxxx:0此类格式的字符串都能匹配;而re.search()
是 Python 的正则表达式模块 re
的一个函数,它用于在字符串中搜索与正则表达式模式匹配的子字符串。如果找到匹配,它将返回一个匹配对象;否则,它将返回 None
。
2、正则获取字符串
re.findall(
'左边字符串(.*?)右边字符串'
,strs)
re.findall() 是 Python 的正则表达式模块 re 的一个函数,用于在字符串中查找所有与正则表达式模式匹配的子字符串。上述表达式re.findall('左边字符串(.*?)右边字符串', strs)
中,这个正则表达式试图匹配以 "左边字符串" 开头,然后是任意数量的任意字符(由 (.*?)
表示,其中 .*
表示任意数量的任意字符,?
表示非贪婪匹配,即尽可能少的匹配字符),然后是 "右边字符串" 结尾的子字符串。
如下:
import re
strs
=
"左边字符串123右边字符串 左边字符串abc右边字符串"
alist
=re.findall(
'左边字符串(.*?)右边字符串'
,strs)
上述代码的strs中,123匹配中,abc也匹配中,即函数运算结果会存储在一个列表中,即alist为['123','abc']。此正则可适用于很多poc编写场景,需要师傅们灵活使用。
原文始发于微信公众号(SCA御盾):【python专题】poc编写过程万能正则获取字符串
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论