学了CTF一段时间,终于可以算是刚刚踏入门槛的小白了。想着以博客的形式记录学习过程,也可以给小小白们一点学习的方向与思路,希望大家批评指正,我们共同进步。
源代码
点击鼠标右键,选择查看源代码
web1(ctfshow)
题目描述:开发注释未及时删除
查看源代码
ctfshow{9287a906-6d8e-446b-bf9e-f22294a94603}
web19(ctfshow)
题目描述:密钥什么的,就不要放在前端了
先尝试用户名:admin,密码:admin,显示错误
根据提示,密钥在前端,查看源代码发现
代码审计:
- 用POST传递参数username和pazzword
- username=admin
- pazzword=a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04
ctfshow{98becfab-e975-4cca-9404-b286b1b394f0}
JS代码
常见题型与小游戏有关
解题思路:用到web开发者工具查看js代码
web2(ctfshow)
题目描述:js前台拦截 === 无效操作
打开web开发者工具查看网页html和js代码
ctfshow{da698e4f-ae6b-48ad-8d57-ff569bf69996}
web18(ctfshow)
题目描述:不要着急,休息,休息一会儿,玩101分给你flag
happy bird小游戏,一般小游戏的题型都与js代码有关
打开web开发者工具,在调试器里找到Flappy_js.js
找到判断分数的函数,发现unicode编码
\u4f60\u8d62\u4e86\uff0c\u53bb\u5e7a\u5e7a\u96f6\u70b9\u76ae\u7231\u5403\u76ae\u770b\u770b
解码
你赢了,去幺幺零点皮爱吃皮看看
根据提示,访问/110.php
ctfshow{4050e499-56ef-4726-ac23-eea36704a4ab}
Bp抓包
解题思路:用bp抓包查看请求报文和响应报文的首部字段
web3(ctfshow)
题目描述:没思路的时候抓个包看看,可能会有意外收获
根据提示,用bp抓包
发送至repeater,在首部发现flag字段
ctfshow{7153c5fd-b7b7-4033-b814-bf17df5264ce}
robots协议
robots协议,又叫爬虫协议,它告诉搜索引擎哪些网页可以抓取,哪些不可以
解题思路:
- dirsearch扫描看是否存在robots.txt
- 若存在,/robots.txt访问
- Allow参数表示可以抓取的网页,而Disallow参数表示不可抓取的网页,这类网页只可通过网址访问
web4(ctfshow)
题目描述:总有人把后台地址写入robots,帮黑阔大佬们引路。
根据提示,访问robots.txt
disallow参数表示flagishere.txt只能通过网址访问
payload:/flagishere.txt
ctfshow{35731004-2884-4bd8-8617-238b4a5780da}
PHP
源码泄露
首页的php码源可能会泄露
思路:/index.phps
web5(ctfshow)
题目描述:phps源码泄露有时候能帮上忙
根据提示,访问index.phps
拿到码源文件
记事本打开,拿到flag
ctfshow{f7b2671a-62aa-4a78-a0b1-99252192bb55}
PHPINFO
phpinfo是一个运行指令,会显示php服务器的配置信息
PHPINFO(ctfhub)
进入phpinfo,在php服务器配置信息的环境信息位置,发现flag
ctfhub{082878f6eb9688b71d6375bc}
PHP探针
PHP探针用来探测空间、服务器运行状况和PHP信息用的,可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息
常用的php探针有雅黑探针、9gan PHP探针、MyProber PHP探针、浪点PHP探针
根据资料发现,其中雅黑探针是最强大的,而雅黑探针一般是tz.php
web16(ctfshow)
题目描述:对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露
根据提示为探针,尝试雅黑探针/tz.php
在PHP已编译模块检测里查看phpinfo
在环境信息部分,找到flag
ctfshow{15ba4e6f-97eb-4d7b-8922-ea4995669a0d}
版本控制
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理
git
git,一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理
git漏洞:用git 进行版本控制,对站点自动部署时配置不当,可能会将.git 文件夹直接部署到线上环境,这就引起了 git 泄露漏洞,我们可以利用这个漏洞直接获得网页源码
解题思路:
先dirsearch扫描,确定有.git后,有如下几种思路
- 直接访问/.git
- 用githack工具克隆源代码,在克隆文件夹里找
- 用git log查看日志
- git diff比较git版本
- git reset切换到含有flag的git版本
- git stash pop从堆栈中弹出flag
- git checkout查看输出文件
web7(ctfshow)
题目描述:版本控制很重要,但不要部署到生产环境更重要
根据提示版本控制,尝试访问/.git,拿到flag
ctfshow{2fa8a8ca-d1bc-4e8a-ab42-cd9794f556e5}
Log(ctfhub)
题目描述:当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞
用dirsearch扫描,发现有git泄露
用GitHack克隆源代码
但是,在文件夹里,没有发现flag
标题是Log,git log查看日志试一试,发现在cf83a版本时,加入了flag
利用git diff命令,比较两个版本的不同,发现flag
githack版本不同会影响解题,建议直接利用ctfhub提供的githack解题
此外还有一种解法,将版本切换到add flag时
拿到flag所在文件
Stash(ctfhub)
该题还是git泄露
先利用githack拿到源代码
依旧没有发现flag
和上一题思路一样,查看日志,发现又有增加flag,比较以后,拿到where is flag
根据题目提示,stash,百度了一下
git stash用于将未提交的修改存放在堆栈中,因此可以利用git stash pop将其从堆栈中弹出
拿到flag存放文件
svn
svn,一个开放源代码的版本控制系统,用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理
svn漏洞:在使用SVN管理本地代码过程中,会自动生成一个隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使隐藏文件夹被暴露于外网环境,这使得渗透工程师可以借助其中包含版本信息追踪的网站文件,逐步摸清站点结构。在服务器上布署代码时,如果是使用 svn checkout 功能来更新代码,而没有配置好目录访问权限,则会存在此漏洞。黑客利用此漏洞,可以下载整套网站的源代码
解题思路:
dirsearch扫描,确定有.svn后,有以下几种思路
-
直接访问/.svn
-
使用dvcs-ripper工具对svn泄露进行利用
./rip-svn.pl -u url/.svn
ls -af //查看是否有隐藏的svn
tree .svn //查看svn文件目录结构
cat .svn/pristine/xxx文件 //pristine里面一般存储的是代码的历史版本
web8(ctfshow)
题目描述:版本控制很重要,但不要部署到生产环境更重要
根据提示,版本控制除了git,学过的就是svn
访问/.svn,拿到flag
ctfshow{3ee3fe7c-cf32-4711-8f10-82875f445db1}
svn泄露(ctfhub)
题目描述:当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN 泄露漏洞
进入链接,说在旧版的浏览器源码里有flag
先用dirsearch扫描
访问/.svn/wc.db,拿到下载的文件,搜索ctfhub没有发现
需要使用dvcs-ripper工具对svn泄露进行利用
ls -af
查看隐藏文件,发现.svn
tree .svn
查看.svn文件目录结构
查阅资料了解到,pristine里面一般存储的是代码的历史版本,正好与首页提示相印证
Mercurial
Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强
HG泄露:hg在初始化项目时, 会在项目的根目录下创建一个名为.hg
的隐藏文件夹,里面包含了代码和分支的修改记录和开发人员的相关信息. 当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。
解题思路:
用dirsearch扫描,确定含有.hg后,有以下几种思路
-
直接访问/.hg
-
使用dvcs-ripper工具对hg泄露进行利用
./rip-hg.pl -u URL/.hg
ls -af //查看是否有隐藏的.hg文件
tree .hg //查看.hg的文件目录结构
grep -r flag * //搜索与flag有关的文件
- flag文件可能需要在网页访问才可拿到里面的flag
HG泄露(CTFHUB)
题目描述:当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞
已经告诉是HG泄露,先用dirsearch扫一扫
访问/.hg/undo.dirstate却显示404
想起来,昨天在查阅dvcs-ripper工具安装和使用教程时,遇到了这个工具也可以用于HG泄露
按照昨天的命令格式,试一试
虽然显示404响应,但还是拿到了.hg文件夹
利用tree命令,查看.hg文件里的文件结构,发现last-message.txt,打印看看内容
增加了flag,怀疑flag在别的文件中
看了几个文件都没有
想起来,可以通过grep命令搜索文件名
但是,发现在文件夹里找不到这个文件
尝试浏览器访问,成功拿到flag
备份文件下载
网站源码泄露
网站码源一般在www.zip里
解题思路:
- dirsearch扫描是否有www.zip
- 若有,直接访问下载
web6(ctfshow)
题目描述:解压源码到当前目录,测试正常,收工
根据提示,直接访问/www.zip
在www.zip里发现fl000g.txt,但是flag是假的
首页面php源码
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-01 14:37:13
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-01 14:42:44
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
//flag in fl000g.txt
echo "web6:where is flag?"
?>
提示flag在fl000g.txt里
payload访问,拿到flag
/fl000g.txt
ctfshow{c4629a0f-ad71-445a-875d-f958b9c85606}
网站源码(ctfhub)
题目描述:当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。
看见网站源码泄露,知道要访问www.zip,但是根据提示在web目录下
所以,刚开始自己的payload是/web/www.zip
但是却是404错误
尝试去掉web目录,拿到源码
发现有flag的文件,但是却是where is flag
直接访问flag_1511121180.txt得到flag
备份文件
源码备份一般后缀名为bak
bak文件(ctfhub)
题目描述:当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露
根据题目bak提示,访问/index.php.bak,拿到备份文件
sql备份文件 web17(ctfshow)
题目描述:备份的sql文件会泄露敏感信息
根据提示,备份的sql文件,访问/backup.sql
ctfshow{4c1901dc-daa0-4c19-bb06-5bf32f4ddc54}
vim信息缓存泄露
vim在编辑文档的过程中如果异常退出,会产生缓存文件,第一次产生的缓存文件后缀为.swp,后面会产生.swo
若文件为index.php,则缓存文件名为.index.php.swp
web9(ctfshow)
题目描述:发现网页有个错别字?赶紧在生产环境vim改下,不好,死机了
根据提示知道是vim信息缓存泄露
直接访问缓存文件index.php.swp,下载后打开,拿到flag
ctfshow{f0d66691-3928-4f00-853e-164e921c1edd}
vim缓存(ctfhub)
题目描述:当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim 编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露
vim在编辑文档的过程中如果异常退出,会产生缓存文件,第一次产生的缓存文件后缀为.swp,第二次会产生.swo,第三次会产生.swn
payload:/.index.php.swp
拿到的文件,要在linux下使用vim才能打开
但是为了节约时间,可以用typora、记事本打开
.DS_Store
.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单
解题思路:
- dirsearch扫描,查看是否存在.DS_Store文件
- 若存在,直接访问
.DS_Store(CTFHUB)
题目描述:.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单
根据提示,直接访问/.DS_Store
拿到flag所在文件名
构造payload:/1f6da1e14f87d5c9b6dcd4bc5aeea47b.txt
cookie
web10(ctfshow)
题目描述:cookie 只是一块饼干,不能存放任何隐私数据
根据提示,要查看cookie,抓包查看
在cookie里发现flag
ctfshow{34a284cd-49a8-4146-b8e9-c57ee3d46564}
域名
https://zijian.aliyun.com/用于查看网站域名信息
web11(ctfshow)
利用阿里云网站运维检测平台查看域名ctfshow.com相关信息
发现TXT记录,但是没有flag,因为动态更新的原因
直接提交flag
flag{just_seesee}
网站公开信息
留意网站上的敏感信息(电话、邮箱等)
web12(ctfshow)
题目描述:有时候网站上的公开信息,就是管理员常用密码
这是一个购物网站
根据提示:管理员,尝试直接访问/admin,但是需要用户名和密码才能访问
返回购物网页,查找有关管理员的信息
尝试电话号码:372619038
拿到flag
ctfshow{b1c6c1ff-f187-4f71-8cf0-6346c0dd26e5}
web15(ctfshow)
题目描述:公开的信息比如邮箱,可能造成信息泄露,产生严重后果
根据web12的经验,访问/admin,发现后台登录系统
先尝试用户名:admin,密码:admin,显示密码错误
尝试忘记密码,提问所在城市
根据题目提示,返回首页拿到邮箱,根据邮箱分理出QQ号,查询该QQ号所在位置
1156631961@qq.com
拿到答案:西安
输入用户名:admin,密码:admin7789,拿到flag
ctfshow{2837e030-6251-4fe3-bfcb-58cdf4329585}
留意隐藏的网站入口
web13(ctfshow)
题目描述:技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码
根据提示,在网页里查找技术文档的网址
当鼠标触碰到ducoment时有变化,点击进入
在技术文档末尾发现后台登陆网址以及用户名与密码
在网站首页访问/system1103/login.php,并输入用户名admin,密码admin1103
ctfshow{54dd62e2-57a0-4491-875b-68c7d3d94c50}
编辑器配置不当
web14(ctfshow)
题目描述:有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人
根据提示,查看源代码,发现路径/editor
访问/editor
发现可以上传文件,试试本地上传图片,但是显示没有写权限
在网络图片处,发现可以浏览文件空间
发现flag所在文件路径
/editor/attached/image/var/www/html/nothinghere/fl000g.txt
但只需要访问/nothinghere/fl000g.txt即可
ctfshow{cdfb7d62-f019-4c66-8f1c-a225ac8fb75a}
数据库恶意下载
mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了
解题思路:dirsearch扫描
web20(ctfshow)
题目描述:mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了。
根据题目提示泄露了mdb文件,但是不知道文件名,用dirsearch扫一下
发现/db目录,但是禁止访问
提示是mdb文件,所以访问/db/db.mdb
flag{ctfshow_old_database}