之前立志做出需要编码解决和时间相关的那道CTF题目,但是这次没找到,相关人士找到了麻烦告诉我一声。本次再学习一下子关于正则表达式和PHP的相关知识。开课咯-。-
 
刚看题目就发现提示,说题目在变量中,emmmmmmmmmmm。太菜,不懂。

好,分析代码。
分析代码得知思路是,首先得到GET到的参数【args】的值,然后要求此参数必须符合正则表达式的规范,然后才能显示数据,才可能获取到flag-。-
怎么获得flag呢?知识匮乏,难以想象。【剧透 】:PHP的全局变量可以获取到目前所有的变量信息。详细步骤如下。
 
首先,分析preg_match(...)方法
       preg_match( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ),返回 pattern 的匹配次数。它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后将会停止搜索。详情查看http://php.net/docs.php
 
本题的pattern是"/^\w+$/",这啥意思!!!哦对,正则表达式。
第二步,分析正则表达式
^ 表示开头,是转义字符,使用时在前面加"\"
$ 表示结束,是转义字符,使用时在前面加"\"
\w 任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个
       清晰明了,这段正则表达式的意思就是字符全部由【A~Z,a~z,0~9,_ 】组成,肯定不能为空。
 
       args倒是知道设置范围了,可如何获得flag呢?看见【include "flag1.php";】没,我猜测, 此文件提供了flag值,获取方法就是【通过输出全局变量来输出flag的值】。
第三步,var_dump(...)与全局变量的联合
       题目是var_dump($$args)。
var_dump This function displays structured information about one or more expressions that includes its type and value.这儿如果感觉抽象就看示例http://php.net/manual/en/function.var-dump.php
       那题目中var_dump($$args)的意思就是【将args的值作为变量v,输出变量v的类型和数值】。那要输出flag值,关键就是使变量v中存在flag的值。第二步末尾提示了全局变量拥有所有值。则变量v的名字为全局变量就OK了,此时args的值为全局变量。咱们这是PHP代码,PHP中全局变量就是GLOBALS。
$GLOBALS References all variables available in global scope.
       结合现有题目,args=GLOBALS,实践后成功获取flag,非常棒-。-

 

http://www.bugku.com:Bugku——变量1(http://120.24.86.145:8004/index1.php)的更多相关文章

  1. http://www.bugku.com:Bugku——备份是个好习惯(http://120.24.86.145:8002/web16/)

      看了bugku的这道题,陌生又熟悉.     题目首先说[备份是个好习惯],访问网站只有一串字符,,,,,emmmmm,这句话表明人家经常做备份,所以咯,肯定在网站哪里备份有网页信息.嘻嘻   1 ...

  2. Bugku——Flag在index里(http://120.24.86.145:8005/post/)

    Bugku——Flag在index里(http://120.24.86.145:8005/post/) 进入题目发现有一个file参数,查看源码,发现该参数可以包含php文件,并且题目提示,flag在 ...

  3. http://www.bugku.com:Bugku——PHP伪协议+魔幻函数+序列化的综合应用(http://120.24.86.145:8006/test1/)

      这一道题目,幸好俺有基础知识护体,不然还真干不掉.     首先,登录看题目,取消隐藏代码的注释.可知可输入三个参数txt.file和password并进行逻辑判断:应该让txt==‘welcom ...

  4. http://www.bugku.com:Bugku——jsfuckWEB5(http://120.24.86.145:8002/web5/index.php)

      今天又做了bugku上面的一道题.使用到了jsfuck,它是什么捏?   它是Javascript原子化的一种简易表达方式,用[]()!+就可以表示所有的Javascript字符,不依赖于浏览器. ...

  5. win10 如何配置 java jdk1.8环境变量(2017.2.24)

    win10 如何配置 java jdk 环境变量 这里的win10 为全新安装的系统 一.安装 下载 jdk 64位 windows 版本安装(默认安装) 默认安装的路径: C:\Program Fi ...

  6. Bugku web(1—35)

    1.web2 打开网页: 哈哈,其实按下F12你就会发现flag. 2.计算器 打开网页,只是让你输入计算结果,但是发现只能输入一个数字,这时按下F12,修改一下参数,使之可以输入多个数字,修改后输入 ...

  7. Bugku-CTF之变量1

    Day9 变量1 http://123.206.87.240:8004/index1.php      

  8. CTF中遇到的php

    1.if(eregi("hackerDJ",$_GET[id])) {   //eregi字符串对比 echo("<p>not allowed!</p& ...

  9. 记bugku的——“welcome to bugkuctf”

    今天终于拾起来ctf的比赛了,开始了练习之旅.今天写一道bugku上的题目wp,属于利用php源码泄漏的题目吧,我觉得不是很简单...所以把自己的思路放上来. 题目源头:http://120.24.8 ...

随机推荐

  1. MD5类(MD5Helper)

    项目中经常需要使用到MD5来进行加密 代码: namespace MyProject.Common { public class MD5Helper { /// <summary> /// ...

  2. node 支持es6

    安装  babel-cli, 全局安装 npm install babel-cli -g 然后 在工程目录下 安装 npm install babel-cli --save npm install b ...

  3. ArrayList、LinkedList、Vector的区别。

    1. 对于ArrayList与Vector来说,底层都是采用数组方式来实现的 2. ArrayList,LinkedList是不同步的,即线程不安全,而Vector是的.(线程安不安全) 3. Lin ...

  4. Spring boot 配置嵌入式Servlet容器

    SpringBoot默认使用Tomcat作为嵌入式的Servlet容器 1.修改和server有关的配置(ServerProperties[也是EmbeddedServletContainerCust ...

  5. BBS--首页、个人站点、ORM

    首页 首页文章排版渲染 登录不登录两种情况 1.bootstrap导航条 点击session 创建登陆后创建人物图表 bootstrap--样式 <li><a href=" ...

  6. English-英语学习杂志及资料

    [英文原版杂志] >>经济学人 英文原版PDF+双语版+文本音频 超全下载!http://bbs.zhan.com/thread-8443-1-1.html?sid=2004 >&g ...

  7. Java重写equals方法(重点讲解)

    为什么equals()方法要重写? 判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象.这样我们往往 ...

  8. linux 覆盖可执行文件的问题

    测试环境是3.10.0 内核. 有一次操作中,发现cp -f A B执行的时候,行为不一样: 当B没被打开,则正常覆盖B. 当B是被打开,但没有被执行,则能覆盖, 当B被打开,且被执行,则不能直接覆盖 ...

  9. map转换成JSON的3种方法

    http://www.json.cn/JSON格式校验 1 json-lib <dependency> <groupId>net.sf.json-lib</groupId ...

  10. ReactiveX 学习笔记(7)聚合操作符

    Mathematical and Aggregate Operators 本文的主题为处理 Observable 的聚合操作符. 这里的 Observable 实质上是可观察的数据流. RxJava操 ...