【CatCTF 出题人WP】ez_js解题思路
前言
web签到题,f12看源码找接口就行。
正文
失败后发现弹114514,搜就行。
get_flag()函数返回接口
访问接口即可
出题5天,被秒半小时,当时做环境的时候数据忘了清干净,导致被非预期了,原本挺有趣的题目没多少人玩到。
感兴趣的师傅后续也可以试试原有的解题思路,希望可以给各位有些帮助。
当时预设了2种解题方式
拿到vmdk,进行仿真挂载,但发现该磁盘无法在ubuntu等预设中进行挂载,因为这里用的是Alpine Linux,并且是Alpine是UEFI,Vmware中一般都是bios引导启动,如果是vmware workstation的话需要在创建完毕后,高级中设置为UEFI启动,即可进入游戏。
进入游戏后,这里有个小脑洞,一般的游戏都会有「退出」模块,一般为「q」,但这里用的是「]」,退出后即可发现读取文件失败了。
读取的是nvram中的一个特定变量,如无法检测到这个变量的话,即使进了系统登录界面也无济于事。
通过opencore做一个引导驱动,在nvram中写入报错中的特定变量名和变量值,将该引导挂载到虚拟机中,我这直接用的U盘创了个ESP分区,把EFI丢进去了。
如果U盘是USB3.1的记得改下兼容性
启动到固件后,选择opencore启动,这样EFI引导就是走的opencore,模拟出的nvram也就能获取到。
最终进入启动界面即可获取flag。
总之就是磁盘数据没清干净,被一把梭了。
Date Created: November 15, 2022 9:13 AM
Status: To Do
UEFI仿冒、Linux用户态
继硬件更新后,就可以做黑果了,前期起初打算是做物理机的黑果的,始终不成功,后面发现是镁光固态的缘故导致的(这个问题我以前在装笔记本的黑果时也遇到过)。
在以前机缘巧合下,观看了国光师傅的PVE环境搭建,感觉很酷,在不追求极致的性能下,我就选择了PVE来搭建。
CPU: i5 8600k
内存: 16G+8G+8G
主板:MSI Z370 银蛇环 GAMMING
硬盘(PVE系统):凯侠 RC10 1T
显卡1(windows游戏):Nvidia GTX1060 5G
显卡2(macOS): AMD RX580 2304SP 8G
电源:鑫谷 650W
网卡:BCM94360CD
硬盘:西数 1T+2T、影驰240G(存放原神)
显示器1:DELL 2404
显示器2:DELL 2304
机箱:先马 黑洞
目前除了2台虚拟化的主力设备以外,我还将以前vmware中的虚拟机也迁移到了PVE上,以及一台群晖。
基本上是参考了国光师傅的整个流程,需要的是仔细,但由于粗心没有照着一步一步的点点点,甚至还额外学到了一些东西。
git clone https://github.com/thenickdude/OSX-KVM
cd OSX-KVM
cd scripts monterey
make Monterey-recovery.img
open core的引导镜像
opencore的镜像直接从GitHub release下拿就行
https://github.com/thenickdude/KVM-Opencore/releases
解压后,上传即可。
避免安装时的循环死机,进PVE中,给配置文件添加参数。
echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u
reboot
然后就是添加引导、创建虚拟机的一个过程了,和物理机的黑果类似。
更改名称、VM-ID即可,这里的VM-ID是唯一标识码。
选择opencore作为光盘镜像
系统选择othoer
系统配置,显卡选用vmware兼容,其实默认也行
Bios选用OVMF(UEFI),机器架构是q35
硬盘类型选择VirtoIO Block,缓存为Write back,硬盘大小请随意(最好不要低于128G,当然你如果硬要把应用全塞另外的盘,那就是你对)。
CPU类型选Penryn,核心也是看着给,开启NUMA2.
内存最好不要低于8G,这里只能填MB,所以说1024*N这样。
网卡类型选择半虚拟化
再添加一块硬盘,目前我们只有引导盘,没有系统镜像盘。
之后,进PVE系统,nano更改一下磁盘的类型,改为cache=unsafe
nano /etc/pve/qemu-server/<VM-ID>.conf 这里的VM-ID就是开头创建的VM-ID。
再添加CPU信息
INTEL: args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc
AMD: args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+avx2,+aes,+fma,+fma4,+bmi1,+bmi2,+xsave,+xsaveopt,check
然后control + O
,回车键保存文件,control + X
,退出nano。
最终的配置文件就是下面这样
进入选项中,更改一下引导顺序。
将opencore引导盘放置最前面。
点击启动后,成功启动,接下来就是黑苹果系统的正常安装操作。(以下仅截图就不做说明了)
等待完毕后,进入系统即可,这里的时间没这么久,具体要取决于硬盘性能。
重启后,选择macOS installer
依旧会再次重启,这里在选择macOS installer
成功安装后,选择macOS启动即可。
安装完成后,根据引导选择相关的配置进去即可,不要登录账号、不要登录账号、不要登录账号!!!,因为这里的三码是默认的,有风险。
安装完成
其实可以直接看国光师傅的了,直接添加PCI硬件就行了。
关闭显示的vmware兼容即可,因为RX580免驱,黑果的常识就不多说了。
之后我们需要注意一个点,因为没了vnc,我们需要直通一套键鼠才行。
选择USB端口,关闭USB3.0、关闭USB3.0、关闭USB3.0、关闭USB3.0,这里也是个坑点,开了直接进不去系统就黑了。
这里的显卡已经成功驱动了。
和显卡一样的操作,直接添加即可。
蓝牙在USB设置中,同样添加即可。
出现问题的话直接选择关闭主机,不要选关机,因为是other系统,PVE没有关闭系统的指令。
windows虽然没这么多讲究,但我开始装的时候也遇到了点麻烦。
windows镜像
virtio 驱动镜像
windows镜像 https://www.microsoft.com/zh-cn/software-download/windows10
跟着掘金上的一篇文章成功驱动
没有用到vbios,就添加了下配置。
https://juejin.cn/post/7101389906043207694#heading-4
lspci -v
lspci -n -s 82:00
lspci -n -s 82:00
nano /etc/default/grub
修改
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off video=efifb:off vfio-pci.ids=10de:1c04,10de:10f1"
保存、退出
update-grub
nano /etc/modules
添加以下内容
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
保存、退出
update-initramfs -u -k all && reboot now
nano /etc/modprobe.d/pve-blacklist.conf
options vfio_iommu_type1 allow_unsafe_interrupts=1
options kvm ignore_msrs=1
options kvm-intel nested=Y
blacklist nouveau
options nouveau modeset=0
blacklist nvidiafb
blacklist amdgpu
blacklist radeon
blacklist nvidia
blacklist snd_hda_codec_hdmi
blacklist snd_hda_intel
blacklist snd_hda_codec
blacklist snd_hda_core
保存、退出
update-initramfs -u -k all && reboot now
成功驱动
这里也耽搁了大半天,主要问题是在vmdk文件的完整性,和硬盘的类型。
群晖在zy的帮助下,一波点亮,没什么问题,就不多说了。
业务需求,导致需要做vmdk镜像,故有这篇文章
合并vmdk需要用到vmware-vdiskmanager
,在安装了DMG后,系统是无法直接识别到该命令的。
右键进入该应用
进入对应路径,找到该工具
该工具的路径为/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager
cd /Applications/VMware\ Fusion.app/Contents/Library
➜ Library ./vmware-vdiskmanager -h
./vmware-vdiskmanager: illegal option -- h
VMware Virtual Disk Manager - build 18811640.
Usage: vmware-vdiskmanager OPTIONS <disk-name> | <mount-point>
Offline disk manipulation utility
Operations, only one may be specified at a time:
-c : create disk. Additional creation options must
be specified. Only local virtual disks can be
created.
-d : defragment the specified virtual disk. Only
local virtual disks may be defragmented.
-k : shrink the specified virtual disk. Only local
virtual disks may be shrunk.
-n <source-disk> : rename the specified virtual disk; need to
specify destination disk-name. Only local virtual
disks may be renamed.
-p : prepare the mounted virtual disk specified by
the volume path for shrinking.
-r <source-disk> : convert the specified disk; need to specify
destination disk-type. For local destination disks
the disk type must be specified.
-x <new-capacity> : expand the disk to the specified capacity. Only
local virtual disks may be expanded.
-R : check a sparse virtual disk for consistency and attempt
to repair any errors.
-e : check for disk chain consistency.
-D : make disk deletable. This should only be used on disks
that have been copied from another product.
-U : delete/unlink a single disk link.
Other Options:
-q : do not log messages
Additional options for create and convert:
-a <adapter> : (for use with -c only) adapter type
(ide, buslogic, lsilogic). Pass lsilogic for other adapter types.
-s <size> : capacity of the virtual disk
-t <disk-type> : disk type id
-z <level> : compression level for -t 5. Valid range: [0,9]
Default: 1
Disk types:
0 : single growable virtual disk
1 : growable virtual disk split into multiple files
2 : preallocated virtual disk
3 : preallocated virtual disk split into multiple files
4 : preallocated ESX-type virtual disk
5 : compressed disk optimized for streaming
6 : thin provisioned virtual disk - ESX 3.x and above
The capacity can be specified in sectors, KB, MB or GB.
The acceptable ranges:
ide/scsi adapter : [1MB, 8192.0GB]
buslogic adapter : [1MB, 2040.0GB]
ex 1: vmware-vdiskmanager -c -s 850MB -a ide -t 0 myIdeDisk.vmdk
ex 2: vmware-vdiskmanager -d myDisk.vmdk
ex 3: vmware-vdiskmanager -r sourceDisk.vmdk -t 0 destinationDisk.vmdk
ex 4: vmware-vdiskmanager -x 36GB myDisk.vmdk
ex 5: vmware-vdiskmanager -n sourceName.vmdk destinationName.vmdk
ex 6: vmware-vdiskmanager -k myDisk.vmdk
ex 7: vmware-vdiskmanager -p <mount-point>
(A virtual disk first needs to be mounted at <mount-point>)
./vmware-vdiskmanager -r sourceDisk.vmdk -t 0 destinationDisk.vmdk
➜ Library ./vmware-vdiskmanager -r /<Your_Source_Path>/win2k3.vmdk -t 0 /<Your_Dest_Path>/win2k3.vmdk
Creating disk '<Your_Dest_Path>/win2k3.vmdk'
Convert: 100% done.
Virtual disk conversion successful.
➜ packet ll
total 37478144
-rw------- 1 yunoon admin 4.0G 9 6 17:05 win2k3.vmdk
-rw-------@ 1 yunoon admin 14G 9 6 11:14 win7.vmdk
➜ packet