一.题目:what is this?
二.题目:别真给我开盒了哥
三.题目:ez_waf
四.题目:Guesscion
五.题目:四妹?还是萍萍?
六.题目:cookie_Factory
七.题目:Black&White
八.题目:EZ_ZIP
九.题目:HEX的秘密
十.题目:老色批
十一.题目:web_tflock
十二.题目:web_eazyI0gin
十三.题目:刮刮乐
十四.题目:白白的真好看
十五.题目:我写的网站被rce了?
十六.题目:ez!http
- 题目:别真给我开盒了哥
- 解题人:mite
- 解题思路:看到这个想的是周围有没有可以参考的路线
- 关键步骤和技巧:一看有个s3901,高德查看附近的铁路,快到北京那个地方,旁边有个铁路 就叫津兴铁路和津保铁路,试了一下是津保铁路
三.
- 题目:ez_waf
- 解题人:mite
- 解题思路:看到这个上传文件,因为小学期实训的时候我们组的作业时上传一句话木马文件,但是上传之后老是有危险,一直不知道咋办,后来查了下Waf文件检测只能检测到前5000个字符,后面的不管
4.关键步骤和技巧:所以前面输大于5000个字符,然后再输一句话木马,上传php文件之后用蚁剑连接,找到flag
四.
- 题目:Guesscion
- 解题人:mite
3.解题思路:创建实例后,直接打开网站发现没有反应,那么我们通过burp抓,得到回显,通过分析回显知道要正面为60次才能获得flag
用kali nc连接
4.关键步骤和技巧:之后答对60次找到flag,可能要答很几个100次
五.
1.题目:四妹?还是萍萍?
2.解题人:mite
3.解题思路:先拼二维码然后可能要扫码获取关键的东西,但是刚开始进去之后关注完不知道干嘛,,通过之前的做法,向公众号输入password,得到一串字符,在观察所给的另一张图片,发现有隐写压缩包,通过binwalk拆不出来,后面用winhex分析知道少了数据,用脚本提取zip.
4.关键步骤和技巧:用ppt文本拼一下二维码
关注后发送password得到密码St7wg.
使用winhex打开搜索全局标记位发现压缩包头的位置,但是50 4b缺少,我们先将16进制数据提取出来
0000是zip结尾
构造脚本将zip数据提取出来
掐头去尾(删除头部和尾部多余的数据),或者偏移量精确到想要提取的位置。
头部添加50 4b
保存后使用公众号得到的密码进行解压
在线base64转图片,然后crc爆破宽高修复图片得到flag
在线base64转图片
BuildCTF{PNG_@nd_H31Sh3nHu@}
六.
1.题目:cookie_Factory
2.解题人:127
3.解题思路:
创建实例后显示出如下的图片
每次点击饼干points都会改变,饼干位置也会改变,在这里看不出来该怎么得到flag,对附件中的js文件分析知道如下内容:
这段代码搭建了一个基于Node.js的Web应用服务器,结合了Express框架处理常规的HTTP请求以及Socket.io库实现实时的双向通信功能。它主要围绕着与客户端的交互展开,包括处理不同类型的事件、维护每个客户端连接的特定状态信息,并根据客户端的操作和数据进行相应的响应及状态更新。
创建express应用实例和基于该实例的http服务器,并指定服务器监听的端口为3000。
设置当前目录为静态资源目录,以便能直接提供如 index.html 等静态文件给客户端,同时定义了针对根路径的GET路由,当客户端访问根路径时返回index.html文件。
客户端连接处理:当有客户端通过WebSocket连接到服务器时(触发socket.io的connection事件):为该客户端在sessions和errors对象中分别初始化一个以其socket.id为键的值为0的记录,用于后续存储与该客户端相关的会话状态和错误相关信息。
注册了多个针对该客户端不同事件的监听器,包括disconnect(客户端断开连接时记录日志)、chatmessage(简单转发接收到的消息回客户端)、receivedError(根据客户端错误信息更新会话状态并反馈给客户端)以及click(根据客户端发送的数据进行一系列复杂的状态判断、计算和反馈)。
事件处理逻辑:chat message事件:当客户端发送chatmessage事件,服务器直接将接收到的消息原封不动地发回给该客户端。
receivedError事件:客户端发送此事件后,服务器会将该客户端在errors对象中的值赋给sessions对象中对应的键值,然后将更新后的sessions值以recievedScore事件的形式发回给客户端。
click事件:客户端发送click事件并携带数据后,首先解析数据为JSON对象。然后进行一系列条件判断和计算:如果该客户端在sessions对象中的值大于1e20,则向客户端发送包含FLAG值的recievedScore事件并返回。
所以确定要得到flag就要让sessions对象中的值大于要求的值,那么我们写一个脚本让其已知点击,最后获取flag即可
脚本为:
通过node.exe运行脚本最后得到flag
七.
1.题目:Black&White
2.解题人:127
3.解题步骤:
解压后发现一堆黑白图片,构造脚本拼图成二维码
得到二维码扫码得到
3I8XEDHUCJTARQFOEDX7D+08AC80T8N08Y6948DF2C43C9B6Z2
base45解码得到flag
BuildCTF{Tich1?pAnDa?_HahA_U_w1n}
4.关键步骤和技巧:首先要能想到这些图片可能需要拼凑,可能要拼凑成什么东西,拼成二维码后通过扫描二维码得到的字符,看起来像base字符,通过解码就得到了最后的flag
八.
1.题目:EZ_ZIP
2.解题人:127
3.解题思路:
基本的misc图片题二话不说先查看他的内容,放到010editor文件中得到以下内容:
由此可知图片中隐写了一个zip文件,通过更改文件后缀,得到一个压缩包,我们点开以后是layer_499zip文件,继续解压发现文件后续为498,497,这里我们猜他要循环解压,写出脚本循环解压
Again解压:
最后得到最后的压缩包
双击后得到flag.txt,那么flag肯定藏在这里面,点击后发现有密码,由于没有任何提示,我就直接爆破,发现爆破不出来,把最后的txt文件放到010editor应用中查看,
这里我们先了解一下伪加密
50 4B 01 02:目录中文件文件头标记(0x02014b50)
3F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
24 00:扩展字段长度
00 00:文件注释长度
00 00:磁盘开始号
00 00:内部文件属性
20 00 00 00:外部文件属性
00 00 00 00:局部头部偏移量
通过这些,从zip文件上看进行了伪加密,我们更改伪加密为偶数,再次点开就可以直接拿到flag
4.关键步骤和技巧:首先要知道图片的各种隐藏方式,分析图片,得到压缩包后,对压缩包也要分析,也要了解伪加密是怎么进行的。
hex_str = "c2f5e9ece4c3d4c6fbb3c5fafadfc1b5e3a1a1dfe2e9eee1f2f9f9f9fd"
BuildCTF{3Ezz_A5c!!_binaryyy}
5.解题关键和技巧:这个题给的还明确,直接写代码运行
十.
- 题目名称:老色批
- 解题人:Unicorn
- 解题思路:
答:题目提供的压缩包中只有一张图片result.png,很显然flag应该隐写在图片中,结合题目名为老色批,想到一种隐写方式lsb,最低有效位(LSB)隐写:这是一种比较简单且常用的隐写方法。在图像的像素表示中,每个像素的颜色值通常由若干位二进制数来表示。
4.关键步骤和技巧:
打开Stegsolve.jar,在file>open打开result.png
打开Analyse>Data Extract进行数据分析
分析数据找到可能存在的信息,QnVpbGRDVEZ7MV9hbV9uMHRf TFNCISEhfQ==,观察可能为base64编码,进行转化之后得到结果BuildCTF{1_am_n0t_LSB!!!}
十一.
1.题目: web_tflock
2.解题人: xiaoxuan
3.解题思路: 利用搜索引擎爬虫协议协议robots.txt,查看不让访问的文件。robots.txt的内容:User-agent: 爬虫的名称Disallow: 不允许爬虫访问的地址Allow: 允许爬虫访问的地址。对特殊文件访问。
4.关键步骤和技巧: 从/robots.txt中可发现admin用户的密码字典路径为/passwordList/password.txt 找到密码本,爆破admin用户的密码即可,
最后爆破出admin的密码为:ti1oLz@OhU,使用用户名 admin 密码 ti1oLz@OhU 登录后获得一个字符串,就是flag直接交就可以了;
十二.
1.题目: web_eazyl0gin
2.解题人: xiaoxuan
3.解题思路: 题目提示查看routes/users.js源码文件,查看是否有用户登录的条件。
4.关键步骤和技巧: 查看routes/users.js源码,发现账号密码。密码进行md5加密
用户名:buıldctf 密码md5解密 012346
十三.
- 题目名称:刮刮乐
- 解题人:Unicorn
- 解题思路:进入站点,按照题目名称,先开始刮,寻找线索,刮差不多的时候提示传参cmd,那么应该为构造payload进行代码执行,不过中间也试过用工具简单漏洞扫描,没有找到有效突破口
- 关键步骤和技巧:
在URL中构造payload
http://27.25.151.80:44314/?cmd=cat /f*|tee test.txt
结果显示不是自己人
如此,用burp进行拦截,修改数据包,将Referer参数修改为baidu.com
然后访问test.txt,查看是否成功,直接显示BuildCTF{61ce815d-5c55-4c2b-bd29-9c7426c14048}
十四.
- 题目名称:白白的真好看
- 解题人:mite
- 解题思路:
0000.txt文件:用0宽解码
得到Flag2:_wh1t3_y0u_s33
White.docx给文本补充颜色
得到Flag1:BuildCTF{tH3_wh1t3
看到二维码,想的是拼错了,拼了好几次都不能扫,用qr reserch扫也没反应,在我查资料的时候发现是汉信码,于是直接找工具
得到:http://weixin.qq.com/r/ekReRh7Eh0P4rVol9xFo
公众号回复得到:snowsnow
最后得到:BuildCTF{Th3_wh1t3_y0u_s33_1s_n0t_wh1t3}
十五.
- 题目名称:我写的网站被rce了?
- 解题人:Unicorn
- 解题思路:进入站点,看到一些信息,接着挨个尝试按钮功能,寻找可以利用的漏洞,点击按钮时进行抓包,查看数据包中是否有可疑或者特殊参数,全部抓包发现都存在特殊参数,但仅有查看日志功能参数有值,其他均为空值,尝试做为突破口,修改参数值,构造payload
- 关键步骤和技巧
尝试修改查看日志特殊参数log_type的值
有错误回显
结合题目关键词rce,构造远程代码执行payload
log_type=acc||cat${IFS}/fla?||ess
cat为Linux参数,${IFS}内部字段分隔符,/fla?用通配符尝试访问不在白名单允许范围内的文件,如flag.txt等,使用||进行连接
成功得到flag,BuildCTF{518e9a8e-a168-4afe-bdeb-db0baa07a87a}