月度归档: 2022 年 2 月

16 篇文章

【CTFd】靶场安装与配置
建议使用新版【CTFd】靶场安装与配置(同时支持Whale+Owl+AWD的Docker一键配置版v2) CTFd是githbu上开源的ctf靶场之一,配合上whale等插件,可以快速搭建一个靶场 CTFd 以下测试环境均为Ubuntu20.04,Python3.8 CTFd官网 CTFd-Github仓库 CTFd中文汉化 由于本人更喜欢汉化风格,所以使用的均为CTFd_chinese_CN下3.4.1版本的CTFd 克隆CTFd代码并安装相关依赖 #如果空白环境 sudo ./prepare.sh #如果是在宝塔环境下安装(bt自带的python会产生冲突) sudo apt-get --fix-broken install #如果已经安…
【脚本】安卓虚拟机配置
本文分为CM-x86和WSA(Win11安卓子系统)两部分 CM-x86 CM-x86是Android-x86的衍生版本,用作PC的安卓虚拟机再好不过 我使用的是CM-x86-14.1(64位),以下为配置 在安装时有以下几步 GPT安装 NO 创建新磁盘(New)->设置为启动盘(bootable)->写入分区表(Write) 安装Grub引导 EXT4文件格式 Reboot重启即可 但是完成以上几步,只能进入到安卓的Shell模式,无法进入图形界面,可以选择下面第三个的nomodeset模式 ...
【CRYPTO】MD5算法详解
前言 MD5是一种哈希算法,用来保证信息的完整性。 就一段信息对应一个哈希值,且不能通过哈希值推出这段信息,而且还需要保证不存在任意两段不相同的信息对应同一个哈希值。 不过MD5算法算出来的值也就16byte(即128bit),肯定存在相同的,找到另一个所花时间长短而已。 填充信息 我们要对一个字符串进行MD5计算,那么肯定要从这个字符串的处理入手。 我们知道一个字符的长度是1个byte,即8bit的长度。 MD5对待加密的字符串的处理是将一个字符串分割成每512bit为一个分组,形如N*512+R,这里的R是余下的位数。这个R分为几种情况: R=0时,需要补位,单补上一个512bit的分组,因为还要加入最后64个位的字符串长度。 R<…
【MISC】Wordle
TQLCTF-Wordle题目出自当下火热的填字游戏 填字游戏的规则为输入五个字母,然后分别返回五个颜色 绿色:位置和字母均正确 黄色:字母正确位置不正确 灰色:字母和位置均不正确 我们的任务就是用最少的次数,把答案找出来 在该题目中,颜色可以通过字节流分辨出来。在这之前,我在B站大学看到过一个讲述相关技术的视频,于是我就翻了下。 利用信息论解决Wordle问题 理论存在,实践开始 于是,又写了一个10K的代码,发现自己的代码只能做到平均4.3左右。 好废物啊我 于是上Github找轮子Wordle-solver 这个开源项目能做到平均3.4,然后就有了如下10K代码 ...
【脚本】WSL数据磁盘迁移
Windows中WSL默认磁盘为C盘,这导致在安装了Docker,Kali,Ubuntu等WSL后,C盘空间不足,于是参照相应Issue有如下脚本 #以下脚本均应该在PowerShell管理员模式下运行 wsl --list -v PS C:\Windows\system32> wsl --list -v NAME STATE VERSION * Ubuntu Running 2 docker-desktop-data Running 2 docker-desktop Running 2 kali-linux Stopped 2 #查看相应WSL wsl --shutdown #停止WSL wsl --export Ubuntu F:\WSL…
【脚本】NC中的SHA256解密
VNCTF-CRYPTO-ezmath是一道完全没难度的密码题,但是又是一道非常有难度的脚本题 这题只要返回4*N就好,难度就在写脚本了 在PWN等运用到nc的题目中,Sha256是最好的防止扫端口的计算方法。 由于Sha256不可逆,我们只好通过暴力或者撞库的方式找出所有解 但是这题又使用的是Sha256(????+XXXXXXXXXXXX)这样的方式,所以只好选择暴力了 再配合上pwntools,发就完事了 ...
【MISC】BASE系列加密解析
见到了一题比较离谱的base64题目,VNCTF2022-Web-gocalc0,可能是我太菜的原因,明明hint告诉我,flag在session里面,我却怎样都Base64出不来,一直说解密出错。 这题对于Web没有一点难度,姑且放在MISC分类里面。 Base16 使用字符:数字(0 ~ 9),字母(A ~ F) Base16先获取输入字符串每个字节的二进制值(不足8bit在高位补0),然后将其串联进来,再按照4bit一组进行切分(2^4=16),将每组二进制数分别转换成十进制,并对应下述编码。 即二进制转十六进制,对应下表 值 编码 值 编码 值 编码 值 编码 0 0 4 4 8 8 12 C 1 1 5 5 9 9 13 D 2 2…
【WEB】VM2沙箱逃逸
VM2的沙箱逃逸出自VNCTF2022-WEB-newcalc0 根据hint访问package.json ///source?path=/package.json ... "dependencies": { "express": "^4.17.1", "pm2": "^4.5.6", "vm2": "^3.9.5" } ... 再阅读源码,无其他位置可以注入,故寻找VM2的CVE 这里有个CVE数据库可以使用 Snyk Vulnerability Database(https://security.snyk.io/) 我们于是找到了一个VM2绕过的CVE Sandbox Bypass Affecting VM2 versions { get…
【MISC】图片点阵提取
在打VNCTF2022的时候遇到这样一道题,图片直接放在文章肯能看不清,各位可以点开来仔细观看 放大来看 又是点阵图,这不就是妥妥的点阵提取嘛,打开画图,量出来点之间的距离,然后开造! 结果,出来很意外,每个点之间的距离都是不一样的,都在49~51之间浮动,这就导致直接提取不能提取出有效的信息 好在,每一行每一列的点都在同一条直线上,只要求出最左上角的点,然后跑出每一行每一列的坐标,再拼接即可 拼接的话可以使用OpenCV库,但是Python的PIL(Pillow)好像更胜一筹,于是学了一下写了个脚本 from PIL import Image,ImageDraw image = Image.open("misc-img-pixel-1.pn…