regexpire-攻防世界-MISC

用nc链接靶机:

root@kali:~/Desktop# nc 220.249.52.133 37944

Can you match these regexes?

B+v*(clementine|sloth)*Q*eO(clinton|alien)*(cat|elephant)(cat|trump)[a-zA-Z]*(dolphin|clementine)\W*(table|apple)*

大致上是服务端给出一个正则表达式,要求输入符合该表达式的字符串。这里可以使用Python中的rstr库,该库主要用于根据条件生成随机字符串(参见rstr · PyPI),其中的xeger函数可以从正则表达式生成随机字符串。例如:

import rstr

print(rstr.xeger(r'B+v*(clementine|sloth)*Q*eO(clinton|alien)*(cat|elephant)(cat|trump)[a-zA-Z]*(dolphin|clementine)\W*(table|apple)*'))

输出:

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvclementineclementineclementineclementineclementineclementineclementineslothslothclementineslothclementineclementineslothslothslothclementineslothslothclementineslothslothclementineclementineslothclementineslothclementineclementineslothclementineslothQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQeOalienclintonalienalienclintonclintonalienalienalienalienalienclintonalienclintonclintonclintonclintonalienalienalienalienalienalienclintonclintonalienclintonalienelephanttrumpGwSPaPqNKdPpccXBlHYxrhwyMjRdzSzSKELLUekKJVYGpdKxQapzainTuYuWclementine|;appletableappletableappletabletabletabletableappletabletabletableappletableappleappletabletabletabletabletableappletableappleappletableappleappletableappleappletableappleappletableappleappletabletableappleappletableappleappleappleappletableappleappleappleappleappletableappletableappletabletableappleappletableappleappletableappleappletableappleappletableappletabletableappleapple

注意xeger适用于大多数简单的正则表达式,但并不完整支持Python中所有正则表达式功能

利用Python的pwntool库来自动完成获取正则表达式和提交答案的过程:

from pwn import *
import rstr
from time import sleep

r = remote('220.249.52.133', 37944)
print(bytes.decode(r.recvline()))

i = 1
while True:
    question = bytes.decode(r.recvline()[:-1])
    if 'Irregular' in question:
        break
    if 'flag' in question:
        print('flag is:', question)
        break
    print('No.', i, ':\n', question, '\n')
    answer = rstr.xeger(question)
    while '\n' in answer[:-1]:
        answer = rstr.xeger(question)
    print(answer, '\n')
    r.sendline(answer)
    i += 1
    sleep(0.2)

同时有一个需要特别注意的地方。如果提交的答案中包含有换行符\n,服务端会认为这标识了一段答案提交结束,导致所提交的答案只有\n前的半段,无法通过正则表达式判断。因此,若生成的答案字符串中包含\n,需要通过一个循环来判断并重复生成,直到答案中不包含\n为止再提交。

运行该脚本,回答正确1000次后服务端返回flag。

flag:flag{^regularly_express_yourself$}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/424335.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot的宠物咖啡馆平台的设计与实现论文

基于Spring Boot的宠物咖啡馆平台的设计与实现 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于Spring Boot的宠物咖啡馆平台的设计与实现的开发全过程。通过分析基于Spring Boot的宠物咖啡馆平台的设计与…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:形状裁剪)

用于对组件进行裁剪、遮罩处理。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 clip clip(value: boolean | CircleAttribute | EllipseAttribute | PathAttribute | RectAttribute) 按指定的形状对当…

数据结构:排序算法+查找算法

一、概念 程序数据结构算法 1.算法的特性和要求 特性: 确定性(每次运行相同的输入都是同样的结果)、有穷性、输入、输出、可行性 设计要求: 正确性、高效率、低存储、健壮性、可读性 2.时间复杂度 3.常见排序算法的时间复杂…

6.5 共享数据

本节介绍Android的四大组件之一ContentProvider的基本概念和常见用法:首先说明如何使用内容提供器封装内部数据的外部访问接口,然后阐述如何使用内容解析器通过外部接口操作内部数据,最后叙述如何利用内容解析器读写联系人信息,以…

SQL无列名注入

SQL无列名注入 ​ 前段时间,队里某位大佬发了一个关于sql注入无列名的文章,感觉好像很有用,特地研究下。 关于 information_schema 数据库: ​ 对于这一个库,我所知晓的内容并不多,并且之前总结SQL注入的…

2W字-35页PDF谈谈自己对QT某些知识点的理解

