題目復現鏈接:https://buuoj.cn/challenges
參考鏈接:De1CTF ssrf_me 的三種解法
淺析De1CTF 2019的兩道web SSRF ME && ShellShellShell
一、涉及知識點
1、MD5長度擴展攻擊
當已知以下三點
- md5(salt+message)的值
- message內容
- salt+message長度
我們可以在不知道salt的具體內容的情況下,計算出任意的md5(salt+message+padding+append)值 - 工具:HashPump/python模塊:hashpumpy
2、Python 2.x - 2.7.16 urllib.fopen支持local_file導致LFI(CVE-2019-9948)
https://bugs.python.org/issue35907
- 當不存在協議的時候,默認使用
file
協議讀取 - 可以使用
local_file:
繞過,例如local_file:flag.txt
路徑就是相對腳本的路徑
local_file://
就必須使用絕對路徑(協議一般都是這樣)
PS:local-file:///proc/self/cwd/flag.txt
也可以讀取,因為/proc/self/cwd/
代表的是當前路徑 - 如果使用 urllib2.urlopen(param) 去包含文件就必須加上
file
,否則會報ValueError: unknown url type: /path/to/file
的錯誤
二、解題方法
見參考鏈接,不做贅述
三、總結
對代碼要有敏感性,善於搜索已有的漏洞
cve庫:cve database