web前置技能

HTTP协议

请求方式

HTTP/1.1 八种请求方式: GET,POST,HEAD,OPTIONS,PUT,DELETE,TRACE,CONNECT

打开环境提示HTTP方法为GET,使用CTFHUB方法,我会给你flag

bp抓包改包重放,得到flag

302跳转

看了wp才做出来

打开环境,点击got flag后没反应,f12查看新出现了一个302的index.php页面,使用curl工具-v参数输出通信的整个过程,得到flag

打开环境提示管理员才能得到flag

使用EditThisCookie查看,有一个名为admin的cookie值为0,修改为1,刷新得到flag

基础认证

打开环境,有个获得flag的click按钮,点一下弹出窗口需要登陆验证,随便输一个admin/123,bp抓包

头部有一个Authorization字段,后面的值解码发现是base64加密的admin:123

在返回包里发现提示

猜测用户名为admin

下面就可以尝试爆破了,发送到Intruder模块,添加payload position

选择模式,加载字典

添加前缀admin:,并对密码进行base64加密处理(同时取消勾选URL编码,不然你会看到 base64 之后的 = 会被转成 %3d ,你就算爆破到天荒地老也不会出来)

最后在一个状态码为200的响应返回包中发现flag

响应包源代码

饿饿. 打开环境查看源码 发现flag…我人傻了

信息泄露

目录遍历

目录遍历(路径遍历)是由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以是web根目录以外的文件),甚至执行系统命令

打开环境 点击按钮,会跳到这个界面

对目录进行地毯式搜索,可找到一个flag.txt文件,打开得到flag

phpinfo

phpinfo() 是php中查看相关信息的函数,当在页面中执行phpinfo()函数时,php会将自身的所有信息全部打印出来。在phpinfo中会泄露很多服务端的一些信息,例如安装的一些模块、网站绝对路径、服务器自身的操作系统、使用的组件版本等等,在phpinfo中获得的这些信息会为下一步的渗透/做题提供一些帮助

正好之前碰到的一个漏洞就是phpinfo信息泄露,要不然还不了解这个

就是在本题的phpinfo页面中ctrl+f,查找ctfhub,然后就找到flag了

备份文件下载

网站源码

常见的网站源码备份文件名:webwebsitebackupbackwwwwwwroottemp
常见的网站源码备份文件后缀:.zip.rar.tar.tar.gz.7z.bak.txt.old.temp

试了一下www.zip 一发入魂

下载到本地解压发现一个flag_46657223.txt文件,但打开没有flag

然后回到环境中,在URL尾部添加/flag_46657223.txt打开,得到flag

bak文件

常见的备份文件后缀名有: .git.svn.swp.svn.~.bak.bash_history

打开环境提示flag在index.php的源码里,根据题目信息,在URL尾部添加/index.php.bak,下载文件到本地打开 得到flag

vim缓存

原理同ctfshow/web入门/信息搜集/web9

但本题需在URL尾部添加/.index.php.swp (奇了个怪

.DS_Store

.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件,通过.DS_Store可以知道这个目录里面所有文件的清单

在URL尾部添加/.DS_Store下载到本地打开为乱码,得不到有效信息,使用github上的一个工具对DS_Store文件进行解析

得到一个文件名,在URL尾部添加后读取到flag

Git泄露

开发人员会使用 git 进行版本控制,对站点自动部署。但如果配置不当,可能会将 .git 文件夹直接部署到线上环境,这就引起了 git 泄露漏洞,我们可以利用这个漏洞直接获得网页源码

Log

git log命令可以查看历史版本信息

git泄露肯定要用到githack工具

打开环境用githack克隆一下发现没啥东西???

看了wp发现差的不是一点半点啊,

后来才知道现在用的这个工具不行…(被工具背刺 妹想到的

换了个工具克隆,这回没问题了

打开克隆的文件夹,根据题目信息,使用git log命令查看版本信息

可以看到现在的版本将flag移除,回退到上一个版本即可得到flag

git reset --hard HEAD^回退到上一个版本

在Git中,用HEAD表示当前版本,

所以回退到上一个版本就只需要使用命令:git reset --hard HEAD^

回退到上上个版本则使用命令:git reset --hard HEAD^^

要是需要回退到20个版本之前的话,就可以使用命令:git reset --hard HEAD~20

本题还可以使用git reset --hard 358fe9789f3d1f9eaafe913bb335df0c6c517d3e来回退

回退后使用ls命令查看目录,然后使用cat命令查看文件 得到flag

Stash

SVN泄露

http://www.qishunwang.net/news_show_62103.aspx

https://www.freesion.com/article/98721217183/