前言
近期在电脑上装了Windows+Linux双系统,日常学习和轻度办公类方面的东西都主要在Linux上进行,需要打游戏或者要用到Adobe全家桶等只有Windows才能干的事情的时候才切到Windows上去。用了也有大几个月了,Linux已经完全能够满足我的需求,包括编程、影音播放、Office文档处理、远程控制、IM软件等等在Linux上都已经拥有了较好的支持,用作主力系统完全不存在问题。既然都用作主力系统了,桌面一定得整的让自己看着舒服,于是就有了这篇文章。
近期在电脑上装了Windows+Linux双系统,日常学习和轻度办公类方面的东西都主要在Linux上进行,需要打游戏或者要用到Adobe全家桶等只有Windows才能干的事情的时候才切到Windows上去。用了也有大几个月了,Linux已经完全能够满足我的需求,包括编程、影音播放、Office文档处理、远程控制、IM软件等等在Linux上都已经拥有了较好的支持,用作主力系统完全不存在问题。既然都用作主力系统了,桌面一定得整的让自己看着舒服,于是就有了这篇文章。
赛后复盘发现感觉自己脑洞还是不够大。。。里面的Web题虽然难度不大但还是学到了一些零零碎碎的知识点
给了一个URL,打开后显示需要输入手机号获取验证码,随便打了一个发现发送验证码的接口有Debug信息直接把验证码返回了:
虽然比赛时只做出来一道题,但确实玩的挺开心的,所以记录一下
该题用到了Grafana应用中最为广泛的一个CVE漏洞CVE-2021-43798,可以未授权通过Grafana的插件实现任意文件读取。
虚拟机自省(Virtual Machine Introspection,简称VMI),是一种从外部(即Hypervisor)对虚拟机内部状态进行监控的技术。从Hypervisor层面,通过虚拟机的陷入,可以直接读取到虚拟机陷入瞬间的内存数据。
部署基于KVM的VMI开发环境主要分为三个部分,分别为KVM、QEMU、LibVMI。前两个是Linux下部署虚拟化的必备组件,LibVMI则是基于各种Hypervisor所实现的VMI库,官网地址https://libvmi.com。
比赛感受:笑死,根本不会做
借用比赛群里发的一个表情包,Golang逆向属实给整麻了属于是
考点:HTTP,略
Flag: CNSS{Y0u_kn0w_GET_and_POST}
中文翻译版:https://github.com/YYRise/black-hat-go
Go使用database/sql
包来进行对SQL数据库的操作。不同于Python中对不同数据库使用不同的依赖包和调用不同的方法,Go官方文档中其实是要求开发者都使用database/sql
中的方法来进行统一的数据库操作,而要操作不同的数据库则需要导入不同的数据库驱动即可:
To use
database/sql
you’ll need the package itself, as well as a driver for the specific database you want to use.You generally shouldn’t use driver packages directly, although some drivers encourage you to do so.(In our opinion, it’s usually a bad idea.) Instead, your code should only refer to types defined in
database/sql
, if possible. This helps avoid making your code dependent on the driver, so that you can change the underlying driver (and thus the database you’re accessing) with minimal code changes. It also forces you to use the Go idioms instead of ad-hoc idioms that a particular driver author may have provided.
中文翻译版:https://github.com/YYRise/black-hat-go
接下来第六章是讲SMB和NTLM的,但其实原版书里面讲的主要是基于SMB协议数据结构编码和解码的处理方式,对于具体的协议交互方式和算法细节书里只给了个官方文档的名称,但自己也没深入去研究过SMB的东西,所以顺便也把SMB相关的细节都看了一遍,内容比较多,所以单独写一篇记录一下
这一章书里的实战项目实现了一个SMB登录的过程,并且基于此写了个密码爆破程序,所以我的学习过程也是基于这个项目的代码的,地址https://github.com/stacktitan/smb,参考的版本也和书上的一致,为SMB2.1。
首先是一些做参考的文档和RFC:
中文翻译版:https://github.com/YYRise/black-hat-go
通过net.Dial(network, address)
来连接一个地址的特定端口(network
参数支持TCP、UDP、IP以及Unix Socket)
1 | conn, err := net.Dial("tcp", "scanme.nmap.org:80") |