일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 |
- TUCTF
- practicalmalwareanalysis
- CANARY
- PMA
- Read
- format
- pico
- picoCTF
- BOF
- pwn
- Toddler's Bottle
- toddler
- rev
- FSB
- Rookiss
- Bottle
- Leak
- pwnable.kr
- Bug
- writeup
- string
- reversing
- 2018
- anti
- pwnable
- shellcode
- Reverse
- CTF
- ASM
- shellcraft
- Today
- Total
목록Reverse (10)
제리의 블로그
Baby Reverse (Category: Reverse) Author(s): Staubfinger Solves: 63 요약직접 어셈 단에서 짜서 컴파일한 바이너리가 제공된다.printf(), scanf() 대신 syscall 을 이용한 SYS_write, SYS_read 가 사용되었다. 바이너리는 0x2e 만큼의 문자열을 입력받아서XOR 연산 결과가특정 테이블(0x40010C)과 같은지 비교하여 검증한다. XOR 은 A ^ B = C 이면 A ^ C = B 이고 교환법칙이 성립한다.어렵지않게 역연산을 해서 풀었다. Difficulty: baby Hey there! Disclaimer: This chall is intended for new gamers only ;-)! You veterans got p..
be-quick-or-be-dead-2 - Points: 275 - (Solves: 393)요약본 Writeup 에서는 바이너리 패치하지 않고파이썬 코드를 짜서 풀었습니다. 바이너리는 alarm(3) 알람 3초를 걸어놓은 상태에서피보나치 수열 1015번째를 연산하여 나온 값을 이용해서flag 를 디코딩하고 있었다. 피보나치 연산이 3초 안에 일어나지 않기 때문에SIGALRM 시그널을 받고 종료되도록 핸들링된다. 피보나치 연산을 해주는 사이트에서 1015번째 수를 알아내서int형에 맞추어 key 값을 넣어주고decrypt_flag 해주면 된다. Description As you enjoy this music even more, another executable be-quick-or-be-dead-2 sho..
keygen-me-1 - Points: 400 - (Solves: 312) 요약Description Can you generate a valid product key for the validation program in /problems/keygen-me-1_1_8eb35cc7858ff1d2f55d30e5428f30a7
Radix's Terminal - Points: 400 - (Solves: 574) 요약base64 인코딩 디코딩 문제입니다. argv[1] 로 파라미터를 넘기면base64 인코딩을 하여 특정 문자열과 정확히 일치하는지 여부를 판단합니다. 따라서 그 특정 문자열을 base64 디코딩하면 플래그를 얻을 수 있습니다. 이 문제는 base64 인코딩을 알아차렸다면 쉽게 풀었을 것입니다. Description Can you find the password to Radix's login? You can also find the executable in /problems/radix-s-terminal_2_4c75009af9dadb458328555d93a49198? // int __cdecl check_passwor..
quackme up - Points: 350 - (Solves: 323) 요약주어진 바이너리를 실행시켜보니문자열을 입력받아서 encrypt 된 ciphertext 를 보여주는 프로그램 이었습니다. 맞는 문자열을 넣었을 때 나오게 되는 ciphertext 는 "11 80 20 E0 22 53 72 A1 01 41 55 20 A0 C0 25 E3 45 20 35 05 70 20 95 50 C1" 입니다. 임의로 문자열을 넣어보니 몇가지 사실을 유추해볼 수 있는데요.1. 입력 문자열과 출력 ciphertext 의 길이는 동일하다2. encrypt 알고리즘은 입력 문자가 같으면 출력 문자도 같다. plaintext 와 ciphertext 가 각각 문자마다 1 대 1 매칭임을 알았으므로모든 문자를 1개씩 넣어본 ..
be-quick-or-be-dead-3 - Points: 350 - (Solves: 260) 요약재귀적 함수 호출이 엄청 많이 일어나는 calc() 연산을반복적 함수 호출로 코드를 바꿔서 연산하면시간복잡도가 선형 시간을 갖게되어 연산에 걸리는 시간을 확연히 줄일 수가 있습니다. 재귀함수 호출 대신 연산 결과값을 바이너리 패치를 통해 넣어주고해당 바이너리를 실행시켜주면 플래그가 나오게 됩니다. Description As the song draws closer to the end, another executable be-quick-or-be-dead-3 suddenly pops up. This one requires even faster machines. Can you run it fast enough to..
keygen-me-2 - Points: 750 - (Solves: 105) 요약 z3 solver 로 풀었습니다. Description The software has been updated. Can you find us a new product key for the program in /problems/keygen-me-2_4_3cb8c5fbaa87ce402753132dd68f9003solve.py from z3 import * ord = lambda a1 : If(And(0x41
Description What does asm3(0xb3fb1998,0xfe1a474d,0xd5373fd4) return? Submit the flag as a hexadecimal value (starting with '0x'). NOTE: Your submission for this question will NOT be in the normal flag format. Source located in the directory at /problems/assembly-3_0_64e940c92852f106e798ceac9b22aa25. end_asm_rev.S: .intel_syntax noprefix .bits 32 .global asm3 asm3: push ebp mov ebp,esp mov eax,0x..
program void *read_input() { void *result; // eax@2 int v1; // edx@4 void *v2; // [sp+0h] [bp-18h]@1 char v3; // [sp+4h] [bp-14h]@1 int v4; // [sp+8h] [bp-10h]@1 int v5; // [sp+Ch] [bp-Ch]@1 v5 = *MK_FP(__GS__, 20); v2 = 0; v4 = getline(&v2, &v3, stdin); if ( v4 == -1 ) { puts("No line read..."); result = &unk_8048882; } else { result = v2; } v1 = *MK_FP(__GS__, 20) ^ v5; return result; } int do..