ctfweb解题找flag
打开题目页面,解题一个登录框。解题用户名填 我习惯先看 URL。解题有些题会直接把参数暴露在地址栏里,解题比如 源码里 构造 payload 提交,页面跳转到 试试 另一道题更有意思。页面只有一个输入框,提示“输入 URL 预览”。典型的 SSRF。先填 Web 题的核心就一句话:找到程序没考虑到的输入路径。登录框不一定靠爆破,可能靠变量覆盖;URL 参数不一定靠注入,可能靠协议走私;文件上传不一定靠绕过 MIME,可能靠 我自己的习惯是:拿到题先跑一遍 flag 通常藏在数据库、环境变量、文件系统或者内存里。找到它只是结果,过程才是 CTF Web 真正练的东西——把零散的线索串成一条利用链,然后打通它。admin,解题密码随便输,解题回车。解题页面返回“密码错误”。解题查看源码,解题没有注释,解题没有隐藏字段。解题抓包看请求,解题POST 到 /login,解题参数就两个。解题看上去毫无破绽——但 CTF 的解题 Web 题从来不会让你从正面攻进去。?file=flag 这种。这题没有。那就翻目录。robots.txt 返回 404,.git 也是 404。但 www.zip 下载下来一个压缩包。解压,里面是源码。这就是突破口。login.php 的验证逻辑写得很直白:查数据库,比对密码哈希。但旁边有个 config.php,里面硬编码了数据库账号密码。更关键的是,login.php 里有一行 extract($_POST)。这个函数会把 POST 里的键名变成变量。如果提交 username=admin&password=xxx&is_admin=1,那么 $is_admin 就直接等于 1,后面的权限判断形同虚设。这类变量覆盖漏洞在早期 PHP 应用里很常见,现在少了,但 CTF 里还是高频考点。/dashboard.php。上面显示“欢迎,admin”。但 flag 不在这。继续翻源码,发现 dashboard.php 里有一段注释掉的代码,指向 /admin/flag.php。直接访问,返回 403。看 .htaccess,限制了只有 127.0.0.1 能访问。这就涉及到 SSRF 或者请求头伪造了。X-Forwarded-For: 127.0.0.1。有些服务器会信任这个头来判断来源 IP。加上之后重新请求,页面返回了 flag。整个过程不到十分钟,但每一步都卡在细节上:不翻源码就不知道 extract 的存在,不看 .htaccess 就不知道 IP 限制,不试请求头就绕不过去。http://127.0.0.1/,返回“不允许访问内网”。过滤了 127.0.0.1。换成 http://0x7f000001/,十六进制表示,绕过了。再换成 http://2130706433/,十进制,也行。但内网页面本身需要 file:// 协议读本地文件,直接填 file:///flag,返回“协议不允许”。那就用 gopher:// 打内网的 Redis,写 shell 或者直接读 flag。这题最后是用 dict:// 协议探测端口,发现 6379 开着,然后构造 gopher payload 写入 cron 任务,反弹 shell 拿到 flag。.user.ini 或者 .htaccess 解析。每道题都在考你对 HTTP 协议、PHP 特性、服务器配置的理解深度。dirsearch,同时手动看源码和响应头。源码里搜 flag、include、eval、system 这些关键词。响应头看 Server、X-Powered-By,判断语言和中间件。然后根据线索决定是走注入、文件包含、反序列化还是 SSRF。别急着上工具,先想清楚数据怎么流动。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-