type
status
date
slug
summary
tags
category
icon
password
要是多点组合拳,或者条件苛刻些就好了 (
web351 简单认识
nginx/1.18.0 PHP/7.3.22
poc
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fd020c638-068d-4fbf-b99c-660460a53b31%2FUntitled.png?table=block&id=3acd4953-a2ae-418f-a487-3070a4570e83&t=3acd4953-a2ae-418f-a487-3070a4570e83&width=1500&cache=v2)
web352 永远相信美好的事情即将发生
nginx/1.18.0 PHP/7.3.22
分析:
协议必须是 http/https ,但过滤了 localhost 和 127.0.0
poc
preg_match 没传参可还行。。因为有
error_reporting(0)
,报错的地方恒为 False
…![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F31cc5005-e3c2-45cd-8975-0d670ea1f30f%2FUntitled.png?table=block&id=2b18f87c-9b89-426f-a194-e373f900e4ea&t=2b18f87c-9b89-426f-a194-e373f900e4ea&width=1500&cache=v2)
web353 数字绕过
nginx/1.18.0 PHP/7.3.22
分析:
协议必须是 http/https ,但过滤了 localhost 和 127.0.
这里有许多绕过
- 进制绕过
- 0.0.0.0 绕过
- ipv6绕过 这里不行
- 特殊地址绕过
这里有个小知识点
第一个 0 在linux系统中一般会解析成127.0.0.1 ,在windows 和 macos 中一般解析成0.0.0.0
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fffa3ac82-b8e7-475b-a58e-bc89ec6f6f4e%2FUntitled.png?table=block&id=82b23542-78b0-4d80-ba05-e723e6eaeaff&t=82b23542-78b0-4d80-ba05-e723e6eaeaff&width=1500&cache=v2)
web354 难点的数字绕过
nginx/1.18.0 PHP/7.3.22
了解到一个好玩的东西
IDNA
,不过这题用不上https://www.tr0y.wang/2020/08/18/IDN/
然后又了解到一个有趣的东西, 有免费的
http://sudo.cc/
可以解析到 127.0.0.1
白嫖。![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F31807f76-e88c-40cd-8f5c-8c9d5f76ec75%2FUntitled.png?table=block&id=c93ef2b6-931f-43cd-8a2b-baf368b97740&t=c93ef2b6-931f-43cd-8a2b-baf368b97740&width=1500&cache=v2)
题外:
虽然也可以用自己的域名或服务器,2333
web355 长度限制
nginx/1.18.0 PHP/7.3.22
主机名部分长度限制,可以用
http://0/flag.php
也可以用 http://127.1/flag.php
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fec553b7c-aaf6-4479-9071-a45e04308f74%2FUntitled.png?table=block&id=6e3cbd23-744b-4b92-ba80-f4eb22377129&t=6e3cbd23-744b-4b92-ba80-f4eb22377129&width=1500&cache=v2)
web356 长度限制
nginx/1.18.0 PHP/7.3.22
同 web255,只不过短了点
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F19d5f6ee-7ebc-4eb7-be35-cd0b0240b4ce%2FUntitled.png?table=block&id=4c6de1d7-3175-4bdf-9a61-785af51a3d40&t=4c6de1d7-3175-4bdf-9a61-785af51a3d40&width=1500&cache=v2)
web357 IP过滤器
nginx/1.18.0 PHP/7.3.22
分析:
先获取主机名对应的ip,然后用IP过滤器进行过滤
- FILTER_FLAG_NO_PRIV_RANGE - 要求值是 RFC 指定的私域 IP (比如 192.168.0.1)
- FILTER_FLAG_NO_RES_RANGE - 要求值不在保留的 IP 范围内。该标志接受 IPV4 和 IPV6 值。
即,主机名解析的 IP 不能是保留地址或者是内网 IP。
这时利用公网服务器进行重定向即可,为了以后的题目 fuzz 方便,写好参数
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6602f90f-02df-45f0-a30d-8e93d33570b4%2FUntitled.png?table=block&id=d99442e3-8216-43e8-96c3-868f02b991ca&t=d99442e3-8216-43e8-96c3-868f02b991ca&width=1500&cache=v2)
web358 白名单正则
nginx/1.18.0 PHP/7.3.22
分析,
之前一直没分析到这个
parse_url
函数的特性,有些时候有的时候 URL 会长这样![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F296d074d-d91f-4147-a5b1-bd64b14399c8%2FUntitled.png?table=block&id=272d4f0a-f604-4f74-8cf7-835a0eadb1a6&t=272d4f0a-f604-4f74-8cf7-835a0eadb1a6&width=942&cache=v2)
解析时,会把@进行分割,前面是用户,后面是主机名。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F88c26e09-21f2-4e14-bdee-15b46aecf310%2FUntitled.png?table=block&id=0b3fec44-8d33-4198-afb6-388ab0460ed5&t=0b3fec44-8d33-4198-afb6-388ab0460ed5&width=1500&cache=v2)
web359 打无密码MySQL
nginx/1.16.1 PHP/7.3.11
题目提示
打无密码的mysql为什么是无密码呢?https://paper.seebug.org/510/MySQL客户端连接并登录服务器时存在两种情况:需要密码认证以及无需密码认证。当需要密码认证时使用挑战应答模式,服务器先发送salt然后客户端使用salt加密密码然后验证;当无需密码认证时直接发送TCP/IP数据包即可。所以在非交互模式下登录并操作MySQL只能在无需密码认证,未授权情况下进行,本文利用SSRF漏洞攻击MySQL也是在其未授权情况下进行的。
随便写点东西 Login 一下,然后有个
returl
写个 baidu,发现可以请求 baidu![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff9ed34e6-359a-4311-b8af-a34b5f3e39f0%2FUntitled.png?table=block&id=3bfab6e1-3cbd-4437-8062-74ca1d6e15ad&t=3bfab6e1-3cbd-4437-8062-74ca1d6e15ad&width=1500&cache=v2)
一般 SSRF 打内网应用主要还是通过协议,比如用的比较多的是 gopher
具体怎么做呢?
细心的同学可能发现,无论是用 gopher 攻击 redis、mysql、还是 ftp,这些主要都是基于 tcp 协议为主。这和 gopher 协议的基本格式有关
因为,如果想要打 MySQL 就需要知道 MySQL 通信时的 TCP 数据流,才能知道要怎么和 MySQL 通信,这里可以通过 Wireshark 抓包来分析
可以参考下面链接的 0x02 mysql协议分析部分
不过这里有个更好用的工具
他包含常见的应用 gopher 数据包的格式构造, 原理也是通过 Wireshark 抓包分析,然后写脚本。
依次输入用户和要执行的SQL语句
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9837ff74-107e-471d-a618-e54ee2780d20%2FUntitled.png?table=block&id=8c5b54cb-e600-44f1-9645-eb276898ec1c&t=8c5b54cb-e600-44f1-9645-eb276898ec1c&width=1500&cache=v2)
当然,除了满足MySQL未授权外,还需要MySQL开启允许导出文件以及知道网站根目录,本漏洞才能成功利用,缺一不可。
这个
/var/www/html
目录是如何知道的呢?应该是爆破的…生成的 POC 里,
_
字符后面的内容还要 URL编码一次,因为 PHP接收到POST或GET请求数据,会自动进行一次URL解码,然后,比如 %00 解码后,PHP会直接截断。。最终 POC
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F31e12414-012f-4263-8f83-55df89bd2912%2FUntitled.png?table=block&id=1ae8688c-1643-4765-ae7f-84c80cdea335&t=1ae8688c-1643-4765-ae7f-84c80cdea335&width=1500&cache=v2)
然后在 c.php 里面
cat /flag.txt
即可![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F34cff33c-2fbb-4a94-ad62-4c6a213d7b11%2FUntitled.png?table=block&id=6668d557-4129-4f1e-94ea-c80c25194805&t=6668d557-4129-4f1e-94ea-c80c25194805&width=1500&cache=v2)
flag
ctfshow{d9cfb450-02d7-4b13-9170-4b9306d01a34}
顺便嫖一下 check.php 代码 (
当然还可以有其他利用方式,比如构造 POST 请求进行 SQL注入,文件上传等
web360 打Redis
nginx/1.18.0 PHP/7.3.22
题目提示
打redis
和上题差不多,也是用 Gopherus 打 redis
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fcd35a770-eafb-48fe-bbfc-42723797727e%2FUntitled.png?table=block&id=6e12c9fb-ecc0-4bd4-b863-ae70fca06d8b&t=6e12c9fb-ecc0-4bd4-b863-ae70fca06d8b&width=1500&cache=v2)
URL编码一下
_
后面的内容默认生成的 webshell 在
shell.php
中![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6a3f1169-8dab-4c8d-b644-39c54f83a85b%2FUntitled.png?table=block&id=d0ea1333-2676-419f-bb78-cfd7fee3d9c0&t=d0ea1333-2676-419f-bb78-cfd7fee3d9c0&width=1500&cache=v2)
发的包会超时,不过没事,
shell.php
是会生成的。最后
cat /flaaag
即可![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2fe961e8-c954-403d-9629-77470ace60a1%2FUntitled.png?table=block&id=44466ce7-336c-4ca1-8113-7a5dcb90eb2c&t=44466ce7-336c-4ca1-8113-7a5dcb90eb2c&width=1500&cache=v2)
一些参考的题解