题目设计到正则表达试的运用
提示:以下是本篇文章正文内容,下面案例可供参考
操作符 | 说明 |
---|---|
. | 表示任意一个字符 |
[ ] | 字符集:[abc]表示a,b,c [a-z]表示a到z26个字母 |
^ | 非:除了什么字符之外,^a除了a字符外 |
* | 前一个字符(0次或无限次)扩充,ac*表示a,ac,acc… |
+ | 前一个字符(1次或无限次)扩充,ac+表示ac,acc,accc… |
? | 前一个字符(0次或1次)扩充 |
{m} | 扩展一个字符m次,a{2}c表示:aac |
^ | 匹配字符串开头 |
$ | 匹配字符串的结尾 |
() | 分组标记,分组去匹配 |
\d | 任意数字(0-9) |
\w | 等价于[0-9A-Za-z_] |
a= re.search('avc','Aavc')
> 查找成功返回; span=(1, 4), match='avc'>
这里遵循左闭右开规则所以是(1,4)
print(re.findall('aa','aadasdfaaadfadaa'))
返回['aa', 'aa', 'aa']
print(re.findall('[a-c]+','aacdasdfaaadfadaa'))
返回['aac', 'a', 'aaa', 'a', 'aa']
print(re.sub('a','A','aadfvada') #找到3中字符a 用A替换
查看源码
我感觉你得快点!!!
尝试用bp
两次base64解码一下:
不可能折磨简单 刷新一下结果base64值发生了变化
果然对应题目: 得快点
看来得用脚本跑了
import requests
import base64
url = 'http://114.67.246.176:12073/'
r= requests.session() # 获取session对话
retun = r.get(url).headers #已经查到 flag在header里面
s=retun['flag']#获取flag里面base64值
a=base64.b64decode(s).decode().split(' ')[1] # 第一个base解码后面得到base值把前面的字符过滤掉
final=base64.b64decode(a).decode() #第二次base64解码
data={
'margin':final}
print(r.post(url,data=data).text) #传值 post margin
题解过程与19相同
不同的是用到了正则表达式
获取值:r’(\d+[*-+])+(\d+) 表示:获取 整个表达式
> eval() 函数用来执行一个字符串表达式,并返回表达式的值。
import re
import requests
import urllib.request
url= 'http://114.67.246.176:11866/'
s = requests.session()
retuen = s.get(url)
print(retuen)
eql=re.search(r'(\d+[*\-+])+(\d+)',retuen.text).group()
result =eval(eql)
print(result)
key={
'value':result}
print(s.post(url,data=key).text)
部分正则表达式
用python脚本获取网页内容以及post数据
主要函数:
s= requests.session()
url=’’
return= s.get(url). # 可以获取header等信息
data={}
最后传值:s.post(data=data)