2W字-35页PDF谈谈自己对QT某些知识点的理解 前言与总结总体知识点的概况一些笔记的概况笔记阅读清单 前言与总结 最近,也在对自己以前做的项目做一个知识点的梳理,发现可能自己以前更多的是用某个控件,以及看官方手册,但是没有更…

EchoServer回显服务器简单测试

目录 工具介绍 工具使用 测试结果 工具介绍 github的一个开源项目,是一个测压工具 EZLippi/WebBench: Webbench是Radim Kolar在1997年写的一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的…

【Vue3】解锁Vue3黑科技:探索接口、泛型和自定义类型的前端奇迹

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

WebServer -- 注册登录

目录 🍉整体内容 🌼流程图 🎂载入数据库表 提取用户名和密码 🚩同步线程登录注册 补充解释 代码 😘页面跳转 补充解释 代码 🍉整体内容 概述 TinyWebServer 中,使用数据库连接池实现…

vscode c/c++ 检测到 #include 错误。请更新 includePath。

问题背景 使用vscode打开项目后,头文件显示红色波浪线,没有引入。 检测到 #include 错误。请更新 includePath。已为此翻译单元(xxx)禁用波形曲线。 解决方法 gcc -v -E -x c - 显示所有头文件路径。 打开c_cpp_properties.json文件,粘贴…

Verilog Constructs、Verilog系统任务和功能

下表列出了Verilog构造在Vivado合成中的支持状态。 Verilog系统任务和功能 Vivado合成支持系统任务或功能,如下表所示。Vivado合成会忽略不支持的系统任务。 使用转换函数 使用以下语法对任何表达式调用$signed和$unsigned系统任务。 $signed(expr&am…

「爬虫职海录」三镇爬虫

HI,朋友们好 「爬虫职海录」第三期更新啦! 本栏目的内容方向会以爬虫相关的“岗位分析”和“职场访谈”为主,方便大家了解一下当下的市场行情。 本栏目持续更新,暂定收集国内主要城市的爬虫岗位相关招聘信息,有求职…

计算机设计大赛 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 🔥 优质竞赛项目系列,今天要分…

Redis、Elasticsearch(ES)、RocketMQ和MYSql 持久化对比

在现代大数据和分布式系统中,数据持久化是一个至关重要的话题。本文将针对 Redis、Elasticsearch(ES)、 RocketMQ和MYSql 这四种常见的数据存储和消息队列系统进行持久化方面的对比分析,帮助读者更好地了解它们各自的特点和适用场…

无人机镜头稳定的原理和相关算法

无人机的镜头稳定主要基于两个关键技术:镜头平衡技术和实时电子稳像。无人机镜头稳定的原理和相关算法主要是通过镜头平衡技术和实时电子稳像技术来保持摄像镜头的稳定性,从而拍摄出清晰、稳定的画面。无人机镜头稳定的原理主要是通过传感器和算法来实现…

第三百七十七回

文章目录 1. 概念介绍2. 实现方法2.1 maskFilter2.2 shader 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"两种阴影效果"相关的内容,本章回中将介绍如何绘制阴影效果.闲话休提,让我们一起Talk Flutter吧。 1. 概…

FCIS 2023网络安全创新大会:洞察前沿技术,探索安全新境界(附大会核心PPT下载)

随着信息技术的飞速发展,网络安全问题日益凸显,成为全球关注的焦点。作为网络安全领域的重要盛会,FCIS 2023网络安全创新大会如期而至,汇聚了全球网络安全领域的顶尖专家、学者、企业家和政策制定者,共同探讨网络安全的…

【GitHub】修改默认分支

GitHub的默认分支为main,但我们常常习惯使用master作为默认分支,那在GitHub上如何将master修改为默认分支呢? 全局修改 点击头像,选择菜单栏中的设置 输入master作为默认分支,然后执行updating即可! 单项…

【数据结构和算法初阶(C语言)】顺序表+单链表经典例题图文详解(题解大合集,搭配图文演示详解,一次吃饱吃好)

目录 1.移除链表元素 1.1思路1:遍历删除 1. 2 思路2:尾插法 2.反转链表 3.链表的中间节点 3.1解题思想及过程 3.2快慢指针思想解题---变式:返回链表的倒数第K个节点 4.合并两个有序链表 4.1解题思想 1取小的尾插 5.反转链表 6…

mindsdb,一个超酷的 Python 库!

更多Python学习内容:ipengtao.com 大家好,今天为大家分享一个超酷的 Python 库 - mindsdb。 Github地址:https://github.com/mindsdb/mindsdb 在机器学习领域,构建和训练模型是一项复杂且耗时的任务。为了简化这个过程&#xff0c…