1

安恒月赛7月-MISC wp

 2 years ago
source link: https://qwzf.github.io/2019/07/15/%E5%AE%89%E6%81%92%E6%9C%88%E8%B5%9B7%E6%9C%88-MISC%20wp/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

今天安恒月赛,和最近一部热剧有一点点关系。而我就做出了两道MISC题,还是写一下Write Up。。。。

MISC1:真正的CTFer在哪?!

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvMTFiNDg3MmFmZGU4MzIyMS5qcGc

下载解压题目文件,发现一张图片

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvZGIzN2E2MGU0Mjc4MGMwMy5qcGc

用binwalk分析一下,并没有隐藏文件

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvOTA0YTg5MmNhZTgwOTU1Yy5qcGc

查看图片详细信息,没有隐藏东西。然后看了下图片宽高(分辨率),并用winHex打开发现,高度不一致

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvNDM3ZmExOTVhNzQ5ZjMwMC5qcGc
aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvYTVmOTc5MWNkNWNiYzA0Mi5qcGc

将分辨率转换成16进制,0500应该改为0A00。高度恢复了

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvYTI4MzUxODVlNjhkMmY5OC5wbmc

发现flag了

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvNTkzMzQ0M2IyYTQ3NjllYi5qcGc

发现看不清,也可以看出。想用stegsove反色看一下,然而用stegsolve打不开修改高度后的图片。

于是百度了下原因

对一张正常的图片,通过修改其宽度或者高度隐藏信息,使计算出的CRC校验码与原图的CRC校验码不一致;windows的图片查看器会忽略错误的CRC校验码,因此会显示图片,但此时的图片已经是修改过的,所以会有显示不全或扭曲等情况,借此可以隐藏信息。

而Linux下的图片查看器不会忽略错误的CRC校验码,因此用Linux打开修改过宽或高的png图片时,会出现打不开的情况

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvOWUxZDkyOWRmMzYyNjA5OC5qcGc

箭头所指即为crc效验码。

可以通过爆破图片修改前的宽和高来匹配CRC校验码,并用正确的宽和高来修复图片

为了做题的方便,先尝试爆破高度,脚本如下(百度搜的,还不会写,只修改了参数):

# -*- coding: utf-8 -*-
import binascii
import struct
#\x49\x48\x44\x52\x00\x00\x01\xF4\x00\x00\x01\xA4\x08\x06\x00\x00\x00
crc32key = 0x6F03AD71
for i in range(0, 65535):
  height = struct.pack('>i', i)
  #CRC: 6F03AD71
  data = '\x49\x48\x44\x52\x00\x00\x05\x1C' + height + '\x08\x06\x00\x00\x00'
  crc32result = binascii.crc32(data) & 0xffffffff
  if crc32result == crc32key:
    print ''.join(map(lambda c: "%02X" % ord(c), height))
python复制代码

运行脚本,输出000009E4,即原图片高度为00 00 09 E4爆破成功

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvNzU0ZjRjYjEzY2NjM2U0ZC5qcGc

修改后,发现可以用stegsolve打开了

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvYWQzZDg3ZDY2MDJjN2U5NS5qcGc

MISC2:解不开的秘密

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvY2M2YWMzZWI3MTQ3YmYxNy5qcGc

下载题目文件并解压。发现一个word文档和file文件。word文档是加密的,file是一串16进制。Hex转ASCII

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvNjBhMTM1OGJlNTBmNDc4My5qcGc
aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvYzRkNjYzYTUxNjEyZDIxMC5qcGc

很明显应该是Base64,解密

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvMWU0ZDAyZjZjZjZmNTlmNy5qcGc

发现很多信息,第一印象先考虑password的值,发现并不对。于是仔细分析下解密的内容

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\RealVNC]

[HKEY_CURRENT_USER\Software\RealVNC\vnclicensewiz]
"_AnlClientId"="8f5cc378-2e1d-4670-80e0-d2d81d882561"
"_AnlSelected"="0"
"_AnlInclRate"="0.0025"

[HKEY_CURRENT_USER\Software\RealVNC\vncserver]

[HKEY_CURRENT_USER\Software\RealVNC\VNCViewer4]
"dummy"=""

[HKEY_CURRENT_USER\Software\RealVNC\VNCViewer4\MRU]
"00"="127.0.0.1"
"Order"=hex:00,01
"01"="127.0.0.1:5900"

[HKEY_CURRENT_USER\Software\RealVNC\WinVNC4]
"Password"=hex:37,5e,be,86,70,b3,c6,f3
"SecurityTypes"="VncAuth"
"ReverseSecurityTypes"="None"
"QueryConnect"=dword:00000000
"PortNumber"=dword:0000170c
"LocalHost"=dword:00000000
"IdleTimeout"=dword:00000e10
"HTTPPortNumber"=dword:000016a8
"Hosts"="+,"
"AcceptKeyEvents"=dword:00000001
"AcceptPointerEvents"=dword:00000001
"AcceptCutText"=dword:00000001
"SendCutText"=dword:00000001
"DisableLocalInputs"=dword:00000000
"DisconnectClients"=dword:00000001
"AlwaysShared"=dword:00000000
"NeverShared"=dword:00000000
"DisconnectAction"="None"
"RemoveWallpaper"=dword:00000000
"RemovePattern"=dword:00000000
"DisableEffects"=dword:00000000
"UseHooks"=dword:00000001
"PollConsoleWindows"=dword:00000001
"CompareFB"=dword:00000001
"Protocol3.3"=dword:00000000
"dummy"=""
html xml复制代码

百度搜索一下关键字RealVNC,发现这是VNC加密。了解一下相关知识

1、因为VNC的密码是保存在注册表中的,需要能读出来,这一点比PCANYWHERE的利用难度大一点

VNC3.0版本的的密码存放在HKEY_CURRENT_USER\Software\ORL\WinVNC3\Password 处

VNC4.0版本的密码存放在HKEY_CURRENT_USER\Software\RealVNC\WinVNC4\Password 处

2、假如我们已经获得了web服务器的webshell权限,同时对注册表有读取权限(这里如何获得web服务器的webshell权限,暂不介绍),我们使用命令webshell命令regedit -e c:\vnc.reg HKEY_CURRENT_USER\Software\RealVNC\WinVNC4\ 把注册表信息导出到c盘下的vnc.reg文件,然后右键编辑

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvNmVkOTRjZjliZjQ5OGVkNy5qcGc

如上图,我们看到了加密后保存在注册表里的vnc密码,可以使用破解软件vncx4.exe来破解该密码

命令:vncx4 -W

然后顺序输入上面的每一个十六进制数据,每输完一个回车一次就行了

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvYTU1YjQ1ZGM0OGZhMDQzMS5qcGc

得到的密码,应该就是word文档的密码了。输入密码打开

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvN2I4ZDZkMmZhMDg1OTIzNS5qcGc

根据提示,flag应该就在这里了。

首先,保存word里的图片,考虑图片隐写。然而并不是图片隐写,那flag应该还在word里。移走图片,发现

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvMGJlMDNkYjE1YTQzNDAxNC5qcGc

这个地方可能有东西,文件->选项->显示。显示(打印)隐藏文字。

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvNjYwZTc0MDA0MjljZTFkOC5qcGc

然而并没有什么用。于是直接复制那串空白,粘贴到一个地方,得到flag了。。。

aHR0cDovL2kxLmZ1aW1nLmNvbS82OTAzNzQvMzYyNjRjMTczMTQ3NjNmYi5qcGc

做了安恒月赛的题,发现自己依旧还很菜。不过在做题的过程中又学到了新知识。

小白进阶ing。。。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK