Bugku web19&秋名山车神

Bugku web18秋名山车神

  • 前言
  • 一、知识补充
    • 1.正则表达试补充
    • 2.re 函数介绍
  • 二、web 19 解题过程
  • 三 .秋名山车神
  • 总结

文章目录

  • 前言
  • 一、知识补充
    • 1.正则表达试补充
    • 2.re 函数介绍
  • 二、web 19 解题过程
  • 三 .秋名山车神
  • 总结

前言

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


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

一、知识补充

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')
> 查找成功返回; 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 解题过程

查看源码


我感觉你得快点!!!

尝试用bp

Bugku web19&秋名山车神_第1张图片
两次base64解码一下:
Bugku web19&秋名山车神_第2张图片
请添加图片描述
不可能折磨简单 刷新一下结果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)

你可能感兴趣的:(web,安全,web)