默认分类

【CatCTF 出题人WP】ez_js解题思路

0 条评论 默认分类 WP Yunoon

前言

web签到题,f12看源码找接口就行。

正文

  1. 失败后发现弹114514,搜就行。

  2. get_flag()函数返回接口

  3. 访问接口即可


【CatCTF 出题人WP】CatJump解题思路

0 条评论 默认分类 WP Yunoon

前言

出题5天,被秒半小时,当时做环境的时候数据忘了清干净,导致被非预期了,原本挺有趣的题目没多少人玩到。
感兴趣的师傅后续也可以试试原有的解题思路,希望可以给各位有些帮助。

出题灵感来源

  1. 一直在玩黑苹果,虽然11代intel已经是黑果的绝唱了,但中间的一些思路倒是很有意思的。
  2. 安装黑果的重点就在于硬件能否被苹果系统识别,因此就有了本题,大致就是通过检测系统的硬件配置,实现一个简单的macOS检测机制。
  3. 选手需要通过oc或者其他方式修改nvram中的内容,让程序识别到该系统的某些配置。

正文

当时预设了2种解题方式

解题思路1

  1. 拿vmdk文件,提取其中的可执行文件进行分析,最终锁定openssl解密的部分,利用题目描述中的「cat_jump」进行解密获得flag。

解题思路2

  1. 拿到vmdk,进行仿真挂载,但发现该磁盘无法在ubuntu等预设中进行挂载,因为这里用的是Alpine Linux,并且是Alpine是UEFI,Vmware中一般都是bios引导启动,如果是vmware workstation的话需要在创建完毕后,高级中设置为UEFI启动,即可进入游戏。

  2. 进入游戏后,这里有个小脑洞,一般的游戏都会有「退出」模块,一般为「q」,但这里用的是「]」,退出后即可发现读取文件失败了。

  3. 读取的是nvram中的一个特定变量,如无法检测到这个变量的话,即使进了系统登录界面也无济于事。

  4. 通过opencore做一个引导驱动,在nvram中写入报错中的特定变量名和变量值,将该引导挂载到虚拟机中,我这直接用的U盘创了个ESP分区,把EFI丢进去了。


    如果U盘是USB3.1的记得改下兼容性

  5. 启动到固件后,选择opencore启动,这样EFI引导就是走的opencore,模拟出的nvram也就能获取到。

  6. 最终进入启动界面即可获取flag。

