当前位置: 首页 > news >正文

Register Globals (Exploit, PHP, Training)

介绍

这题所需的知识点是:register global---将所有提交的参数注册为全局变量,进而将某些变量的值覆盖为我们所需要的。更多参考PHP: Using Register Globals - Manual

分析

这题和mysql I那题很类似,但是由于加了一个判断:

if (strtolower($login[0]) === 'admin') {
        $chall->onChallengeSolved(GWF_Session::getUserID());
}

判断中的$login[0]在28行已经被赋值为$_POST['username']

所以不能通过将username的值提交成admin'#来完成这题。

解决

从32行开始,有下面这段代码:

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());
        }
}

意思是:如果$login[0] === 'admin',那么解题成功。

由于在28行已经有下面代码:

$login = array($_POST['username'], (int)$row['level']);

因而,$login[0]已经被赋值为$_POST['username'],但是可以通过全局变量来覆盖它。

在这里,程序会将GET等语句得到的变量注册成为全局变量,就可以覆盖掉源代码中的变量值。

因此在地址栏输入下面链接,回车即可成功解题

http://www.wechall.net/challenge/training/php/globals/globals.php?login[0]=admin

参考:
WeChall Journal | 陈文青
WeChall 总结 | 心 空

相关文章:

  • 白帽子讲web安全 编码问题sql注入的 笔记
  • 给新浪博客修改博客名字 超级简单图文教程
  • 理解 白帽子讲web安全 ‘alert(\““ + x + “\“)‘
  • 一行JavaScript代码 将 HTML实体 转成 字符
  • maven Filtering true 作用
  • mysql sql语句创建一个简单表
  • 禁止 Apache 默认显示网站目录结构 的方法
  • Typecho Fatal error: Using $this when n...
  • 启用CDN 出现pjax动画失效问题 的解决方法
  • Typecho 配置使用 腾讯CDN服务 的简单教程
  • WWW-Basics (HTTP, Training) 最完整的做法
  • Genymotion 拖入apk 提示 invalid filename
  • 屏蔽 手机QQ黄钻官方团队总送礼物 的简单方法
  • 解决 ubuntu18 打开谷歌浏览器时需要输入密码
  • mybatis parametertype可以不填么
  • @jsonView过滤属性
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Java深入 - 深入理解Java集合
  • mysql innodb 索引使用指南
  • ReactNative开发常用的三方模块
  • tab.js分享及浏览器兼容性问题汇总
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 技术胖1-4季视频复习— (看视频笔记)
  • 聊一聊前端的监控
  • 目录与文件属性:编写ls
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • HanLP分词命名实体提取详解
  • ()、[]、{}、(())、[[]]命令替换
  • (12)Hive调优——count distinct去重优化
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (8)STL算法之替换
  • (十)c52学习之旅-定时器实验
  • (五)MySQL的备份及恢复
  • (一)基于IDEA的JAVA基础10
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • ***测试-HTTP方法
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 受管制代码
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET委托:一个关于C#的睡前故事
  • .sh 的运行
  • @media screen 针对不同移动设备
  • [04] Android逐帧动画(一)
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [C++] 统计程序耗时
  • [CDOJ 838]母仪天下 【线段树手速练习 15分钟内敲完算合格】
  • [CF407E]k-d-sequence