首页 > 其他分享 >CTFer成长记录——Web专题·双写绕过

CTFer成长记录——Web专题·双写绕过

时间:2023-06-27 17:46:18浏览次数:57  
标签:Web what work flag CTFer 字符串 php 替换 双写

一、题目链接

http://a.y1ng.vip:1126/employeeswork/

二、题意解析

  访问该网址:

  发现是一些不明觉厉的英文:

  关于Y1ng公司所有员工的通知:

  如果你认为你对自己的工作感到满意,你可以使用函数work_worthy()。

  但是是否值得,只会由我的机器人Precoce de Malingre来判断。

那么点开它给的链接试试:

给了一些php代码,还有个include'flag.php'的特征,那么可以尝试能否直接访问flag.php以获取flag。

结果是空白页面,查看源代码发现也没有任何东西。那么说明直接访问flag.php是行不通的。

接着回到题目所给的PHP代码中,include语句的作用类似C语言中的#include ,都是使用一个文件的内容。那么这里题目可能是想让我们从flag.php中输入东西,然后根据下面的判断语句来获取更多的信息。

这里直接执行了source=true,于是有了我们看到含有代码的页面,那么如果我们不对source进行赋值,改对work进行赋值,也许就可以获取flag了。

四、解法步骤

代码分析:

 1 include 'flag.php';
 2 if (isset($_GET['source']) && $_GET['source'] == 'true') {
 3     show_source(__FILE__);
 4     exit;
 5 }
 6 if (isset($_GET['work'])) {
 7     $what_is_your_attitude_of_your_work = $_GET['work'];  //将work的值赋值给what_is变量
 8     $what_you_say_can_gain_more_income = "y1ng_pretty_handsome";//这里将what_you变量的值赋值为y1ng_pre
 9     $what_Precoce_de_Malingre_said = preg_replace(        //接着对what_Pre利用preg_replace()函数进行赋值。
10 "/$what_you_say_can_gain_more_income/",'', $what_is_your_attitude_of_your_work 11 );
    // $temp = preg_replace(A,B,C)函数接受三个参数,A表示搜索模式:可以是字符串或字符串数组
                          B表示替换结果,C表示要搜索并替换的字符串
  因此preg_replace(A,B,C)函数的的意义是:在what_is中进行查找,找到what_you的内容,并将其替换为空,然后最后的结果赋值给what_Pre
   12 if ($what_Precoce_de_Malingre_said === $what_you_say_can_gain_more_income) {
      //只要替换后的结果仍然等于替换前的结果,那么执行work_worthy()函数 13 work_worthy(); 14 } 15 } 16 ?>

我们想执行最后的判断语句,就必须让替换后的what_is等于替换前的what_you,换句话说,我们需要传入work的值,使得它经过what_you的替换后等于what_you。

但是一般情况下替换后,字符串就会改变,这里也不是空替换,必须替换一个字符串。

这时候可以使用双写该字符串,让函数替换掉重复的字符串,这样就达到了目的。

 

这样我们将what_you的值传入work两遍(在任意位置再复制一遍即可),那么替换函数会将what_you的内容替换成空字符串,于是就可以达到替换前后一致的效果,最后得到flag:

四、总结

这道题稍微难点,需要一些看懂php语句的基础,对于不懂的函数,需要查询资料明白含义。构造双写字符串比较巧,不过这也是在看懂代码的基础上想出来的。

 

标签:Web,what,work,flag,CTFer,字符串,php,替换,双写
From: https://www.cnblogs.com/miraclewolf/p/17509510.html

相关文章

  • Webservice
    http://www.blogjava.net/zjhiphop/archive/2009/04/29/webservice.htmlhttp://m.blog.sina.com.cn/s/blog_7ba28b620100ti0j.html?sudaref=login.sina.com.cn#page=1     ......
  • CTFer成长记录——web专题·一句话木马
    一、题目链接http://a.y1ng.vip:1126/chopper/二、题意解析打开网址,发现网页提示:明显是一个一句话木马的语句,而且可以猜测网页后台已经有php木马文件,我们只需要连接上就行。三、解题步骤使用antSword等Webshell管理工具,来对该后门程序进行链接:这里用antSword,复制该网页的域......
  • 软件测试|web自动化测试神器playwright教程(三十四)
    前言selenium有一个爬虫特别喜欢的功能,就是driver.page_source功能,它可以打印整个html页面的内容,我们可以从整个页面的内容中提取出我们想要的内容,playwright同样支持打印整个html页面的内容。获取更多技术资料,请点击!获取完整页面html内容playwright提供了page.content()方法来获取......
  • 功能测试——web功能测试点
    WEB测试方法总结-笔记一、输入框1、字符型输入框:(1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时,使用“粘贴、拷贝”功能尝试输入。(2)长度检查:最小长度、最大长度、最小长度-1、最大长度+1、输入超......
  • web.xml
    <?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.o......
  • Vite、esbuild 以及 webpack 比较
    一、前言这三者的定位都有些不同,不好直接比较,但是做的事情还算类似,因此放一块拿来说说。vite是新生技术,由其快速优秀的开发体验有取代webpack的趋势,但是它并不如webpack打包工具那么灵活,vite内部的打包工具是采用的esbuild,其性能之高也来自于此。二、Vite2.0特性基于......
  • Design a Drum-kit web app using JavaScript Javascript设计drum-kit项目
    Weallmusthaveseenadrumkitinsomeconcertorelsewhere,itisacollectionofdrums,cymbalsandotherpercussioninstruments.Buthaveyoueverimaginedmakingthatdrumkitonyourownvirtuallywiththehelpofsomescriptinglanguage?Well,so......
  • .NET Core WEB API中参数的模型绑定方式
    .NETCoreWEBAPI中参数的模型绑定方式有以下几种:参考文献:.NETCoreWEBAPI中接口参数的模型绑定的理解-枫叶456-博客园(cnblogs.com)微软官方说明文档 FromForm:当请求属于表单提交,也就是content-type为application/x-www-form-urlencoded,则必须给参数加上From......
  • C# WebApi+Swagger
    1、新建一个webapi项目 2、添加swagger的NuGet包 3、右键项目--》属性--》生成 输出勾选:XML文档文件,如果没有自动填充好路径,需要自己填写一下,文件名可以自己取 4、打开App_Start文件夹下的SwaggerConfig.cs文件,新增一个如下方法:privatestaticstringGetXmlComm......
  • 微信小程序连接websocket随记
    微信小程序需要上报经纬度到服务器,采用workman作为Websocket服务,记录一下步骤:1、修改start_gateway.php文件//$gateway=newGateway("tcp://0.0.0.0:8282");$gateway=newGateway("websocket://0.0.0.0:8282");2、在小程序后台配置socket域名(开发-> 开发管理-> 开发设......