Shino

Shino Channel

$ sudo echo Shino >> YourHeart$ |

Hitcon2023 Reverse Wps | AK With StrawHat

碎碎念 应该是在 Straw Hat 队认真打的第一场国际赛事吧,可惜半天左右就把逆向全打完了(驾驶员技能发动 我一个人就够了.jpg),有些失望(但是很爽)。

SCTF2023 - SycGson

打开看到 Golang 字样,使用 go_parser 恢复一下符号。 https://github.com/0xjiayu/go_parser 1 2 3 4 5 6 7 v24 = "115.239.215.75"; v25 = 14LL; v26 = "12345"; v27 = 5LL; *((_QWORD *)&v2 + 1) = 2LL; v7 = os_exec_Command(); v12 = os_exec__Cmd_StdoutPipe(v7); 奇妙的逻辑,可以通过字符串判断是 nc 取数据,nc 115.239.215.75 12345 看一眼拿到的数据,形式如下: 1 2 3 4 5 6 7 {1801 [ {1878 1630 {1600 1047 1355}} {1968 1923 {1602 1096 1287}} {1805 1572 {1600 1102 1283}} {1963 1669 {1600 1165 1327}}] 4} 看数据 parse 逻辑,从.rodata段残留的结构体信息恢复结构体: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 struct City { Name: int; Neighbours: []NeighbourCity; Delta: uint8 } struct NeighbourCity { Name: int; Distance: int; Cost: Cost; } struct Cost { Transportation: int; Time: int; Expense: int; } 看 FindPath 逻辑,简单易懂,每次选一个 NeighborCity,加上Distance,减去 Transportation, 异或 Time,乘上 Expense,加上点 Delta,找一条五种权重都满足约束的路径。

Ciscn2023-Pwsh Powershell反混淆对抗实战

碎碎念 ​ 刚进黑灯模式就出了flag,看到还是 0 解题以为可以拿全场唯一解光荣退役了,结果平台的flag配置是烂的,以为 0 解的原因是平台烂直接找运维对线,拉扯了一个小时左右赛后说 pwsh 需要人工验证flag以为其实大家都会做只是没交上,第二天起床一看还真是一血全场只有 2 解。也算光荣退役了?

网鼎杯2022总决赛-Secret 全栈CTFer的自我修养(?)

碎碎念 ​ 本来没想着网鼎杯能进总决赛的,毕竟青龙组100+个队就给了12个晋级名额。结果 RHG 一开快手+强运+队友给力直接飞到前十躺进了总决赛,半决赛两个 pwn 防御也是水得不行,本想着逆向手进场观摩队友做题结果意外和 Photon 大哥合力把 pwn 基本 ak 了,只能说运气很好。

NKCTF2023ezstack - SROP初探

1 2 3 4 5 Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) 鉴定为,没有保护。 核心代码很短: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 .text:00000000004011B9 vuln proc near ; CODE XREF: main+17↓p .text:00000000004011B9 .text:00000000004011B9 buf = byte ptr -10h .text:00000000004011B9 .text:00000000004011B9 ; __unwind { .text:00000000004011B9 endbr64 .text:00000000004011BD push rbp .text:00000000004011BE mov rbp, rsp .text:00000000004011C1 mov rax, 1 .text:00000000004011C8 mov rdx, 26h ; '&' ; count .text:00000000004011CF lea rsi, nkctf ; "Welcome to the binary world of NKCTF!\n" .text:00000000004011D7 mov rdi, rax ; fd .text:00000000004011DA syscall ; LINUX - sys_write .text:00000000004011DC xor rax, rax .text:00000000004011DF mov rdx, 200h ; count .text:00000000004011E6 lea rsi, [rsp+buf] ; buf .text:00000000004011EB mov rdi, rax ; fd .text:00000000004011EE syscall ; LINUX - sys_read .text:00000000004011F0 mov eax, 0 .text:00000000004011F5 pop rbp .text:00000000004011F6 retn .text:00000000004011F6 ; } // starts at 4011B9 .text:00000000004011F6 vuln endp 一开始以为是ret2libc,本想想办法leak地址,发现无法控制rax为1调用输出的syscall。ROPgadget发现了一些奇怪的东西:

Hitcon2022-Checker Windows驱动文件分析

with Katzebin 就不传附件了 附件有checker.exe和check_drv.sys两个文件 checker.exe逻辑十分简单 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 int __cdecl main(int argc, const char **argv, const char **envp) { HANDLE FileW; // rax char *v4; // rcx char OutBuffer[4]; // [rsp+40h] [rbp-18h] BYREF DWORD BytesReturned; // [rsp+44h] [rbp-14h] BYREF FileW = CreateFileW(L"\\\\.\\hitcon_checker", 0xC0000000, 0, 0i64, 3u, 4u, 0i64); qword_140003620 = (__int64)FileW; if ( FileW == (HANDLE)-1i64 ) { sub_140001010("driver not found\n"); exit(0); } OutBuffer[0] = 0; DeviceIoControl(FileW, 0x222080u, 0i64, 0, OutBuffer, 1u, &BytesReturned, 0i64); v4 = "correct\n"; if ( !OutBuffer[0] ) v4 = "wrong\n"; sub_140001010(v4); system("pause"); return 0; } https://www.cnblogs.com/lsh123/p/7354573.html 具体可以参照这篇文章,程序整体逻辑是检测设备hitcon_checker并与该设备的驱动交互。可以发现这里的交互操作只有读取,可以知道整体逻辑应该是由hitcon_checker设备发送IRP(I/O Request Package)包由驱动程序处理,根据处理结果返回正误。 但是我们没有这个设备….
0%