任务摘要:
1.学习html知识,利用phpstudy软件,html输出学号姓名,加分项:用html写一个登录框
2. 学习markdown语法
3.在ctfhub平台https://www.ctfhub.com/#/index 完成 技能树中的基础知识,web中的前置技能,以及信息泄漏,密码口令;加分项:web中的sql注入(精力旺盛的可以多写写)。掌握其中的工具,总结其中的知识点。()
先导知识
1.<!DOCTYPE html>
声明文档的解析类型(document.compatMode),避免浏览器的怪异模式。
document.compatMode:
BackCompat:怪异模式,浏览器使用自己的怪异模式解析渲染页面。
CSS1Compat:标准模式,浏览器使用W3C的标准解析渲染页面。
这个属性会被浏览器识别并使用,但是如果你的页面没有DOCTYPE的声明,那么compatMode默认就是BackCompat,
浏览器按照自己的方式解析渲染页面,那么,在不同的浏览器就会显示不同的样式.如果你的页面添加了<!DOCTYPE html>那么,那么就等同于开启了标准模式那么浏览器就得老老实实的按照W3C的标准解析渲染页面,这样一来,你的页面在所有的浏览器里显示的就都是一个样子了。
这就是<!DOCTYPE html>的作用
2.html标签中的<meta charset="utf-8">
告知浏览器此页面属于什么字符编码格式,下一步浏览器做好“翻译”工作。
3<meta>标签用来提供有关html文档的元数据,
元数据不会显示给用户看,但浏览器可以识别,同时对SEO(搜索引擎优化)起着重要作用
首先我们下载安装phpstudy
1.启动Apache
2.在桌面编辑好后缀为.php的文本文档,代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
学号: </br>
姓名:
</body>
</html>
将该php文件放进根目录中的WWW文件夹之中,确保apache开启,不要删除index.html文件,在浏览器输入域名并打开
Markdown 是一种可以使用普通文本编辑器编写的轻量级标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式,可以导出 PPT、LaTex、HTML、Word、PDF、Epub、JPG 等多种格式的文档,文档后缀为 .md。
有一部分小伙伴被这个【轻量级】、【标记】、【语言】等名词直接劝退,还口中言语:【已经学了这么多种语言了】,【我不要再学新语言了】之类的话,我要说的是,你大概误会它了,Markdown 的语法可以说是非常简单,简单到常用的语法操作不超过十个,相较于同为标记语言的 HTML 来说,Markdown 被称为小儿科也不为过,学习成本极低,上手率超高,并且一旦熟悉这种语法规则,稍加练习,就会有一劳永逸的效果,回报率极高
1.markdown换行方式有很多种
直接在一句话后面敲两个空格
两句话之间加一个空行
如果你在编辑的时候,想让一行文字分成几段在显示的时候换行,就在中间加</br>
2.Markdown加粗写法
< b > 加粗内容 < / b >
3.<table border="1">
border 属性规定表格单元周围是否显示边框。
值 "1" 指示应该显示边框,且表格不用于布局目的
4.标题
一级标题对应一个#
二级标题对应两个#
以此类推,共六级标题
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ikun天地</title>
<center><b>登录框</b></br>
<table border="1">
<body>
<form action="">First name:<input id="username" type="t"></br>
Last name:<input type="password" value="" id=""></br>
<input type="submit"value="提交">
</form>
</center>
<input type= "reset'>
</body>
</html>
ctfclub基础知识
竞赛模式
Jeopardy-解题
计分方式:前三额外计分或者动态积分
题目类型:主要包含 Web 网络攻防 、 RE 逆向工程 、 Pwn 二进制漏洞利用 、 Crypto 密码攻击以及 Misc 安全杂项 这五个类别,个别比赛会根据题目类型进行扩展。
AwD-攻防模式
A ttack w ith D efense(AwD)全称攻防模式。每个队伍之间的GameBox配置及漏洞是完全一致
的,攻防模式CTF赛制可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负,是一种竞争激烈,具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力和技术,也比体力(因为比赛一般都会持续24至48小时左右),同时也比团队之间的分工配合与合作。
AWP-攻防增强
攻击模式下,平台会给出题目的访问链接,选手按照解题模式做题提交flag即可完成攻击,当完成攻击后, 每轮计算分数时均会计算该题目的攻击得分。
防御模式下,选手需要自行挖掘题目的漏洞,并制作漏洞补丁包上传至平台,之后点击验证。验证时平台会新建一个完全干净的题目环境,使用预置的Exploit进行攻击,若攻击成功当验证通过之后(即已经完成修补),每轮计算分数均会认为该题目已防御。
ADP通常仅包含Web
及Pwn
两种类型的题目
仅攻击一次,防御一次
RHG-自动化[ AI自动化]
利用人工智能或是AI或是自动化攻击程序来全自动的挖掘并利用漏洞,考验选手对于漏洞理解
以及工程化
能力,选手需要编写自动化程序来请求接口获取题目相关信息,该类程序通常称之为bot
,在程序中全自动
访问并挖掘目标漏洞,完成利用漏洞攻击并获取flag的过程。获取到的flag也由程序自动化提交。RHG因为是由bot全自动进行工作,所以比赛开始即可视为结束。剩下的一切全看参赛选手编写的自动化bot的工作情况。
比赛过程中不允许选手对bot进行任何的操作(包括debug/patch等等)。选手仅能看到自己的bot完成了哪些题。目前的得分情况等等。
RW-真实世界
常见题型为VM/Docker逃逸、针对浏览器的攻击、针对IoT/Car等设备的攻击,Web类攻击等等,上台演示攻击,无flag类型竞赛
KoH-抢占山头
类似于AwD,面对的是一个黑盒的目标,挖掘漏洞并利用漏洞控制目标,token或者队名写入到指定文件,并加固,主办方会定期去检查标识文件,根据文件中的队伍标识来判定本回合分数给予哪个队伍
Mix[混合]
以上多种赛制自由组合,满足选手竞赛需求
比赛形式
线上赛多为初赛
, 线下赛多为决赛
线上
选手通过主办方搭建的比赛平台在线注册,在线做题并提交flag,线上比赛多为解题模式,攻防模式较为少见。通常来说对于长时间未解出的题目,主办方会酌情给出提示(Hint
)来帮助选手做题。
线下
解题+AWD ,解题+RW 等等
题目类型
5个大类,有时增加如移动设备(Mobile), 电子取证(Forensics)等,近年来也会出来混合类型的题目,例如在Web中存在一个二进制程序,需要选手先利用Web的漏洞获取到二进制程序,之后通过逆向或是Pwn等方式获得最终flag
Web
考验web攻防,考点SQL注入
、XSS
、代码执行
、代码审计等等,
一般情况下Web题目只会给出一个能够访问的URL。部分题目会给出附件
Pwn
考验二进制漏洞的挖掘和利用
,堆栈溢出
、格式化漏洞
、UAF
、Double Free
等常见二进制漏洞上,对题目中二进制可执行文件进行逆向分析,找出其中的漏洞并进行利用,编写对应的漏洞攻击脚本(Exploit
),进而对主办方给出的远程服务器进行攻击并获取flag通常来说Pwn类题目给出的远程服务器信息为nc IP_ADDRESS PORT
,例如nc 1.2.3.4 4567
这种形式,表示在1.2.3.4
这个IP的4567
端口上运行了该题目
Reverse
Re类题目考察选手逆向工程
能力。题目会给出一个可执行二进制文件,有些时候也可能是Android的APK安装包。选手需要逆向给出的程序,分析其程序工作原理
Crypto
Crypto类题目考察选手对密码学
相关知识的了解程度,诸如RSA
、AES
、DES
等都是密码学题目的常客。有些时候也会给出一个加密脚本和密文,根据加密流程逆推出明文。
Misc
Misc意为杂项,题型有图片隐写、视频隐写、文档隐写、流量分析、协议分析、游戏、IoT相关等等。五花八门,种类繁多。
首先安装
brup suite
改环境变量,网上的教程有区别,添加的变量也不一样,系统变量可以映射到所有用户,所以不用改用户变量了,头皮发麻%&……%¥……*(&76后面经过不懈努力删了几个jdk终于改对了
brup在cmd中打开的代码,写成.bat 打开
java -noverify -Xbootclasspath/p:burp-loader-keygen-2020_2.jar -jar burpsuite_pro_v2020.2.jar
HTTP请求
host: 主机名
User-Agent:客户端基本环境信息
Content-Type:传参的类型
Content-Length: 请求包长度
Referer: 上一步来源。
X-Forwarded-For:当前身份ip
Cookie:用户身份标识
题目提示使用CTFHUB 方式,于是burp改包
302响应
打开环境点击give按钮打开火狐,查看网络监视器,发现有一个302请求,使用crul -v url命令(url是302请求对应的url)
cookie
仅有admin可以得到flag,将admin=0改成admin=1即可
基本认证
题目:HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。详情请查看 https://zh.wikipedia.org/wiki/HTTP(打不开)
用别人搜出来的看看
下载附件尝试账号密码发现有如下参数
Authorization: Basic MTIzNDU2OnBhc3N3b3Jk
可以猜测账号为admin
将有base64加密编码的请求添加进intruder,按下图所示配置好字典
第一次失败,寻找原因,应该是放错了请求
应该放这个请求
解码发现
少了个:(加上!)
发现还是有问题,再坚持检查一下,改请求,按照status大小排列得到
重发查看
查看响应得到flag
响应源代码
嗯....
好直接,真的就在响应包源代码里
目录遍历
目录中点击寻找.over)
phpinfo
页内查找flag
网站源码(扫描备份文件)
python源码扫描备份文件:
for in遍历数组(最好在循环对象属性使用)
code == 200 客户端请求已成功。
import requests
url = 'http://challenge-691b238771fca9ae.sandbox.ctfhub.com:10800/'
li1 = ['web', 'website', 'backup', 'back', 'www', 'wwwroot', 'temp', '']
li2 = ['zip', 'rar', 'tar', 'tar.gz', 'git', 'svn', 'swp', 'bak']
for i in li1:
for j in li2:
url_final = url + i + "." + j
r = requests.get(url_final)
if r.status_code == 200:
print(url_final + ' ' + str(r))
with open('200.txt', 'a', encoding='utf-8') as f:
f.write(url_final + ' ' + str(r) + '\n')
else:
print('鸡你太美')
disearch
由python开发的目录扫描工具j
目的是扫描目标网站的敏感文件和目录从而找到网站的突破口。使用方法
--help 显示此帮助信息并退出
-u 指定网址
-e 指定网站语言
-w 指定字典
-r 递归目录(跑出目录后,继续跑目录下面的目录)
-random-agents 使用随机UA
sudo apt-get install dirsearch
python版本太高,貌似安装不了???(其实不是,后面安装好了,方法没弄对)
或者直接加后缀.index.php.bak
vim缓存
好像一定要下载vim编辑器
....没下...
正常应该是在linux的vim编辑器运行一下就ok
/.index.php.swp
用学长发的typora打开才能看见flag 有关内容
(不知道为什么,有空问问)
先将/.DS_Store加入后缀得到文件,去除空格后加入后缀得到flag
GIT泄露
用git clone装了disearch
先用disearch扫一遍 git后缀一片 绿色,
说明存在git泄露,根据提示使用githack根据大哥的博客得知一定要在py2的环境下运行,
打开readme.txt说支持py3,今年4月开始,在文件夹打开cmd
找到这个
学习了一下git语法
git log 查看提交的历史记录
git log与题目呼应
弄了很久
git在windows里问题很大,命令经常执行不了,和盘权限可能也有关系吧大概...
弱口令
本质上就是导入常用弱口令字典爆破,多下载几个试试可以了
我用的是这个
SuperWordlist/FastPwds.txt at master · fuzz-security/SuperWordlist · GitHub
重发得到response
FLAG突然提交不了,发现代理没关,关掉...
默认口令
有验证码...先想到用python的验证码库搭配burp爆破
SQL注入:
是一种将SQL语句插入或添加到应用(用户)的输入参数中的攻击
参数传递给SQL数据库服务器解析执行
根据sql数据类型分为
整型注入
字符串类型注入
在ctfclubSQL整形注入第一题分析思路:
①首先判断是否能够注入
1.1 and 1=1/1 and 1=2回显
在该例子中前者返回正确说明在查询完“id=1”之后执行了and及其之后的语句,存在SQL注入漏洞
②得到此表的列数
order by:用于对结果集按照一个列或者多个列进行排序(默认升序ASC).