当前位置: 首页 > news >正文

网络安全---正则回溯

目录

一、题目引入

二、举出回溯例子进行分析

第一步: 正则往前匹配

第二步:匹配到头

第三步:往回匹配 

第四步:直到分号结束 (匹配上)

原因:

 三、进入正题一(分析题型)

四、进入正题二(分析题型)



一、题目引入

PHP利用PCRE回溯次数限制绕过某些安全限制,大意是判断一下用户输入的内容有没有 PHP 代码,如果没有,则写入文件

<?php
function is_php($data){  return preg_match('/<\?.*[(`;?>].*/is', $data);  
}
<?php eval()if(!is_php($input)) {// fwrite($f, $input); ...
}

二、举出回溯例子进行分析

<\?.*[(`;?>].*

第一步: 正则往前匹配

第二步:匹配到头

第三步:往回匹配 

第四步:直到分号结束 (匹配上)

原因:

PHP 为了防止正则表达式的拒绝服务攻击(reDOS),给 pcre 设定了一个回溯次数上限 pcre.backtrack_limit。(100万次)

 三、进入正题一(分析题型)

PHP文件如下所示:

<?php
// greeting[]=Merry Christmas&greeting[]=123
function areyouok($greeting){return preg_match('/Merry.*Christmas/is',$greeting); //正则匹配
}
// greeting[]=123
// $greeting=@$_POST['greeting'];if(!areyouok($greeting)){// NULL != false// Null !== false// null !== false// strposif(strpos($greeting,'Merry Christmas') !== false){   //字符查找,如果查找到返回字符的位置,没有就返回falseecho 'welcome to nanhang. '.'flag{i_Lov3_NanHang_everyThing}';}else{echo 'Do you know .swp file?';}
}else{echo 'Do you know PHP?';
}

 

 解析:strpos:判断字符串位置,str:字符串,position判断字符串位置

在分析代码的时候我们陷入了有和不有的矛盾

这是我们会陷入走不进if的矛盾中,有人便会提出那我匹配为greeting=Merry Christmas不就可以了,而结果却是第一个if都无法进入

 经过思考,我们传入一个数组,而这样我们就拿下了,那么我们就要思考这个数组有什么含义

 分析:strpos它是用来对比字符串的,而我们传入了一个数组,这个时候传入的数值就会变为NULL,进而与我们的false比较,只有为真才会继续往下传

 pass:(!==false)中一个等号和两个等号的区别,一个等号不是严格的比对,在数值类型下为弱类型转换都可以转换为0,两个等号没有弱类型转换,是严格不相等因此会继续匹配

四、进入正题二(分析题型)

<?php
// 利用回溯绕过正则表达式
//正则匹配有次数限制 他怕dos攻击
// 100万次 回溯
// var_dump(ini_get('pcre.backtrack_limit'));
// greeting[]=Merry Christmas&greeting[]=123
// var_dump(ini_get('pcre.backtrack_limit'));
// var_dump(strpos(['aaaa'],'Merry Christmas'));
// var_dump(NULL !== false);
function areyouok($greeting){return preg_match('/Merry.*Christmas/is',$greeting);
}// 回溯的问题
$greeting=@$_POST['greeting'];
if(!is_array($greeting)){if(!areyouok($greeting)){// strpos string postionif(strpos($greeting,'Merry Christmas') !== false){echo 'Merry Christmas. '.'flag{i_Lov3_NanHang_everyThing}';}else{echo 'Do you know .swp file?';}}else{echo 'Do you know PHP?';}
} else {echo 'fuck array!!!';
}
?>

此段代码升级,给代码中加入了判断if(!is_array($greeting)),会先判断数组,此时我们就该去烤炉回溯的问题

思路:输入一个字符串后面跟上一百万个字符,因为回溯限制的问题,匹配一百万次后,就会传入参数,匹配前面的字符串,而前面是有字符串的,那么就为Ture,那么就能传入成功

相关文章:

网络安全---正则回溯

目录 一、题目引入 二、举出回溯例子进行分析 第一步&#xff1a; 正则往前匹配 第二步&#xff1a;匹配到头 第三步&#xff1a;往回匹配 第四步&#xff1a;直到分号结束 &#xff08;匹配上&#xff09; 原因&#xff1a; 三、进入正题一&#xff08;分析题型&#…...

压测秒杀场景常见问题

很多人在做秒杀场景的压测时&#xff0c;经常出现以下两个问题&#xff1a; 1&#xff0c;用自己的笔记本电脑瞬间发起1000个请求 2&#xff0c;没有使用虚拟ip&#xff08;发起的请求都是同样的一个ip&#xff09; 其实现在很多人在做秒杀压测的时候&#xff0c;都会遇到这两…...

【python】【sql】格式化注意事项

如果需要格式化表名到 sql 语句&#xff0c;sql 引擎是不支持的。 所以表名需要用字符串格式化&#xff0c;但其他参数最好用 sql 自带的格式&#xff0c;这样就不用去调一些细节&#xff0c;比如字符串的值是否要带引号之类的。 比如&#xff1a; cur.execute(SELECT {0} FR…...

leetcode做题笔记71

给你一个字符串 path &#xff0c;表示指向某一文件或目录的 Unix 风格 绝对路径 &#xff08;以 / 开头&#xff09;&#xff0c;请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中&#xff0c;一个点&#xff08;.&#xff09;表示当前目录本身&#xff1b;此外…...

啥是 Python?学了他能干嘛?

最近在学 python&#xff0c;真心感觉这玩意太牛了&#xff0c;你能想到&#xff0c;想不到的事情他都能做&#xff0c;前两天也是总结了一下 python 的特点&#xff0c;分享给大家看看~ 与君共勉 历史篇 1989年圣诞节&#xff0c;当大家都在忙着包装礼物&#xff0c;享受节日…...

百日筑基篇——Pandas学习三(pyhton入门八)

百日筑基篇——Pandas学习三&#xff08;pyhton入门八&#xff09; 文章目录 前言一、数据排序二、字符串处理三、数据合并方法1. merge方法2. concat方法 四、分组数据统计五、数据重塑1. stack2. pivot 总结 前言 上一篇文章介绍了一下pandas库中的一些函数&#xff0c;而本…...

【Android Framework系列】第10章 PMS之Hook实现广播的调用

1 前言 前面章节我们学习了【Android Framework系列】第4章 PMS原理我们了解了PMS原理&#xff0c;【Android Framework系列】第9章 AMS之Hook实现登录页跳转我们知道AMS可以Hook拦截下来实现未注册Activity页面的跳转&#xff0c;本章节我们来尝试一下HookPMS实现广播的发送。…...

Mysql锁实战

mysql版本&#xff1a;8.0.32 通过实战验证mysql的Record lock 与 Gap lock原理 准备工作 设置隔离级别为&#xff1a;RR&#xff0c;以及innodb状态输出锁相关信息 show variables like %innodb_status_output_locks%; show variables like %isolation%;set global innodb_…...

HCIP-OpenStack发放云主机

1、云中的概念 在云平台注册了一个账号&#xff0c;这个账号对于云平台来说&#xff0c;就是一个租户或者一个项目。 租户/项目&#xff08;tenant/project&#xff09;&#xff0c;租户就是项目的意思。主机聚合就是主机组的意思。 region&#xff08;区域&#xff09;&…...

时序预测 | MATLAB基于扩散因子搜索的GRNN广义回归神经网络时间序列预测(多指标,多图)

时序预测 | MATLAB基于扩散因子搜索的GRNN广义回归神经网络时间序列预测(多指标,多图) 目录 时序预测 | MATLAB基于扩散因子搜索的GRNN广义回归神经网络时间序列预测(多指标,多图)效果一览基本介绍程序设计学习小结参考资料效果一览...

Vulhub之Apache HTTPD 换行解析漏洞(CVE-2017-15715)

Apache HTTPD是一款HTTP服务器&#xff0c;它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞&#xff0c;在解析PHP时&#xff0c;1.php\x0A将被按照PHP后缀进行解析&#xff0c;导致绕过一些服务器的安全策略。 1、docker-compose build、docker-compo…...

ARTS 挑战打卡的第7天 --- Ubuntu中的WindTerm如何设置成中文,并且关闭shell中Tab键声音(Tips)

前言 &#xff08;1&#xff09;Windterm是一个非常优秀的终端神器。关于他的下载我就不多说了&#xff0c;网上很多。今天我就分享一个国内目前没有找到的这方面的资料——Ubuntu中的WindTerm如何设置成中文&#xff0c;并且关闭shell中Tab键声音。 将WindTerm设置成中文 &…...

Oracle之执行计划

1、查看执行计划 EXPLAIN PLAN FOR SELECT * FROM temp_1 a ; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); 2、执行计划说明 2.1、执行顺序 根据缩进来判断&#xff0c;缩进最多的最先执行&#xff1b;&#xff08;缩进相同时&#xff0c;最上面的最先执行&#xff09; 2.2…...

【Vue框架】菜单栏权限的使用与显示

前言 在 【Vue框架】Vue路由配置 中的getters.js里&#xff0c;可以看到有一个应用程序的状态&#xff08;变量&#xff09;叫 permission_routes&#xff0c;这个就是管理前端菜单栏的状态。具体代码的介绍&#xff0c;都以注释的形式来说明。 1、modules\permission.js 1…...

案例研究|大福中国通过JumpServer满足等保合规和资产管理双重需求

“大福中国为了满足安全合规要求引入堡垒机产品&#xff0c;在对比了传统型堡垒机后&#xff0c;发现JumpServer使用部署更加灵活&#xff0c;功能特性丰富&#xff0c;能够较好地满足公司在等保合规和资产管理方面的双重需求。” ——大福&#xff08;中国&#xff09;有限公…...

大数据课程I4——Kafka的零拷贝技术

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 掌握Kafka的零拷贝技术&#xff1b; ⚪ 了解常规的文件传输过程&#xff1b; 一、常规的网络传输原理 表面上一个很简单的网络文件输出的过程&#xff0c;在OS底层&…...

红日ATT&CK VulnStack靶场(三)

网络拓扑 web阶段 1.扫描DMZ机器端口 2.进行ssh和3306爆破无果后访问web服务 3.已知目标是Joomla&#xff0c;扫描目录 4.有用的目录分别为1.php 5.configuration.php~中泄露了数据库密码 6.administrator为后台登录地址 7.直接连接mysql 8.找到管理员表&#xff0c;密码加密了…...

JavaScript之BOM+window对象+定时器+location,navigator,history对象

一.BOM概述 BOM即浏览器对象模型,它提供了独立于内容而与窗口进行交互的对象 BOM的顶级对象是window 二.window对象的常见事件 1.窗口加载事件window.onload window.onload function(){} 或者 window.addEventListener("onload" , function(){}); window.onlo…...

为MySQL新增一张performance_schema表 | StoneDB 技术分享会 #4

StoneDB开源地址 https://github.com/stoneatom/stonedb 设计&#xff1a;小艾 审核&#xff1a;丁奇、李浩 编辑&#xff1a;宇亭 作者&#xff1a;王若添 中国科学技术大学-软件工程-在读硕士、StoneDB 内核研发实习生 performance_schema 简介 MySQL 启动后会自动创建四…...

2023/8/12总结

增加了管理员功能点&#xff1a;&#xff08;管理标签和分类&#xff09; 另外加了一个转换成pdf的功能 主要是通过wkhtmltopdf实现的&#xff0c;之前看过很多说用adobe的还有其他但是都没成功。 然后就是在学习websocket和协同过滤算法实现&#xff0c;还只是初步了解了这些。…...

微信接入支付宝内置的openclaw(aclaw)

第一步&#xff1a;领养龙虾第二步&#xff1a;安装微信插件 让 AClaw 执行以下命令&#xff1a; npx -y tencent-weixin/openclaw-weixin-clilatest install将命令发送给 AClaw&#xff0c;效果如图所示&#xff1a;第三步&#xff1a;扫码登录 由于运行环境的限制&#xff0c…...

OpenClaw技能推荐:百川2-13B-4bits最适合的5个办公自动化技能

OpenClaw技能推荐&#xff1a;百川2-13B-4bits最适合的5个办公自动化技能 1. 为什么选择百川2-13B-4bits作为办公自动化引擎 去年冬天&#xff0c;当我第一次尝试用OpenClaw对接各种开源模型时&#xff0c;发现大多数13B参数级别的模型都需要至少24GB显存。直到遇到百川2-13B…...

云南塑料管公司哪家好

在云南&#xff0c;塑料管行业面临着诸多挑战&#xff0c;这些问题严重影响了工程质量和使用体验。行业痛点凸显塑料管的地域适配性差、产品品质参差不齐、性价比失衡、服务不完善以及供应链不稳定是当前行业普遍面临的难题。云南山区多、昼夜温差大、雨季漫长且软土地基普遍&a…...

保姆级教程:在RT-Thread Studio中为AT32F437配置LAN8720以太网(从驱动使能到ifconfig测试)

从零构建AT32F437以太网通信&#xff1a;RT-Thread Studio与LAN8720全流程实战指南 当AT32F437这颗高性能MCU遇上RT-Thread的实时操作系统&#xff0c;再配合LAN8720这颗经典的以太网物理层芯片&#xff0c;能碰撞出怎样的火花&#xff1f;作为嵌入式开发者&#xff0c;实现设备…...

OpenClaw插件开发指南:为百川2-13B-4bits定制飞书会议纪要生成器

OpenClaw插件开发指南&#xff1a;为百川2-13B-4bits定制飞书会议纪要生成器 1. 为什么需要定制会议纪要生成器 去年参加完一场跨部门会议后&#xff0c;我花了整整两小时整理会议纪要。当时就想&#xff1a;如果能自动提取关键信息、生成结构化摘要该多好。尝试过几个SaaS工…...

NaViL-9B多场景落地:物流运单图像识别+地址结构化+异常标记

NaViL-9B多场景落地&#xff1a;物流运单图像识别地址结构化异常标记 1. 物流行业的AI变革机遇 现代物流行业每天处理数以亿计的运单&#xff0c;传统人工处理方式面临三大挑战&#xff1a; 效率瓶颈&#xff1a;人工录入一张运单平均耗时30秒&#xff0c;高峰期处理能力不足…...

康奈尔大学 AlScN/GaN 异质结构研究“单通道和多通道 AlScN 势垒”

康奈尔大学的研究团队声称&#xff0c;利用铝钪氮&#xff08;AlScN&#xff09;势垒开发的氮化镓&#xff08;GaN&#xff09;单通道和多通道异质结构&#xff0c;实现了迄今为止最低的薄层电阻&#xff08;Sheet Resistance&#xff09;。这项工作旨在推动下一代高速、高功率…...

平行泊车和垂直泊车的程序代码(基于MATLAB开发,含代码与说明文档)

平行泊车和垂直泊车的程序代码&#xff0c;基于MATLAB开发&#xff0c;包含代码和说明文档平行与垂直泊车路径规划系统&#xff1a;基于 MATLAB 的自动驾驶辅助功能实现一、背景与目标----------------在 L2/L3 级自动驾驶量产方案中&#xff0c;低速泊车是用户感知最强、使用频…...

SEO_从零开始,手把手教你制定SEO优化方案(237 )

SEO从零开始&#xff1a;初学者手把手教你制定SEO优化方案 在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为了网站流量获取的重要途径之一。无论你是新开网站的小主人&#xff0c;还是希望提升现有网站排名的企业&#xff0c;掌握SEO优化方案的基本…...

9.7%年复合增长率!内容安全审查平台未来六年发展路径清晰,市场潜力凸显

在数字内容呈指数级增长、全球网络监管政策趋严的背景下&#xff0c;内容安全审查平台作为保障数字空间合规性的核心工具&#xff0c;正经历从“规则驱动”向“AI智能驱动”的范式转型。据恒州诚思调研统计&#xff0c;2025年全球市场规模达179.3亿元&#xff0c;预计至2032年将…...