随笔 - 51  文章 - 0  评论 - 4  阅读 - 19287

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

一、题目链接

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语句的基础,对于不懂的函数,需要查询资料明白含义。构造双写字符串比较巧,不过这也是在看懂代码的基础上想出来的。

 

posted on   MiracleWolf  阅读(343)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示