SZTU_CTF_12.23模拟赛

  1. WEB

0x01 我的生日

搜索得知哆啦A梦的生日为2112年9月3日,按照题目要求的格式填入21120903,得到flag

SZTU_CTF_12.23模拟赛_第1张图片

0x02 input

右键查看源代码,看到js中的check函数,可知str===flag才能通过,因此可以按照函数的逻辑,在控制台将定义str并初始化,然后console.log调试输出str,即可得到flag。

SZTU_CTF_12.23模拟赛_第2张图片

SZTU_CTF_12.23模拟赛_第3张图片

0x03 刮刮乐

本题以刮刮乐为载体,猜测中奖即为flag,但是一直这么刮下去好像有点费时间。(不过实际下面爆破第5次就出现了flag,好像直接刮更快)

SZTU_CTF_12.23模拟赛_第4张图片

bp抓包用intruder爆破,这里随便加个参数方便跑起来

SZTU_CTF_12.23模拟赛_第5张图片

对比响应报文的差异,找到这个图片

SZTU_CTF_12.23模拟赛_第6张图片

前往对应路径访问

SZTU_CTF_12.23模拟赛_第7张图片

0x04 ctf_judge

一开始看题目意思以为是越权,试了很久一直没有找到突破口,赛后发现是万能密码绕过。

SZTU_CTF_12.23模拟赛_第8张图片

SZTU_CTF_12.23模拟赛_第9张图片

0x05 包罗万象

文件上传,很明显的传木马拿shell

尝试了多种白名单绕过的方式(%00、0x00、0x0a截断,修改文件头,文件类型),但都失败了

SZTU_CTF_12.23模拟赛_第10张图片

期间尝试了扫一下目录,发现有个flag.php

SZTU_CTF_12.23模拟赛_第11张图片

但是打开来什么都没有,就接着之前的文件上传思路做了

SZTU_CTF_12.23模拟赛_第12张图片

随便传一个普通文件,发现会回显绝对路径,我们考虑把木马打包,之后通过zip://伪协议读取木马

SZTU_CTF_12.23模拟赛_第13张图片

并且我们注意到可以通过这里的url可以访问目录

SZTU_CTF_12.23模拟赛_第14张图片

这里现场学一下,zip://绝对路径#压缩包里的路径,注意这里的#要url编码,即%23

SZTU_CTF_12.23模拟赛_第15张图片

蚁剑这里试了半天没连接上,结果是最后文件名不需要接php,#要url编码才能接上

SZTU_CTF_12.23模拟赛_第16张图片

成功拿到flag

SZTU_CTF_12.23模拟赛_第17张图片

0x06 php4fun

提示flag在根目录,那我们需要想办法访问到根目录

刚进来就看到这一坨丑陋的代码,并且注意到通过get方法传参数p

SZTU_CTF_12.23模拟赛_第18张图片

交给chatgpt美化一下

SZTU_CTF_12.23模拟赛_第19张图片

SZTU_CTF_12.23模拟赛_第20张图片

显然上面的协议被过滤了,无法通过它们访问根目录flag文件,并且上面也有说到“..”也被过滤了,无法通过“../”实现目录穿越。最后尝试php伪协议file://localhost/flag成功拿到flag

SZTU_CTF_12.23模拟赛_第21张图片

0x07 BabySqliv2.0

题目提示支持中文账号(英文默认占一个字节((窄字节),中文占两个字节(宽字节)),因此想到宽字节注入,根据测试,发现0x,union,select,where都被过滤置换为空。

获取数据库名 web_sqli
name=admin%df%27%20and%20updatexml(1,concat(1,database()),1)%20--+&pw=1

SZTU_CTF_12.23模拟赛_第22张图片

获取web_sqli的表名 fl4g,user

name=admin%df%27%20and%20updatexml(1,concat(1,(seSELECTlect%20group_concat(table_name)%20from%20information_schema.tables%20whWHEREere%20table_schema=database()%20limit%200,1)),1)%20--+&pw=1

SZTU_CTF_12.23模拟赛_第23张图片

同理,依次获取fl4g列名,获取字段,获取flag,获取flag时因为updatexml返回的最大长度为32,所以需要进行分隔,最后得到一个base64编码后的字符串,进行解密得到flag为GXY{g0Od_job1im_so_vegetable}

0x08 100块钱都不给我

用御剑扫描,发现/robots.txt目录,打开得到

SZTU_CTF_12.23模拟赛_第24张图片

访问/index.php1目录,

SZTU_CTF_12.23模拟赛_第25张图片

由$a = isset($_GET['ctf']) ? $_GET['ctf'] :可知使用GET方法传参,变量为ctf,我们让?ctf=phpinfp,得到flag

SZTU_CTF_12.23模拟赛_第26张图片


0x09 shop

打开压缩包,里面真的好多好多东西,然后发现压缩包里面给了源码,根据提示我们要购买flag.

SZTU_CTF_12.23模拟赛_第27张图片

压缩包里的db.sqlite文件是数据库文件可以看到账号id=13,user_id=16的用户有30000余额,尝试越权。

SZTU_CTF_12.23模拟赛_第28张图片

先尝试直接修改订单金额,不行,了解到会通过验证数字签名验证数据是否被篡改过。

SZTU_CTF_12.23模拟赛_第29张图片

RANDOM_SECRET_KEY_FOR_PAYMENT_SIGNATURE的值在settings.py中提到在secret.key文件中,值为”zhinianyuxin”。

SZTU_CTF_12.23模拟赛_第30张图片

SZTU_CTF_12.23模拟赛_第31张图片

编写计算数字签名的脚本。

SZTU_CTF_12.23模拟赛_第32张图片

抓包改buyer_id,order_id,good_id,signature

SZTU_CTF_12.23模拟赛_第33张图片

成功获取flag

SZTU_CTF_12.23模拟赛_第34张图片

  1. MISC

0x01 大白

根据提示010editor修改图片长宽高

通过查找信息我们知道,下图所划指示该图片的宽和高

SZTU_CTF_12.23模拟赛_第35张图片

修改高后,获得flag

SZTU_CTF_12.23模拟赛_第36张图片

  1. CRYPTO

0x01 一眼就解密

一眼base64编码,在线解码得到flag

SZTU_CTF_12.23模拟赛_第37张图片

特别鸣谢:瑶神、粦神  

你可能感兴趣的:(web)