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

php模板网站怎么修改微信商城下载

php模板网站怎么修改,微信商城下载,长春建个网站需要多少钱?,网页可视化编辑一、题目如下#xff1a; 二、代码解读#xff1a; 这段代码是一个简单的PHP脚本#xff0c;它接受通过GET请求传递的两个参数#xff1a;‘pass’和’func’#xff1a; ① $password trim($_GET[pass] ?? );#xff1a;从GET请求中获取名为’pass’的参数#xff0…一、题目如下 二、代码解读 这段代码是一个简单的PHP脚本它接受通过GET请求传递的两个参数‘pass’和’func’ ① $password trim($_GET[pass] ?? );从GET请求中获取名为’pass’的参数然后使用trim函数去除首尾空格并将结果赋给变量 $password。如果’pass’参数不存在则使用空字符串。 ② $func trim($_GET[func] ?? hint);从GET请求中获取名为’func’的参数然后使用trim函数去除首尾空格并将结果赋给变量$func。如果’func’参数不存在则默认使用字符串’hint’。 ③ function hint() {show_source(__FILE__);} 定义了一个名为hint的函数它的作用是显示当前文件的源代码使用了show_source函数。 ④ if (md5(\$password)21c6008facc283f8839d3b9fed640c15) {检查通过GET请求传递的’pass’参数的MD5哈希值是否等于指定的值。如果匹配进入条件块。 ⑤ function youwin() {echo file_get_contents(/flag);}在条件成立时定义了一个名为youwin的函数它的作用是输出名为’/flag’的文件的内容使用了file_get_contents函数。 ⑥ $func();调用根据’func’参数确定的函数。默认情况下如果’func’参数不存在将调用hint函数。 二、解题思路 常规思路就是绕过 md5 效验。但是这里是强比较显然无法绕过。尝试参数爆破看有没有除pass、func 额外的请求参数 bp 跑参数字典 果然发现了一个 file 请求参数使用 readfile() 函数读取文件尝试任意文件读取 尝试读取 flag, 发现存在拦截 readfile() 可以直接读取 php 文件且php代码不会被解析 读取当前文件源代码 尝试绕过 preg_match 正则传递数组参数 成功绕过但是 readfile() 不接受数组作为参数 网上没找到 readfile() 相关漏洞的文献资料。故放弃… 想起上上周看到 p 牛10月份写的一篇文章提到了 PHP 临时函数名特性 , 且给的题目案例跟这题很像。 2023年10月PHP函数小挑战 PHP在编译“函数定义”的时候会使用 zend_compile_func_decl 函数。这个函数有个关键的参数叫 toplevel这个参数表示当前的函数定义是否在顶层作用域。 顶层作用域 顶层作用域通常是指在全局范围内声明的变量、函数或类而不是在任何函数或控制结构内声明的。 ?php// 在顶层作用域定义的函数 function func1() {echo func1; }if (true) {// 在if条件判断内部定义的函数不是顶层作用域function func2() {echo func2;} }当toplevel为true的时候就是直接将当前函数名 lcname 加入函数表当 toplevel为false的时候使用 zend_build_runtime_definition_key 函数生成一个 key将 key 作为函数名加入函数表。也就是说根据函数所在的位置的不同是否是顶级作用域PHP编译时生成的函数名也会不同。 key 是按照如下算法生成 \0 name filename : start_lineno $ rtd_key_counter除了第一个 \0 字符后面四部分的含义如下 name 函数名filename PHP文件绝对路径start_lineno 函数起始定义行号以1为第一行rtd_key_counter 一个全局访问计数每次执行会自增1从0开始 最后保存在函数表中的函数名就是上面这个以 \0 开头的字符串。 以上是看 p 牛的文章简要梳理一下核心知识点。但是我发现一个问题 图中说只要构造\0 name filename : start_lineno $ rtd_key_counter 调用就可以了但是后面图中 payload 又是 %00 name filename : start_lineno $ rtd_key_counter 这种方式 为什么又变成了 %00 而不是 \0 呢小小的探究一下 前提windowsphp 7.4 要限制7.4版本稍后会说 vld.dll 内存监控插件 要下载和php版本相对应的 本地编写和比赛环境一样的代码文件名为965ee283f4c848ad99b0a7961ed89199.php使用php7.4 配合vld插件解释运行 ./php -d vld.execute0 -d vld.active1 E:\phpstudy_pro\WWW\php-learn\965ee283f4c848ad99b0a7961ed89199.php可以看到实际的临时函数名确实是以 %00 开头的。php 底层是由C语言编写的在C语言中\0和%00实际上有相似的作用都表示空字符null character。\0是C语言中用于表示空字符的一种方式通常用在字符串中作为字符串的结束标志。%00通常是在格式化输入输出函数中使用的格式说明符表示空字符。 我们请求参数被php接收并解释运行也是一个输入的过程所以要使用 %00 为开头构建。个人见解 为什么要限制 php7.4 这个版本去复现呢 我尝试使用 php7.3 版本配合vld插件去解释运行相同的代码得到如下 不同版本有差异性7.4 版本结尾更加具有规律性能爆破。 按照上面的思路按照 zend_build_runtime_definition_key 的算法计算出 key 作为函数名(rtd_key_counter 从 0 开始爆破) %00youwin/var/www/html/965ee283f4c848ad99b0a7961ed89199.php:7$rtd_key_counter比赛环境没了本地搭了一个。 发现爆破不出flag: trim 函数在接收参数的时候会去除掉字符串首尾的空白字符。可以加反斜杠绕过\%00 故要改写成如下 \%00youwin/var/www/html/965ee283f4c848ad99b0a7961ed89199.php:7$rtd_key_counterbp 开始爆破 rtd_key_counter 得 flag:
http://www.hkea.cn/news/14260178/

相关文章:

  • 免费建站工具有哪些重庆市建设工程信息网上查询
  • 怎么自己做个免费网站wordpress的搜索结果
  • 邢台移动网站建设费用深圳专业设计网站公司
  • 网站备案链接地址工商注册名字查询系统
  • 购物网站开发总结报告怎么用div布局做网站
  • 毕业设计做课程网站好个人网页设计作品论文
  • 用凡科做网站需要花钱吗中小学 网站建设 通知
  • 一个人建网站赚钱北京最大的装修公司排名
  • 长沙做网站nn微联讯点很好网站倒计时代码
  • 贵阳网站建设哪家好方舟网络推广公司口碑
  • 网站报名系统怎么做专业建站公司提供详细的功能描述及报价
  • 做学校网站如何在电商网站做市场调研
  • 备案通过的网站wordpress 获取当前文章栏目链接
  • wordpress 做手机站seo经理招聘
  • 有没有做推文的网站盐城网站开发渠道合作
  • 协会工作方案网站建设困难遵义营商环境建设局网站
  • 青岛网站建设与推广广州app开发公司排名十强
  • 南宁 网站开发123网址之家
  • 外贸公司网站如何做推广定制网站开发方案
  • 网站建设维护费合同范本硬件开发是什么意思
  • 媒体网站模版谭木记网页制作教程
  • 站长权重网站美化教程下载
  • 东莞做网站服务商access 可以做网站不
  • 邢台做网站推广费用张家港网站设计优化
  • 进贤南昌网站建设公司外贸网络营销公司
  • 网站运营有哪些岗位站群系列服务器做视频网站
  • 工商所什么网站可做年报东莞勒流网站制作
  • 住房城乡住房和城乡建设部网站首页成都优化网站哪家公司好
  • eclipse 网站开发学习网站在线支付接口申请
  • 网站建设月薪怎样提高网站的权重