Misc

List of file signatures

  • 使用010Editor打开,查看jpeg的图片二进制可以观察得到,jpeg的文件头前4个字节反了

image-20240916195520086

  • 由次猜测该文件是每4个字节翻转一次顺序,故编写Python脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 打开原始文件以二进制模式读取
with open(r".\fl4g.jpeg", 'rb') as infile:
# 读取所有内容
b = infile.read()

# 准备写入的内容
reversed_bytes = bytearray()
chunk_size = 4

# 处理每4个字节
for i in range(0, len(b), chunk_size):
chunk = b[i:i + chunk_size]
if len(chunk) < chunk_size:
chunk = chunk.ljust(chunk_size, b'\x00')
reversed_chunk = chunk[::-1]
reversed_bytes.extend(reversed_chunk)

# 写入到新文件
with open(r".\fl4g_reversed.jpeg", 'wb') as outfile:
outfile.write(reversed_bytes)
  • 最后得到图片,图片里面有显示flagFlag{byt3_sw4p}

image-20240916195727606

Pwn

netcat

  • nc一下,签到即可得到flag
1
flag{da671e16-29d4-4374-8526-dbcf78a5849c[TEAM_HASH]}

stack oooooooverflow!!!

  • 下载附件,打开IDA,静态分析得到

不要动我的笔记!!!

  • 经典的堆入门题,还是glibc2.23版本的,这题有原题,甚至是pwn手入门堆必做的题目
  • 利用的漏洞是uaf,利用free后指针没置0还可以修改堆块的内容。
  • 先申请一个0x20的堆,写入文本内容
  • 再申请一个0x20的堆,写入文本内容
  • 释放这俩个堆块
  • 再申请一个0x8字节的堆

1por

  • 简单rop链

baby_hhhheap~

Web

来签个到吧~~

  • 启动容器后,打开网页,会出现网页源代码发现
    • $_REQUEST["\x69\x64"]中,\x69\x64是id的字节表示
    • base64_encode("\150\x65\x6e\x61\x6e")\150\x65\x6e\x61\x6ehenan的字节表示
    • base64_encode("\150\x65\x6e\x61\x6e")返回的是henan经过base64编码的结果
    • 该代码的意思就是如果id == aGVuYW4=,就会执行环境变量GZCTF_FLAG,这样就能得到flag

image-20240916172756978

  • 所以直接在url这边添加?id=aGVuYW4=即可得到flag

image-20240916173402260

哎哟你干嘛~~

  • 启动容器打开网址,看到要求要点击99999999才会出现flag

  • 这种用户与网友交互的一般是js实现,直接查看网页源代码,看看js的代码逻辑和点击次数的变量

  • F12打开源代码,搜索99999999

  • 发现网页逻辑,同时也发现变量H1被定义为点击次数

image-20240916173711839

  • 这样就直接在F12,在控制台中输入H1=99999998;c();
  • 这样输入的逻辑是因为,光让H1=99999999是没用的,因为没有进入函数c();
  • 而进入函数c();在判断之前就H1会自增1。所以我需要先让H1=99999998然后再调用函数c();即可满足触发get flag的条件
  • 然后页面就会出现flag的base64的编码

image-20240916174622272

  • NYSEC{ac24adc5685ff-f6402e80bc-6fb6ae59-62aa6666}

玩会小游戏吧

flag{d794c631-2604-48fa-83e0-277f086bb102}

  • 题目简介说游戏玩到9999分就可以拿到flag了,又是js分析题目,直接打开容器f12分析源码,找到canvassv = "ZmxhZ3tkNzk0YzY",base64解码得到flag{d794c6

image-20240916175817860

  • 推断canvassv这个变量的值就是flag,base64编码后的值,然后直接搜索canvassv,然后将这些字符串base64解码

image-20240916180017537

  • 得到

image-20240916180102451

Forensics

重生之我是一名警察

  • 拿到题目附件后win + rcmd,输入命令certutil -hashfile ./windows7disk.E01 SHA256,即可解出SHA256的值
1
e0d680e535d8260ee1f32bdc7ea8253bff6f6ea365fafb60a996749583dbbdec

task1

  • win+r使用eventvwr.msc事件查看器,查看\Windows\System32\winevt\Logs\System.evtx这一日志,然后确定事件源为Kernel-Processor-Power,找到计算机的名称WIN-49I0SNRJAMF

image-20240915200015892

task2

  • 继续查看Application日志,在来源为MsiInstaller,会看到如下,搜索发现该应用是夜神模拟器,按照格式要求,即输入为夜神模拟器2021年05月03日

image-20240915205542331

task3

  • 原来是翻安全日志,发现ID4624有登录时间,但是没有登录用户

  • 之后转换思路

  • [root]\Windows\System32\config文件夹下的SAM复制一份到Ubuntu下,使用工具chntpw查看用户

  • 使用chntpw -l SAM命令得到用户,就四个用户,发现是poiuy是操作系统最后登录的用户

1
2
3
4
5
| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrator | ADMIN | dis/lock |
| 01f5 | Guest | | dis/lock |
| 03e8 | poiuy | ADMIN | |
| 03e9 | user | | dis/lock |

task4

  • [root]\Windows\System32\config找到SOFTWARE,然后使用注册表编辑器打开该文件。找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion,在里面查看InstallDate
  • InstallDate的值为1620038668
  • 然后Windows使用的是Unxi时间戳,转换一下

image-20240916204538679

  • 然后UTC时间再转换为北京时间即可2021-05-03 18:44:28

task6

  • 继续查看Window日志,查看"[root]\Windows\System32\winevt\Logs\Setup.evtx"日志,发现一个更新信息,这里面有出现操作系统版本号

image-20240915230629554

task8

  • 使用DiskGenius分析该磁盘的扇区,发现总字节数为32212254720

image-20240916132810494

task9

  • 继续查看[root]\Windows\System32\winevt\Logs\Security日志,筛选事件ID为4624
  • 然后查找到poiuy的登录用户名,Sid就在其上面

image-20240915235007277