Advent of Cyber 1 [2019] | [Day14] - [Day25]
[Day 14] Unknown Storage
直接访问这个网址,看 key 的值,可以找到这个文件

然后把这个文件作为路径添加到 url 的末尾,再次进行访问就可以看到内容

[Day 15] LFI
这就是本地文件包含的一个漏洞利用
进入网站,看到备忘录,里面写了第一道题目的答案,说明了假期旅游的地方

然后检查页面源代码,这里因为刷新的时候,标题什么的是直接显示,但是备忘录内容是等一会才会出现,可能是写的 js

这里看到 js 源码,是写了一个 get-file 的路由,来请求文件,所以我们可以去请求/etc/shadow 文件来查看信息,这里找到 charlie 的密码哈希,然后放到 john 中去破解,获得用户的密码

使用 ssh 连接,登录目标机器,就可以在用户目录下找到 flag1.txt 文件

[Day 16] File Confusion
第一个递归使用 zipfile 进行解压缩,然后创建目录,放入解压后的文件,python 脚本代码如下
import zipfile
import os
with zipfile.ZipFile('./123.zip', 'r') as zip_ref:
zip_ref.extractall('./123_zipep')
def run_execute(directory):
listOfFiles = os.listdir(directory)
for l in listOfFiles:
#拼凑文件路径
file_path = os.path.join(directory, l)
#判断是否是压缩包
if zipfile.is_zipfile(file_path):
new_dir = os.path.splitext(file_path)[0]
os.makedirs(new_dir, exist_ok=True)
with zipfile.ZipFile(file_path, 'r') as zip_ref:
zip_ref.extractall(new_dir)
run_execute(new_dir)
def count_non_zip_file(directory):
count = 0
for root,dirs,files in os.walk(directory):
for file in files:
if not zipfile.is_zipfile(os.path.join(root, file)):
count += 1
return count
run_execute('./123_zipep')
coutn = count_non_zip_file('./123_zipep')
print(f"非压缩文件数量: {coutn}")
第二个难点就是下载 pyexiftool,然后 et.get_metadata 的结果是一个列表,不是一个字典,然后利用的脚本如下
import exiftool
import os
root_directory = "/home/kali/Desktop/123_zipep"
count = 0
def file_comment():
global count;
with exiftool.ExifToolHelper() as et:
for dirpath,_,filenames in os.walk(root_directory):
for filename in filenames:
file_path = os.path.join(dirpath, filename)
try:
metadata_list = et.get_metadata(file_path)
for metadata in metadata_list:
#开始判断
for key,value in metadata.items():
if "version" in key.lower() and str(value).strip() == "1.1":
print(f"Match foun:{file_path}")
count += 1
break
except Exception as e:
print(f"Failed to read {file_path}: {e}")
file_comment()
print(count)
最后一个直接使用 grep 命令,grep -r "password"直接就可以找到结果了
[Day 17] Hydra-ha-ha-haa
这里破解 molly 的用户密码,那么猜测用户名是 molly,然后先尝试使用 nmap 对于 ip 端口进行扫描,发现只有 80 端口和 22
这里到 80 端口之后,发现只有一个登录页面,目录爆破也没有啥有用的信息,直接选择使用 hydra 爆破密码

然后 ssh 也是一样的爆破操作,然后就可以拿到 flag 了

Day 18] ELF JS
先是注册然后看到留言板,以及管理员会到这个页面的提示,就说明在这里使用 xss 进行获取 cookie
这里使用的 xhr,前后使用
来把前后的标签进行补全

然后开启监听就可以拿到 cookie,然后替换 cookie,刷新页面就可以进入管理员页面了

[Day 19] Commands
RCE 漏洞的利用,在/api/cmd 的接口,测试发现好像没怎么做过滤,所以直接找一个 bash 反弹 shell 的命令

本地监听一下端口,就可以拿到 shell 了

[Day 20] Cronjob Privilege Escalation
首先使用 nmap 扫描端口,找到 ssh 开放的端口

发现端口是 4567.然后知道是 sam 的用户,那么就可以使用 hydra 进行爆破

然后指定端口,ssh 连接登录

这里尝试传入一个 linpeas.sh 来看看利用点,不过在 crontab 中好像啥都没有,然后 find 一下 flag2,发现是 ubuntu 用户目录中,然后在 home 目录下找到一个 shell 文件,发现是在清理 tmp 文件,之前那个 linpeas 的脚本我就是传入到 tmp 目录,再查看已经没有了,所以这个就有可能是一个定时运行的任务

查看权限,发现我们拥有修改这个文件的权限,那么添加一个查看 flag2 的权限,然后读取到第二个 flag
[Day 21] Reverse Elf-ineering
基本的操作就是 db 下断点,dc 运行到下一个断点,ds 运行下一步,px 查看内存中的数据,基本这几步操作就可以完成这个任务
首先按照要求,针对问题,下了三个断点在对应位置

然后第一个 dc,之后查看 var_ch,这个位置在内存中是 rbp-0xc,然后先查看是 0,ds 运行下一步,然后再查看结果就是 1 了

下一题也是差不多

最后一个是设置为 0 之前的值,那么直接 dc 到断点位置,然后 px 进行查看就可以了

[Day 22] If Santa, Then Christmas
在函数最后下一个断点,然后 dc 运行到断点位置,然后使用 px 查看内存位置的数据,就可以拿到对应的结果了


[Day 23] LapLANd (SQL Injection)
这里在登录页面使用 bp 抓包,抓取登录的数据包然后保存为 1.txt 的文件,然后使用命令 sudo sqlmap -r 1.txt --dbs就可以给出详细的信息,发现 log_email 存在攻击,然后也会给出攻击后获得的数据库名字

然后使用参数 dump,来获取所有的表的信息, sudo sqlmap -r 1.txt -p log_email --dump --risk 3 --level 3,然后就可以在里面找到邮箱以及对应的哈希值

哈希值拿到网站去破解

拿到账号密码之后登录网站,最上面有一个上传文件的接口,可以尝试文件上传 webshell,这里发现 php 不可以上传,然后多测试几个后缀,使用 phtml 就可以成功上传,然后本地监听一下端口就可以拿到 shell,然后到/home/user 下拿到 flag
[Day 24] Elf Stalk
使用 nmap 进行扫描,找到了 5601,8000,9200 端口,其中 8000 端口只有一个日志文件,9200 端口是 Elasticsearch,也就是 ELK 中的数据库,接下来我们要浏览器进行访问这个 api 接口,然后找到其中的密码


查询之后 _search 就是查询接口,找到密码

然后下一个 root.txt 文件的内容,提示说是利用 cve 漏洞,这里找到了 kibana 的版本是 6.4.2,然后再谷歌搜索,找到他存在一个本地文件包含漏洞,正好可以去包含我们需要的 txt 文件,然后再到日志中查看到信息
https://github.com/mpgn/CVE-2018-17246


[Day 25] Challenge-less
终于做完了( •̀ ω •́ )y
3597

被折叠的 条评论
为什么被折叠?



