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

花垣县建设局网站网站怎么产品做推广

花垣县建设局网站,网站怎么产品做推广,2023年防疫新政策,系统开发的方法php特性 1.先看代码#xff0c;提示了next.php#xff0c;绕过题目的要求去回显next.php 2.可以看到要求存在text内容而且text内容强等于后面的字符串#xff0c;而且先通过这个if才能执行下面的file参数。 3.看到用的是file_get_contents()函数打开text。想到用data://协… php特性 1.先看代码提示了next.php绕过题目的要求去回显next.php 2.可以看到要求存在text内容而且text内容强等于后面的字符串而且先通过这个if才能执行下面的file参数。 3.看到用的是file_get_contents()函数打开text。想到用data://协议可以想成创建了临时文件读取 payload: ?textdata://text/plain,I have a dreamfilephp://filter/convert.base64-encode/resourcenext.php data:text/plain详解补充 Data URI 的格式十分简单如下所示 data:[mime type][;charsetcharset][;base64],encoded data 第一部分是 data: 协议头它标识这个内容为一个 data URI 资源。 第二部分是 MIME 类型表示这串内容的展现方式比如text/plain则以文本类型展示image/jpeg以 jpeg 图片形式展示同样客户端也会以这个 MIME 类型来解析数据。 第三部分是编码设置默认编码是 charsetUS-ASCII, 即数据部分的每个字符都会自动编码为 %xx关于编码的测试可以在浏览器地址框输入分别输入下面两串内容查看效果 // output: ä½ å¥½ - 使用默认的编码展示故乱码 data:text/html,你好   // output: 你好 - 使用 UTF-8 展示 data:text/html;charsetUTF-8,你好 // output: 浣犲ソ - 使用 gbk 展示浏览器默认编码 UTF-8故乱码 data:text/html;charsetgbk,你好 // output: 你好 - UTF-8 编码内容先使用 base64 解码然后展示 data:text/html;charsetUTF-8;base64,5L2g5aW9 第四部分是 base64 编码设定这是一个可选项base64 编码中仅包含 0-9,a-z,A-Z,,/,其中 是用来编码补白的。 最后一部分为这个 Data URI 承载的内容它可以是纯文本编写的内容也可以是经过 base64编码 的内容。 注意题外补充 通过data://text/plain协议来进行漏洞利用。 ?filedata://text/plain,?php phpinfo();? 发现不能使用而且自己的代码没有问题啊不知道为什么 然后测试 ?filedata://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8 发现还是错误的 然后测试下面的。成功~~~ ?filedata://text/plain;base64,PD9waHAgc3lzdGVtKCJkaXIiKTs/Pg 总结 通过实验发现这个可能是编码的问题因为?php phpinfo();?在编成base64的时候出现了。而浏览器不认识号。所以解决方法 不写后面的? 因为PHP里面其实不需要写后面的 前面的号就已经说明结束了。如果没有号就必须写?作为结束。 添加空格改变base64编码。 将号换成%2b 所以其实不需要通过base64编码来实现 将?php phpinfo();?改变成url编码。这样浏览器可以识别 回到题目 得到页面源码接着base64解码 ?php $id $_GET[id]; $_SESSION[id] $id; ​ function complex($re, $str) {return preg_replace(/( . $re . )/ei,strtolower(\\1),$str); } foreach($_GET as $re $str) {echo complex($re, $str). \n; } function getFlag(){eval($_GET[cmd]); } id参数可以不管 可以看出先传参执行complex来执行getFlag()获得flag 可以先看下面是其中代码解释 在页面传参后使$re值为参变量123 $str值为${getflag()}来传入complex函数 这里解题的关键就是preg_replace()/e存在代码执行漏洞 preg_replace (正则表达式, 替换成什么, 目标字符串, 最大替换次数【默认-1无数次】, 替换次数) 意思就是就是把目标字符串 根据正则表达的要求 替换成什么 在此之前说明一些东西 双引号 ?php echo {${phpinfo()}}; ? 出现 单引号 ?php echo {${phpinfo()}}; ? 这是因为双引号里面如果包含有变量php解释器会将其替换为变量解释后的结果单引号中的变量不会被处理。 注意双引号中的函数不会被执行和替换 在看一个例子 ?php preg_replace(/(.*)/ei, strtolower(\\1), ${phpinfo()}); ? 我们可以控制第一个和第三个参数第二个参数固定为 strtolower(\1) 字符串。使用 strtolower(\\1)它将匹配的内容转换为小写。 我们先看第二个参数中的\1 \1实际上就是 \1而 \1 在正则表达式中有自己的含义 反向引用 对一个正则表达式模式或部分模式 两边添加圆括号 将导致相关 匹配存储到一个临时缓冲区 中 所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。 缓冲区编号从 1 开始最多可存储 99 个捕获的子表达式。每个缓冲区都可以使用 \n 访问 其中 n 为一个标识特定缓冲区的一位或两位十进制数。 \1 实际上指定的是第一个子匹配项。而这段代码里面的第一个子匹配项就是${phpinfo()}。这样我们就执行了phpinfo。 /e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码在适当的逆向引用替换完之后 因此可以通过preg_replace 的 /e 修正符会将 replacement 参数当作 php 代码并且以 eval 函数的方式执行 其中在正则表达式中/(.*)/ei 是一个匹配任意字符.零次或多次*并将匹配的内容放入一个捕获组中的正则表达式。 回到题目 当我们通过/?.*{${phpinfo()}}方式传入却无法执行。在var_dump输出一下$_GET数组 var_dump($_GET); 这里我们发现了.变成了_这是因为php会将传入的非法的参数名转成下滑线所以我们的正则匹配才会失效。 当非法字符为首字母时只有点号会被替换成下划线也使用\s Payload: \S*${phpinfo()} 最后Payload: /next.php?\S*${getflag()}cmdsystem(cat /flag);
http://www.pierceye.com/news/198864/

