原理
利用条件 (1)web服务器存在SSRF漏洞; (2)web服务器有访问本地或远程服务器的权限; 存在位置 一般是web服务器提供了从其他服务器获取数据的功能。 (1)通过URL分享网页内容 (2)在线翻译 (3)通过url对图片的加载和下载 (4)转码服务 利用实验,开启方法
源码中接收了一个post传递的url参数,用hackbar去构造攻击payload
```php url=http://127.0.0.1/flag.php
3. 即可出现flag
### ctfshow352
### parse_url函数的作用
`parse_url()` 是 PHP 语言中的一个函数,它用于解析 URL 地址并以关联数组的形式返回各个组成部分。在解析过程中,会将 URL 字符串拆分成协议名、主机名、端口号、路径、查询字符串和片段标识等多个组成部分,并分别保存到返回的关联数组中。这个函数不会对 URL 解码,所以可以被用来解析包含特殊字符的 URL。
具体而言,`parse_url()` 函数的格式为:
phpCopy Codearray parse_url ( string url [, int component = -1 ] )
其中,`$url` 参数是要解析的 URL 地址字符串,`$component` 参数可选,表示要返回的 URL 组件,取值范围为 `PHP_URL_SCHEME`、`PHP_URL_HOST`、`PHP_URL_PORT`、`PHP_URL_USER`、`PHP_URL_PASS`、`PHP_URL_PATH`、`PHP_URL_QUERY` 或 `PHP_URL_FRAGMENT`。如果不指定 `$component` 参数,则函数将返回包含所有 URL 组件的关联数组。
例子:
phpCopy Code$url = “https://www.example.com/test.php?id=123#section4";
$parsed_url = parse_url($url);
print_r($parsed_url);
输出结果为:
Copy CodeArray ( [scheme] => https [host] => www.example.com [path] => /test.php [query] => id=123 [fragment] => section4 )
### scheme
scheme:协议
### curl
Curl(全称为 "Client Url Library")是一个被广泛应用于互联网通信的工具和库,它支持各种传输协议,比如FTP、HTTP、SMTP等。在PHP中,curl以扩展库的形式提供,开发者可以借助curl扩展实现各种基于网络协议的操作,例如下载文件、发送HTTP请求、获取API数据等等。
常见的curl函数有:
- `curl_init()` - 初始化一个 curl 会话
- `curl_setopt()` - 设置 curl 相关选项
- `curl_exec()` - 执行 curl 会话
- `curl_close()` - 关闭curl 会话
`curl_setopt()` 函数可以设置不同的选项来定制 curl 的行为。例如:
- `CURLOPT_URL` 设置URL地址
- `CURLOPT_RETURNTRANSFER` 返回结果而不是输出到页面
- `CURLOPT_POST` 使用POST请求方式
- `CURLOPT_POSTFIELDS` POST请求提交的数据
- `CURLOPT_HEADER` 包含响应头信息
- `CURLOPT_SSL_VERIFYPEER` 是否验证证书等等
以上只是 curl 的一些基本使用方法,通过查阅Curl文档[[1](https://curl.se/docs/manpage.html)],你还可以了解到使用curl库还能够支持更多的功能比如: 代理、cookie设置、安全认证、文件上传等。
在 PHP 中,我们可以通过 curl 扩展的一系列函数来实现 curl 功能,并且这些函数具备很高的灵活性和可扩展性,可以根据不同的需求和场景完成各种网络请求操作。
#### 题目
1. 将127.0.1替换为127.0.0,127.1等都可以
2. 之前写过一个golang后端的项目,用的0.0.0.0,既包含了localhost,也包含了127.0.0.1,这里可以绕过字符过滤
3. 
### web353
1. 可以将127进行16进制编码,编码为0x7f
2. 也可以转换为其它进制
3. 127.0.0.1可以写为127.1也可以绕过
4. ```
url=http://0x7f.0.0.1/flag.php
5. 攻击payload 6. ``` url=http://www.ctfer.xyz/a.php
``` /^http://ctf..*show$/i
3. 匹配的是以http://ctf.开头,以show结尾的
4. ```url
http://ctf.@127.0.0.1/flag.php?show
使用@作为分隔符,用于指示用户名和域名之间的分界。用于url的基本身份验证,指定用户名和密码来访问资源,例如:http://username:password@example.com
类似于ssh登录目标主机一样
``` ssh [options] [username@]hostname command ssh -p 22 username@192.168.1.100 # 使用22端口连接到主机192.168.1.100 ssh -i ~/.ssh/id_rsa user@example.com ssh user@example.com ls -al /home/user # 登录并执行远程命令
8. 使用@来分隔username和hostname
### web359
1. 工具下载地址https://github.com/tarunkant/Gopherus
2. ```
python gopherus.py --exploit mysql
然后传到check.php中post:returl=xxx,不要忘记把下划线后面的内容url编码一次
涉及到一些文件上传的知识,最后要用蚁剑去连接