[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()에서 두 수를 입력받는데, 이전 문제..
[pwnable.xyz] Dirty Turtle
Wargame/pwnable.xyz
''.join([i for i in 'Dirty Turtle Off-RoadS' if i.isupper()]) Mitigation Analysis win() int win() { return system("cat flag"); } win()이 실행되도록 하면 플래그를 획득할 수 있다. main() int __cdecl main(int argc, const char **argv, const char **envp) { char *addr; // [rsp+0h] [rbp-10h] unsigned __int64 val; // [rsp+8h] [rbp-8h] setup(argc, argv, envp); puts("Dirty Turtle Off-RoadS"); printf("Addr: "); addr = (char..
[pwnable.xyz] Car shop
Wargame/pwnable.xyz
Which brand would you choose? Mitigation Analysis win() int win() { return system("cat flag"); } win()이 실행되도록 하면 플래그를 획득할 수 있다. struct car name: 차 이름 nameLen: 차 이름의 길이 next: double linked list에서 다음 차를 가리키는 포인터 prev: double linked list에서 이전 차를 가리키는 포인터 main() 1. Buy a car case 1u: buy(); break; buy() puts("Which car would you like to buy?"); for ( i = 0; i = 10 ) return puts("Invalid"); 어떤 차를 살지 ..
h0meb0dy_
'Wargame' 카테고리의 글 목록 (54 Page)