相关文章:

  • cdr做好排班怎么做网站我的免费网是个什么网站
  • 如何做别人网站镜像地区性中介类网站建设
  • 做的网站怎么查看点击率安装wordpress主题失败
  • 网站历史权重查询免费的黄冈网站有哪些下载软件
  • 宝安三网合一网站建设河北智能网站建设平台
  • 在百度上做网站有用吗wordpress环境虚拟机安装
  • 怎么做网站图片链接中元建设网站
  • 邢台做网站优化价格网站基本维护
  • 网站集群建设价格wordpress 加文章列表
  • 官方网站案例用ps做网站主页
  • 做名片的网站推广型网站建设销售
  • 河南省建设执业资格注册中心网站网站推广公司 sit
  • 来年做那个网站致富网站工作室 需要什么手续
  • 宜兴网站建设哪家好网站建设设计公司排名
  • 婚庆公司网站怎么做wordpress 首页置顶
  • 电商网站开发人员结构江苏住房和城乡建设厅网站首页
  • 快速建站的模板陕西省建设网三类人员继续教育
  • 谷歌浏览器对做网站有什么好处广州最好网站策划
  • 西安北郊做网站重庆手机软件开发
  • 怀化刚刚发生的大事台州seo服务
  • 织梦做的网站打开空白巴中网站制作公司
  • 如何使用jq做弹幕网站设计漂亮的网站
  • 电商网站是获取流量广西南宁网站排名优化
  • 网站板块设计有哪些开发网站监控推荐
  • 江西建设局网站广东网站建设类公司
  • 深圳网站制作设计艾佳工业设计
  • 怎么查看网站啥系统做的宁波网站设计制作
  • 温岭手机网站建设合肥企业展厅设计公司
  • 网站建设和制作怎么赚钱外贸网站建设服务器
  • 长沙自动化网站建设瑞安地区建设网站