Bugku web19&秋名山车神

前言

题目设计到正则表达试的运用


提示:以下是本篇文章正文内容,下面案例可供参考

一、知识补充

1.正则表达试补充

操作符说明
.表示任意一个字符
[ ]字符集:[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_]

2.re 函数介绍

  1. compile()函数:生成正则表达式对象,用来验证其他的字符串 : a= re.compile(‘a’) b= a.seach(‘abc’)如果匹配成功返回re.match对象,否则返回none 注:只返回第一次查找成功时的对象,只一次查找
  2. re.search(1,2)函数:1表示匹配的规则,2表示需要匹配的字符对象
a= re.search('avc','Aavc')
> 查找成功返回<re.Match object; span=(1, 4), match='avc'>

这里遵循左闭右开规则所以是(1,4)

  1. re.findall(1,2)函数 :用法同search,不同的是全局匹配返回列表
print(re.findall('aa','aadasdfaaadfadaa'))
返回['aa', 'aa', 'aa']
  1. 采用正则表达式,表示找到1次或者多次前字符是a,b,c的遇到不符合的字符截至
print(re.findall('[a-c]+','aacdasdfaaadfadaa'))
返回['aac', 'a', 'aaa', 'a', 'aa']
  1. re.sub(1,2,3)
print(re.sub('a','A','aadfvada') #找到3中字符a 用A替换
  1. 都可以用正则表达式来查找

二、web 19 解题过程

查看源码

</br>我感觉你得快点!!!<!-- OK ,now you have to post the margin what you find -->

尝试用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)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值