bugku--web

目录

一.变量1

二.源代码

 三.这好像需要密码


一.变量1

 

 

flag In the variable !                 //flag在变量中
 <?php   
error_reporting(0);                    // 关闭php错误显示
include "flag1.php";                   // 引入flag1.php文件代码
highlight_file(__file__);              //对文件进行语法高亮显示
if(isset($_GET['args'])){              // 条件判断 get方法传递的args参数是否存在 
    $args = $_GET['args'];             //赋值给变量  $args
    if(!preg_match("/^\w+$/",$args)){  // /^开始, \w表示任意一个单词字符,即[a-zA-Z0-9_] ,+将前面的字符匹配一次或多次,$/结尾
        die("args error!");            //输出 args error! 
    }
    eval("var_dump($$args);");         // 将字符串作为php代码执行结尾加分号 var_dump()函数 显示关于一个或多个表达式的结构信息,包括表达式的类型与 值。数组将递归展开值,通过缩进显示其结构。$$args 可以理解为$($args)
}
?>

eval()函数存在命令执行漏洞  我们的目标是查看flag1.php中的flag 首先想到的是本地包含漏洞查看源码  或者上传一句话木马等思路 。而本题条件判断加了正则表达式判断,过滤了括号和引号等字符。无法构造!  但输出时是   $$args

我们想到构造 php中超全局变量 $GLOBALS  ,


PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。

php globals_PHP $ GLOBALS(超级全局变量),带有示例_cumtb2002的博客-CSDN博客

 var_dump()函数 显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

 如果是数组,就以数组的方式输出 变量类型+变量               本题就是以数组的方式输出。

 

有些人认为:global和$GLOBALS[]只是写法上面的差别,其实不然。

 前者为变量实体 后者为别名引用

eg:

<?php
$var1 = 1;
function test(){
unset($GLOBALS['var1']);
}
test();
echo $var1;
?>

因为$var1被删除了,所以什么东西都没有打印。

<?php
$var1 = 1;
function test(){
global $var1;
unset($var1);
}

test();
echo $var1;
?>
意外的打印了1

二.源代码

 

 他都让我看咯,那就看哈子

 发现有一串url编码

 function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b

 aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();

return!1}}document.getElementById("levelQuest").οnsubmit=checkSubmit;

 54aa2

解完码之后分析一下代码

var p1 = ' function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b';
var p2 = 'aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").οnsubmit=checkSubmit;';
eval(unescape(p1) + unescape(' 54aa2' + p2));

 通过分析源码可以知道输入框中传递参数67d709b2b 54aa2 aa648cf6e87a7114f1可以得到flag

 三.这好像需要密码

 

 看着好像直接用爆破就可以做,但是发现爆破需要的时间太长了,于是乎,搜了一下有没有直接的脚本,发现有大佬编写了

5位数纯密码爆破脚本-记录_5位数字的psswd密码本_hei&bai的博客-CSDN博客

大佬就是大佬,爆破速度很快

 

 爆破出来了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值