解题思路3(非预期)

  1. strings cat_jump_clean.vmdk | grep CatCTF{
  2. 010编辑搜索
  3. 取证大师提取原始数据
  4. 记事本打开
  5. .....

总之就是磁盘数据没清干净,被一把梭了。


CatJump出题思路

0 条评论 默认分类 WP Yunoon

Date Created: November 15, 2022 9:13 AM
Status: To Do

灵感

  1. 一直在玩黑苹果,虽然11代intel已经是黑果的绝唱了,但中间的一些思路倒是很有意思的。
  2. 安装黑果的重点就在于硬件能否被苹果系统识别,因此就有了本题,大致就是通过检测系统的硬件配置,实现一个简单的macOS检测机制。
  3. 选手需要通过oc或者其他方式修改nvram中的内容,让程序识别到该系统的某些配置。

思路

  1. 利用opencore进入引导后,通过某些open core的特性来查看flag
  2. efi和镜像文件均放在dumpit导出的镜像中

实现方式

  1. 用户态
    1. 利用Linux系统init的过程中,在login之前拉起检测程序
  2. 内核态
    1. 在Linux内核中添加一个读取efi变量的模块,编译完毕后,通过qemu拉起系统。

相关技术

UEFI仿冒、Linux用户态

具体实现流程

  • 拉取镜像
  • 安装efivar、g++等环境
  • 编写CatJump Game模块
  • 编写读取EFI变量模块
  • 更改Init,将编写好的模块放入login模块前
  • 导出vmdk镜像

记录一下PVE环境的搭建过程

0 条评论 默认分类 小记录 Yunoon

前言

继硬件更新后,就可以做黑果了,前期起初打算是做物理机的黑果的,始终不成功,后面发现是镁光固态的缘故导致的(这个问题我以前在装笔记本的黑果时也遇到过)。

在以前机缘巧合下,观看了国光师傅的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
机箱:先马 黑洞

PVE虚拟设备

目前除了2台虚拟化的主力设备以外,我还将以前vmware中的虚拟机也迁移到了PVE上,以及一台群晖。

各个虚拟机搭建环节

macOS

前言

基本上是参考了国光师傅的整个流程,需要的是仔细,但由于粗心没有照着一步一步的点点点,甚至还额外学到了一些东西。

正文

镜像准备
  • macOS系统镜像
  • open core的引导镜像
  1. macOS的系统镜像,因为手头只有黑果小兵的打包镜像,只有黑果小兵的打包镜像,这种镜像是无法直接用OC引导的,需要刷入U盘才行。 我这是直接拿的官方的GitHub项目直接编译的。
  2. 官方镜像GitHub地址:https://github.com/thenickdude/OSX-KVM
    git clone https://github.com/thenickdude/OSX-KVM
    cd OSX-KVM
    cd scripts monterey
    make Monterey-recovery.img
    

    最终在当前make的目录会得到镜像文件

    将dmg改为iso后上传镜像即可。
创建虚拟机
  1. open core的引导镜像
    opencore的镜像直接从GitHub release下拿就行
    https://github.com/thenickdude/KVM-Opencore/releases

    解压后,上传即可。

  2. 避免安装时的循环死机,进PVE中,给配置文件添加参数。

    echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u
    reboot
    
  3. 然后就是添加引导、创建虚拟机的一个过程了,和物理机的黑果类似。

    更改名称、VM-ID即可,这里的VM-ID是唯一标识码。

  4. 选择opencore作为光盘镜像

    系统选择othoer

  5. 系统配置,显卡选用vmware兼容,其实默认也行
    Bios选用OVMF(UEFI),机器架构是q35

  6. 硬盘类型选择VirtoIO Block,缓存为Write back,硬盘大小请随意(最好不要低于128G,当然你如果硬要把应用全塞另外的盘,那就是你对)。

  7. CPU类型选Penryn,核心也是看着给,开启NUMA2.

  8. 内存最好不要低于8G,这里只能填MB,所以说1024*N这样。

  9. 网卡类型选择半虚拟化

  10. 再添加一块硬盘,目前我们只有引导盘,没有系统镜像盘。

配置修改

  1. 之后,进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。
    最终的配置文件就是下面这样

  2. 进入选项中,更改一下引导顺序。

    将opencore引导盘放置最前面。

启动虚拟机

  1. 点击启动后,成功启动,接下来就是黑苹果系统的正常安装操作。(以下仅截图就不做说明了)








    等待完毕后,进入系统即可,这里的时间没这么久,具体要取决于硬盘性能。

  2. 重启后,选择macOS installer

  3. 依旧会再次重启,这里在选择macOS installer

  4. 成功安装后,选择macOS启动即可。

安装完成

  1. 安装完成后,根据引导选择相关的配置进去即可,不要登录账号、不要登录账号、不要登录账号!!!,因为这里的三码是默认的,有风险。



  2. 安装完成

显卡直通

  1. 其实可以直接看国光师傅的了,直接添加PCI硬件就行了。

  2. 关闭显示的vmware兼容即可,因为RX580免驱,黑果的常识就不多说了。

  3. 之后我们需要注意一个点,因为没了vnc,我们需要直通一套键鼠才行。

    选择USB端口,关闭USB3.0、关闭USB3.0、关闭USB3.0、关闭USB3.0,这里也是个坑点,开了直接进不去系统就黑了。

  4. 这里的显卡已经成功驱动了。

网卡直通、蓝牙

和显卡一样的操作,直接添加即可。

蓝牙在USB设置中,同样添加即可。

关机相关

出现问题的话直接选择关闭主机,不要选关机,因为是other系统,PVE没有关闭系统的指令。

EFI配置

  1. 然后就是黑果的基本操作了,改三码、启动时间啥的。
  2. 这里就不多说了。(摆

windows

前言

windows虽然没这么多讲究,但我开始装的时候也遇到了点麻烦。

镜像准备

windows镜像
virtio 驱动镜像

windows镜像 https://www.microsoft.com/zh-cn/software-download/windows10

virtio官方镜像 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.215-2/virtio-win-0.1.215.iso

安装

  1. 安装就直接把windows镜像作为引导盘启动
  2. 把virtio挂载就行

GTX1060 直通

跟着掘金上的一篇文章成功驱动
没有用到vbios,就添加了下配置。
https://juejin.cn/post/7101389906043207694#heading-4

  1. 看pci地址
    lspci -v
  2. 查看显卡的具体路径
    lspci -n -s 82:00
    lspci -n -s 82:00
    
  3. 开启iommu和pci相关配置
    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"
    保存、退出
    
  4. 更新grub启动
    update-grub
  5. 加载vfio驱动
    nano /etc/modules
    添加以下内容
    vfio
    vfio_iommu_type1
    vfio_pci
    vfio_virqfd
    保存、退出
    
  6. 更新配置,重启
    update-initramfs -u -k all && reboot now
  7. 禁止host驱动GPU
    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
    
    保存、退出
    
  8. 更新配置
    update-initramfs -u -k all && reboot now

成功驱动

Vmware迁移

前言

这里也耽搁了大半天,主要问题是在vmdk文件的完整性,和硬盘的类型。

  1. vmdk的话有两种方法
    1. 直接将以前的vmdk复制出来,但有些虚拟机的vmdk是分片的,所以需要用工具进行整合,可以看我另一篇文章。
      https://yuno0n.top/index.php/archives/60/
    2. 我是用vmware导出ovf后(直接导出的vmdk无法使用),导入macOS里的vmware实现合并的,当时忘了可以用工具合并,导致用了2倍的时间。
  2. 硬盘类型先选IDE,成功驱动后,进系统,添加相关参数,就可以开启SCSI咯。

群晖

前言

群晖在zy的帮助下,一波点亮,没什么问题,就不多说了。


macOS下VMware合并vmdk

1 条评论 默认分类 黑果日记 Yunoon

前言

业务需求,导致需要做vmdk镜像,故有这篇文章

正文

查找工具路径

合并vmdk需要用到vmware-vdiskmanager,在安装了DMG后,系统是无法直接识别到该命令的。

右键进入该应用

进入对应路径,找到该工具

该工具的路径为/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager

正式使用

  1. 直接在终端中进入工具目录
    cd /Applications/VMware\ Fusion.app/Contents/Library
  2. 查看帮助文档
    ➜  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>)
    
  3. 参考最后的example3,更改对应的原vmdk,以及最终输出的vmdk路径。
    ./vmware-vdiskmanager -r sourceDisk.vmdk -t 0 destinationDisk.vmdk
  4. 最终成果
    ➜  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