[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,成功下载。
| 12
 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。


