[TOC]
web签到
考点:代码审计,http请求
先传Cookie,即
(中文要进行url编码)
接下来传post[‘a’],即a=b
然后传get[‘b’],即?b=c
最后的request,传GET或者POST方法都可以,即
1
| &c[6][0][7][5][8][0][9][4][4]=system('cat /f*');
|
web2 c0me_t0_s1gn
考点:查看源代码,使用控制台
我的眼里只有¥
考点:代码审计,脚本利用
_=a,即$__=a,后面就是$a,$a=b,就变成$b,以此类推,用python脚本连续传参可解。
抽老婆
考点:查看源代码,代码审计,flask中的session构造
打开链接,发现可以下载“老婆“。查看代码,发现一串下载的可以代码。(/download?file=a)
用GET方法下载一个文件,发现不成功,页面跳转。
发现”flag“,怀疑/app/app.py文件。下载此文件。
报错,仔细分析,发现可以用…/退级,改为 …/…/app.py,成功下载。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| # !/usr/bin/env python # -*-coding:utf-8 -*-
""" # File : app.py # Time :2022/11/07 09:16 # Author :g4_simon # version :python 3.9.7 # Description:抽老婆,哇偶~ """
from flask import * # type: ignore import os import random from flag import flag
#初始化全局变量 app = Flask(__name__) app.config['SECRET_KEY'] = 'tanji_is_A_boy_Yooooooooooooooooooooo!'
@app.route('/', methods=['GET']) def index(): return render_template('index.html')
@app.route('/getwifi', methods=['GET']) def getwifi(): session['isadmin']=False wifi=random.choice(os.listdir('static/img')) session['current_wifi']=wifi return render_template('getwifi.html',wifi=wifi)
@app.route('/download', methods=['GET']) def source(): filename=request.args.get('file') if 'flag' in filename: return jsonify({"msg":"你想干什么?"}) else: return send_file('static/img/'+filename,as_attachment=True)
@app.route('/secret_path_U_never_know',methods=['GET']) def getflag(): if session['isadmin']: return jsonify({"msg":flag}) else: return jsonify({"msg":"你怎么知道这个路径的?不过还好我有身份验证"})
if __name__ == '__main__': app.run(host='0.0.0.0',port=80,debug=True)
|
分析发现,它会根据不同/而调用不同的函数,我们需要使用getflag()函数,输入/secret_path_U_never_know。
不行,还要使session[‘isadmin’]为真。(笔记关键词:session)
用kali机上的flask_session_cookie_manager,先将原session解码,再将isadmin改为True,再编码,替换原session,得到flag。