[pwnable.xyz] notebook
Wargame/pwnable.xyz
How many vulns does this one have? Mitigation Analysis struct Note Vulnerability unsigned __int64 __fastcall readline(char *start, int len, char end) { char buf; // [rsp+13h] [rbp-Dh] BYREF int i; // [rsp+14h] [rbp-Ch] unsigned __int64 v7; // [rsp+18h] [rbp-8h] v7 = __readfsqword(0x28u); for ( i = 0; i < len; ++i ) { read(0, &buf, 1uLL); if ( buf == end ) break; start[i] = buf; } start[i] = buf;..
[pwnable.xyz] note v2
Wargame/pwnable.xyz
Note taking 102 Mitigation Analysis win() int win() { return system("cat flag"); } win()이 실행되도록 하면 플래그를 획득할 수 있다. struct note 노트의 정보를 담는 구조체이다. 최대 0x20바이트의 title과 노트의 내용이 저장된 메모리의 주소 content로 구성된다. main() 1. Make note case 1u: make_note(); break; make_note() int make_note() { note **v0; // rax int v1; // eax __int64 idx; // rcx int size; // [rsp+4h] [rbp-Ch] note *note; // [rsp+8h] [rbp-8h] if (..
[pwnable.xyz] nin
Wargame/pwnable.xyz
Make sure Trent likes your gift. Mitigation Analysis do_chat() void __noreturn do_chat() { reznor *reznor; // [rsp+0h] [rbp-120h] char *myMessage; // [rsp+8h] [rbp-118h] char message[264]; // [rsp+10h] [rbp-110h] BYREF unsigned __int64 v3; // [rsp+118h] [rbp-8h] v3 = __readfsqword(0x28u); reznor = 0LL; while ( 1 ) { memset(message, 0, 0xFFuLL); printf("@you> "); read(0, message, 0xFFuLL); myMess..
[pwnable.xyz] Hero Factory
Wargame/pwnable.xyz
Everybody got a gimmick now Mitigation Analysis win() int win() { return system("cat flag"); } win()이 실행되도록 하면 플래그를 획득할 수 있다. main() 1. create a superhero if ( OP != 1 ) goto LABEL_13; createHero(*(_QWORD *)&argc); createHero() if ( heroCount ) { puts("Br0, you already have a hero..."); return __readfsqword(0x28u) ^ v6; } ++heroCount; 전역 변수 heroCount의 값이 0이 아니면 이미 히어로가 존재하므로 함수를 종료한다. 그렇지 않으면 he..
[pwnable.xyz] executioner v2
Wargame/pwnable.xyz
A bit different from before. Mitigation Analysis Executioner 문제와 비슷한데, 달라진 부분들이 있다. solve_pow() x = 0; y = 0; printf("POW: x + y == 0x%x\n", buf); printf("> "); if ( (unsigned int)_isoc99_scanf("%u %u", &x, &y) != 2 || !x || !y ) { puts("error"); exit(1); } getchar(); if ( y + x != buf ) { puts("POW failed"); exit(1); } puts("Loading challenge... "); sleep(x * y); solve_pow()에서 두 수를 입력받는데, 이전 문제..
h0meb0dy_
'분류 전체보기' 카테고리의 글 목록 (62 Page)