2023NewStarCTF-Week1-WP


MISC

CyberChef’s Secret

本题就是MISC的签到题,打开后是一串base编码,

M5YHEUTEKFBW6YJWKZGU44CXIEYUWMLSNJLTOZCXIJTWCZD2IZRVG4TJPBSGGWBWHFMXQTDFJNXDQTA=

放入随波逐流中解密

该代码经历了base32-base58-base64 然后得到正确flag

机密图片

本题打开是一张二维码图片,先用CQR扫描看看里面有什么

说明考点并不在这,用010打开也没有得到有效信息,那就用StegSolve打开图片,在Data Extract将RGB都调到最低,得到flag

流量!鲨鱼!

打开后得到一个pcapng文件,里面很多http请求,将其通过WireShark导出

发现可疑包

追踪HTTP流发现里面有一串base代码

放入随波逐流base64解密俩次得到flag

压缩包们

打开得到一个空白文件,通过010打开发现其是一个压缩包文件且文件头错误,将文件头修改

得到的压缩包里面包含着一个压缩包,解压后发现里面的txt文件需要密码才能打开,且有一段base代码的注释,解密后得到提示

说明可以通过爆破来得到txt文件里面的flag,通过Ziperello进行爆破,得到密码

打开txt文件得到flag

空白格

打开后就是一面空白,且通过Ctrl+A全选发现其没有规则,不考虑考morse的可能,

经过上网搜索学习,发现其考点为Whitespace语言,解密后得到flag

解密网站whitespace在线运行,在线工具,在线编译IDE_w3cschool

隐秘的眼睛

根据题目与所给图片提示,可知是SilentEye隐写,利用SilentEye工具Decode俩次得到flag

WEB

打开网站提示管理员泄露俩个敏感信息

通过python脚本尝试一下

import requests

if __name__ == '__main__':
    # url为被扫描地址,后不加‘/’
    url1 = 'http://4b6a43da-9744-47e0-b78d-7c4889a38fc2.node4.buuoj.cn:81/'

    # 常见的网站源码备份文件名
    list1 = ['web', 'website', 'backup', 'back', 'www', 'wwwroot', 'temp']
    # 常见的网站源码备份文件后缀
    list2 = ['tar', 'tar.gz', 'zip', 'rar']

    for i in list1:
        for j in list2:
            back = str(i) + '.' + str(j)
            url = str(url1) + '/' + back
            print(back + '    ', end='')
            print(requests.get(url).status_code)

发现www.zip可以访问成功,

下载后得到俩个敏感信息

Begin of Upload

如题目所述,一个简单的上传题,无法直接上传php文件,所以先上传一个写有一句话木马的jpg图片类型的文件并通过BP抓包

将其后缀修改为.php再发送

然后通过蚁剑连接从根目录下得到flag

Begin of HTTP

第一步 Get传参

第二步 POST传参

secret被藏在调试器中

POST传参后进入下一步并抓包

第三步 修改COOKIE

此时我们的power为hacker,将其修改为ctfer即可进入下一步

第四步 浏览器修改

即将User-Agent内容修改为NewStarCTF2023即可进入下一步

第五步 增加访问所需网站

即将Referer中的内容修改为newstarctf.com即可进入下一步

第六步 Fake IP

ErrorFlask

看到flask我想到了ssti注入,通过ssti注入得到flag

url+?number1=1&number2=2

Begin of PHP

第一关

很简单的MD5弱类型比较

构造Payload url+?key1=QNKCDZO&key2=240610708

第二关

第二关可以通过数组绕过,php哈希函数的特性,当处理数组类型的传参时其会返回null,则就形成了null=null满足了强等于的条件

构造Payload url+?key1=QNKCDZO&key2=240610708

POST:key3[]=1

第三关

strcmp函数特性,当传入的参数为数组时即返回null,即传入key4为数组,则返回null,null=0符合其条件

构造Payload url+?key1=QNKCDZO&key2=240610708&key4[]=1

POST:key3[]=1

第四关

通过is_numeric()函数使传入的key5不能为纯数字且必须大于2023,则可以通过在2024后加字母来进行绕过

构造Payload url+?key1=QNKCDZO&key2=240610708&key4[]=1&key5=2024a

POST:key3[]=1

第五关

上面的正则表达式过滤了大小写字母和数字,而extract所导致的可以使本题也可以通过数组进行绕过

构造Payload url+?key1=QNKCDZO&key2=240610708&key4[]=1&key5=2024a

POST:key3[]=1&flag5[]=1

得到flag

R!C!E!

首先打开本题环境可以看到上述php代码

需要我们先找到一个$password进行MD5加密后前六个值为“c4d038”,然后在输入一个可执行的$code能够避开所过滤的值,从而得到flag

我们可以通过MD5碰撞得到为我们需要的$password,其值为 : “114514”

然后会发现无论我们怎么去输入$code,只要传参为e_v.a.l都无法使其执行成功,这是,这是因为在php中,空格和点无论是get或post传参都无法正常转换

所以为了防止其被过滤,我们可以通过修改_来解决,这也是利用php版本问题

PHP版本小于8时,如果参数中出现中括号[,中括号会被转换成下划线_,但是会出现转换错误导致接下来如果该参数名中还有非法字符并不会继续转换成下划线_,也就是说如果中括号[出现在前面,那么中括号[还是会被转换成下划线_,但是因为出错导致接下来的非法字符并不会被转换成下划线_

这就说明,如果我们将’-‘修改为’[‘,则后续的俩个.不会被更改为’-‘,而[也会被正常转换为’_’

所以我们构造如下的$code

payload: POST: password=114514&e[v.a.l=echo tac /f*;

EasyLogin

本题打开为一登录网站,如果登录进去后就是一个类似于chatgpt的东西,考虑其应该从登录页面下手,发现其为弱密码爆破,通过BP抓包

通过BP抓包发现其密码也被MD5加密过

通过弱密码爆破,发现其密码为000000,这里图省事直接输入爆破了

通过代理中的HTTP历史记录,可以发现一个302跳转,点击进去发现里面有着flag


文章作者: Know5
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Know5 !
  目录