【python专题】poc编写过程万能正则获取字符串

admin 2024年1月14日15:26:02评论17 views字数 975阅读3分15秒阅读模式

0x02 场景描述

经过前几期的python专题文章,经师傅们反馈,已经会写一些简单的python poc脚本,但同时又遇到个新的问题,遇到多个请求传递参数时,不知道怎么从响应里面获取指定的字符,不知道python中,正则函数该怎么使用。因此,今天给师傅们分享本人常用的一些正则以及对应的python代码。

0x03 场景举例

1、任意文件读取漏洞读取/etc/passwd,怎么写判断语句?

这个问题有的师傅会解答,说直接使用if 'root:' in response.text:直接就可以进行判断,因为所有的/etc/passwd文件里面,都包含'root:'这个字符。当然,这么写也能作为判断依据,但是会出现较高误报。如下:

【python专题】poc编写过程万能正则获取字符串

解决办法:

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 restrs = "左边字符串123右边字符串 左边字符串abc右边字符串"alist=re.findall('左边字符串(.*?)右边字符串',strs)  


上述代码的strs中,123匹配中,abc也匹配中,即函数运算结果会存储在一个列表中,即alist为['123','abc']。此正则可适用于很多poc编写场景,需要师傅们灵活使用。

原文始发于微信公众号(SCA御盾):【python专题】poc编写过程万能正则获取字符串

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月14日15:26:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【python专题】poc编写过程万能正则获取字符串https://cn-sec.com/archives/2392314.html

发表评论

匿名网友 填写信息