欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

“百度杯”CTF比赛 2017 二月场--web **-1 writeup

程序员文章站 2024-03-19 23:02:16
...

题目描述

“百度杯”CTF比赛 2017 二月场--web **-1 writeup

解题思路

创建赛题,点击链接得到一段源码:

<?php
include "flag.php";
$a = @$_REQUEST['hello'];//REQUEST可以接收来自GET或者POST的数据
if(!preg_match('/^\w*$/',$a )){//preg_match 函数用于执行一个正则表达式匹配,返回 pattern 的匹配次数
  die('ERROR');
}
eval("var_dump($$a);");// var_dump() 函数返回变量的数据类型和值
show_source(__FILE__);
?>

这个代码的作用是如果匹配正则表达式/^\w*$/,就打印变量$$a
$a是hello,$$a是六位变量$hello
由于$a在函数内,要想访问$hello,则需要将其改为超全局变量GLOBALS;
即,在URL后面加?hello=GLOBALS;
输出语句变为

eval("var_dump($$a);");
eval("var_dump($hello);");
eval("var_dump($GLOBALS);");

得到FLAG

“百度杯”CTF比赛 2017 二月场--web **-1 writeup
flag{1ba2ca18-ebbc-4e48-89f2-514d1ae7379a}