[TOC]

web签到

考点:代码审计,http请求

image-20240725125048233

先传Cookie,即

1
CTFshow-QQ%E7%BE%A4:=a 

​ (中文要进行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*');

image-20240725125819297

web2 c0me_t0_s1gn

考点:查看源代码,使用控制台

image-20240725133817711

image-20240725133847780

我的眼里只有¥

考点:代码审计,脚本利用

image-20240725192622896

_=a,即$__=a,后面就是$a,$a=b,就变成$b,以此类推,用python脚本连续传参可解。

抽老婆

考点:查看源代码,代码审计,flask中的session构造

打开链接,发现可以下载“老婆“。查看代码,发现一串下载的可以代码。(/download?file=a)

image-20240725220105916

用GET方法下载一个文件,发现不成功,页面跳转。

image-20240725220228045

image-20240725220311186

发现”flag“,怀疑/app/app.py文件。下载此文件。

image-20240725220413846

报错,仔细分析,发现可以用…/退级,改为 …/…/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。

image-20240725220748150

不行,还要使session[‘isadmin’]为真。(笔记关键词:session)

用kali机上的flask_session_cookie_manager,先将原session解码,再将isadmin改为True,再编码,替换原session,得到flag。

image-20240725221139596

image-20240725221627896

image-20240725221646423