본문 바로가기

Wargame Write-Up141

[Reversing.kr] (Reversing) HateIntel 풀이 mach-o 파일이다. 맥북이 없어서 실행시키지는 못하겠고, ghidra 로 정적분석을 해야겠다. ㅜㅜ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 undefined4 FUN_00002224(void) { char acStack100 [80]; undefined4 local_14; size_t local_10; int local_c; local_14 = 4; __symbol_stub4::_printf("Input key : "); __symbol_stub4::_scanf("%s",acStack100); local_10 = __symbol_stub4::_strlen(acStack100); FUN_0000232c(acStack100,l.. 2021. 2. 1.
[Reversing.kr] (Reversing) CSHOP 풀이 DIE 로 까보니 .NET 으로 컴파일 되어있다고 한다. 실행하니 빈창이 뜬다. 고쳐야하나부다. dotPEEK 으로 디컴파일 해보자. FrmMain.cs btnStart 라는 버튼의 size 가 0인데, _Click 이라는 이벤트 핸들러가 등록되어있다. 라벨들의 값을 지정해주는 함수다. 라벨이름도 같고, 멤버보다 지정해주는게 더 많아 이상하다. POSITION 을 보면, 라벨들은 수평으로 정렬되어 있다. 6번째 멤버인 lblT 는 P 인 것같다. dnsPy 로 열면 이름이 보여 구별할 수 있게된다. 주의해야할 점은 중간에 있는 숫자다. 위에서 lblT 에 해당하는 라벨만 중간숫자가 FFFD 임을 유의하고, 같은멤버가 두 번 변경된 경우도 있으니, 마지막으로 수정된 값으로 가져와야한다. 뒷글자만 봤을 때,.. 2021. 2. 1.
[HackCTF] (Pwnable) World Best Encryption Tool 실행시키면 $rbp-0x80 에 입력을 받고 암호화 해서 출력한다. (딱봐도 28 이랑 XOR 연산) 57글자부터 canary값으로 추정되는값이 leak 된다. Analyze undefined8 main(void) { int iVar1; long in_FS_OFFSET; uint local_90; char local_8c [4]; byte local_88 [64]; char local_48 [56]; long local_10; local_10 = *(long *)(in_FS_OFFSET + 0x28); setvbuf(stdout,(char *)0x0,2,0); do { puts("Your text)"); __isoc99_scanf(&DAT_00400913,local_88); local_90 = 0; wh.. 2020. 9. 17.
[HackCTF] (Pwnable) Register 풀이 Main 함수다. 5초뒤에 alarm signal (14) 를 보낸다. main 에서 호출하는 build 함수인데, alarm signal(14) 에 대한 핸들러를 설정하고, 루프문에서 get_obj 함수로 obj 부터 obj+48 까지 입력을 받는다. vaildate_syscall_obj() 함수를 호출해서, 리턴값이 0 이면, alarm signal(14) 을 보내서, alarm handler (syscall) 을 호출해준다. alarm signal(14) 에 대한 handler 이 호출하는 함수이다. 인자로는 전역변수 obj 의 offset 을 주고, obj ~ obj + 48 까지 순서대로 rax, rdi, rsi, rdx, rcx, r8, r9 에 넣고 , syscall 을 해준다. obj(ra.. 2020. 9. 10.