type
Page
status
Invisible
date
Nov 6, 2025
slug
summary
WEB新手入门题单01
tags
WEB
category
icon
password
我Flag呢?
思路
F12查看元素即可获得flag
EXP
无
就当无事发生
思路
题目所给的是一个Github的.io地址
GitHub.io是GitPage的一种,是一个用于展示项目和项目网站的托管工具。GitHub是一个代码托管云服务网站,主要用于存储和管理项目源代码。GitHub.io提供了一个功能,可以创建个人网站。GitHub.io通过基于Jekyll工具的Github pages来自动构建网站,同时本身又是GitHub的repo,为使用者提供完全的内容控制。GitHub是一个让大家把用Git这种版本管理工具管理的内容集中在一起的社区。
该page依赖于Github仓库,而对于公开的仓库,每一次的提交都会有记录,因为页面部署需要一定时间,但是提交操作已经生效,所以代码的修改会被Git Commit记录
可以猜测,flag在页面第一次创建的时候被提交过,但是出于保密原因迅速就被删掉并且很快进行了第二次提交,所以页面就被覆盖了。我们无法从页面获得,但是,可以在提交记录中找到
EXP
博客网址:
因此访问仓库网址:
访问后进入commit,找到2023-4-29的commit,打开后搜索flag,拿到flag

导弹迷踪
思路
一种是直接玩来通关,另一种是查看代码。
js小游戏,直接F12查看源代码,在
文件中找到下图判断逻辑,得到flag。可以通过搜索
关键字来查看代码

EXP
无
Follow me and hack me
思路
根据前端页面的提示,传入一个get参数和post参数即可
EXP
执行后拿到flag

PHP是世界上最好的语言!!
思路
看到右边的代码执行框,尝试输入的php代码,由于题目提示flag位于根目录,因此访问地址为
/flagEXP
点击run code拿到flag

Vim yyds
思路
vim备份文件后缀第一次意外退出产生的备份文件名为:.filename.swp第二次意外退出产生的备份文件名为:.filename.swo第三次意外退出产生的备份文件名为:.filename.swn当vim在编辑文档的过程中如果异常退出,则会产生缓存文件。第一次产生的缓存文件后缀为.swp,第二次则产生的缓存文件后缀为.swo,第三次产生的缓存文件后缀为.swn。
使用dirsearch扫描可以发现存在swp文件

访问如图所示链接,下载对应文件

在wsl中使用vim打开,是一个有乱码的文件,先使用下面命令修复


整理得到关键逻辑
通过判断逻辑后,会执行一句话木马
EXP

中级
作业管理系统
思路
审计代码,发现账号和密码写在注释中

解法一 文件上传
登录后发现文件上传界面
写一个一句话木马上传,文件名为
hack.php由于前端页面不显示,上传文件后看不到,但是从上传功能区的 " ./ " 可以得知就是在当前目录,然后使用蚁剑进行连接

创建连接后进入根目录下找到flag文件,打开获得flag
解法二 远程下载

点击下载,然后访问url/flag即可拿到flag

解法三 创建文件
直接在系统中创建文件并写入一句话木马


解法四 直接编辑读取
上传文件的时候 使用了编辑功能,不妨观察它的Url:
http://node4.anna.nssctf.cn:28090/index.php?op=edit&fename=uploadFileName&folder=./由于页面所有的操作只有登录这一个鉴权,所有操作都没用敏感目录的过滤(完全没有过滤),所以这个地方我们直接修改路径为根目录,文件名字为flag
访问后拿到flag

EXP
无
这是什么?SQL !注一下 !
思路
解法一 手工注入- 逐个注入
题目给了源代码
并给出了执行操作
所以是一个很白的白盒题目,很明显是一个魔改(戴套)后的数字型注入。
所以我们先闭合括号 然后用注释符号注释掉后面的括号,我们就能在中间执行对应的SQL语句,最后构造的语句形式如下:
然后题目给出了列名username和password,所以我们也不需要用Order by去爆破列名了,方便起见可以借助HackBar的自带预处理语句进行注入:


注入语句:
注入后结果如下

可以看到数据库名用逗号分隔
然后对每个库爆出表名,这里其他库的操作就不做演示,flag位于 ctftraining 中 所以我们使用下面语句:

进一步爆出字段名

至此拿到数据库几乎所有的信息,得知flag在 ctftraining 库中的 ctf 表里面,所以使用联合查询直接拿flag:

解法二 手工注入 - DIOS(Dump In One Shot)
然后插件会自动填充:
你需要使用联合查询将这一个子查询和前面的语句关联起来:
完整Payload:
查询结果很长,ctrl+F搜索flag查询到相关信息

剩余步骤同法1
