2026数字中国创新大赛数字安全赛道writeup之web题目一

2026数字中国创新大赛数字安全赛道writeup之web题目一

缘起

人菜,但是爱学习!怎么着?

所以我又报名了这个比赛,能进决赛更好,进不了也无所谓,反正我又菜又爱学习,我就是菜鸟一枚。

总结还是很重要的,会的要节省实践,不会的要积累经验!作为一个程序员,web题目还是有优势的,所以我打算先从web题目开始。

题目

看题目:

题目看起来很简单,常规三思路:

  1. sql注入,直捣黄龙
  2. 文件上传,上传webshell
  3. 跳过绕过验证码,批量抓取所有数据抓出来

1试过不行,2没入口,所以只能考虑抓取数据

解题

web题目解题思路是很清晰的,就是上burpsuite,先抓包,获取信息:

1、先看是什么服务器

2、看验证码成功的请求

3、看验证码失败的请求

分析:

当验证码答案不对的时候,返回结果除了更新验证码图片外,还更改了cookie,python ,flask框架(werkzeug),想不到cookie解密都难!

先把这个cookie输出来看看吧:

python 复制代码
import json
import zlib 
import base64

session_cookie = ".eJyrVkpOLChJzkiMT1SyMtKB85KUrAwNENy8_LzkVCUrpdSkFLNkY0tzS-NUY2Nj0zSTVCOjVLNEYyWE0gKgzloAyhIbJw.adsbfw.VCC8tRXlj6fJt-Y8nOKWfaqZEu8"

session_cookie = session_cookie[1:]  # 1
parts = session_cookie.split('.')
data_part, timestamp_part, signature_part = parts # 2

padding = '=' * (-len(data_part) % 4)
data_bytes = base64.urlsafe_b64decode(data_part + padding) # 3
data_bytes = zlib.decompress(data_bytes) # 4
jsonstring =json.loads(data_bytes.decode('utf-8'))
print(jsonstring)

跑一下看看结果:

很明显了!答案就藏在了cookie里面,验证码的答案就是captcha_a+captcha_b,而captcha_p是page no

剩下就简单了,循环抓取数据就可以了。简单说明一下这个解密代码吧,按照代码备注的序号:

  1. 去掉cookie前面的. 这个点是有含义的,表示数据载体是压缩的
  2. 把cookie分成3部分,data_part、timestamp_part、signature_part
  3. 补全base64的padding,不要问怎么知道的,因为看到了这个:
  1. 把json字符串解压缩,解压缩后是json字符串

web题目,比赛结束就关了,无法演示抓包了!

小结

其实初赛成绩不理想,当ctf强行分开了数安和网安,web题目在数安里面占比少了,作为一个应用程序员来说,优势少了。逆向和pwn题目多了,不过这对底层程序员,系统程序员有优势,哎,毕竟也是c/c++走过来的,谁怕谁啊,大不了再捡起来!

相关推荐
Moshow郑锴8 小时前
sql-pipeline - 基于PostgreSQL的SQL健康检查与发布编排平台
java·sql
Wang's Blog15 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
MicrosoftCloud15 小时前
用户权限 04|/etc/sudoers 安全配置:从最小授权到「别把 ALL 随便给人」
运维·安全·ubuntu·sudo·sudoers
福兮说16 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
\光辉岁月/16 小时前
5.java-数组
java·开发语言
谢亮_vipxieliang17 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
郑州光合科技余经理17 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
2601_9620715717 小时前
类变量和全局变量的生命周期有什么区别?
java·开发语言·jvm
code2cat17 小时前
Java进阶篇之AtomicReference:一次替换引用,读到一份完整状态
java·并发编程·不可变对象·atomicreference
专业程序开发源17 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计