목록War Game (174)
tmxklab
1. 문제 nc svc.pwnable.xyz 30048 AdultVM시리즈의 마지막 문제이다. 여기서는 flag3.txt파일 내용을 읽는 것을 목표로 한다. 2. 접근방법 AdultVM, 2에서는 flag.txt, flag2.txt파일을 유저 영역 또는 커널 영역에 로드하는 것을 확인할 수 있지만 flag3.txt파일에 대한 로직은 전혀 찾아 볼 수 없다. [ start.py ] - handle_kernel_interrupt() def handle_kernel_interrupt(uc, intno, data): if intno == 0x70: rax = uc.reg_read(UC_X86_REG_RAX) if rax == 0: rdi = uc.reg_read(UC_X86_REG_RDI) rsi = uc.re..
1. 문제 nc svc.pwnable.xyz 30048 AdultVM과 동일하다. 여기서는 flag2.txt파일을 읽어야 할 것 같다. 이전에 살펴봤듯이 flag2.txt는 start_kernel()로직에서 file open하는 것을 확인하였으므로 커널 영역에서 확인해야 할 듯 하다. unicorn-engine관련 함수 참고) [Pwnable.xyz] BabyVM 1. 문제 nc svc.pwnable.xyz 30044 1) mitigation 확인 2) 문제 확인 default program을 실행 시킬 것인지 물어봄 'y'를 입력한 경우 : 이름을 입력하고 프로그램 종료 'n'를 입력한 경우 : program을 보내기.. rninche01.tistory.com 1) start.py 코드 분석 1-1) ..
1. 문제 nc svc.pwnable.xyz 30048 총 6개의 파일이 주어지는데 start.py를 실행시키면 userland, kernel, flag*.txt를 open하여 사용한다. start.py코드를 살펴보면 이전에 baby vm에서 사용했던 유니콘 엔진 코드를 볼 수 있다. 참고 : [Pwnable.xyz] BabyVM 1. 문제 nc svc.pwnable.xyz 30044 1) mitigation 확인 2) 문제 확인 default program을 실행 시킬 것인지 물어봄 'y'를 입력한 경우 : 이름을 입력하고 프로그램 종료 'n'를 입력한 경우 : program을 보내기.. rninche01.tistory.com start.py코드에서 대충 보면 kernel, userland스레드를 2개..
1. 문제 nc svc.pwnable.xyz 30046 1) mitigation 확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int running; // [rsp+8h] [rbp-8h] running = 1; setup(); show_banner(); init_first_note(); LABEL_8: while ( running ) { show_menu(); printf("> "); switch ( (unsigned __int64)(unsigned int)get_int() ) { case 1uLL: create_notes(); break; case 2uLL: selec..
1. 문제 nc svc.pwnable.xyz 30045 1) mitigation 확인 2) 문제 확인 총 6개의 메뉴가 보이며 낚시하러 가는데 alert가 뜨면서 내 이름을 출력하고 입력 값을 받고 종료된다. 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax setup(argc, argv, envp); banner(); while ( 1 ) { show_menu(); switch ( (unsigned int)read_int() ) { case 1u: add_group_member(); break; case 2u: modify_group_member(); brea..
1. 문제 nc svc.pwnable.xyz 30043 1) mitigation 확인 모든 보호기법이 다 걸려있고 추가로 stripped파일이다. 2) 문제 확인 5개의 메뉴가 보인다. 선택한 좌표에 임의의 값을 넣을 수 있다.(메뉴 1) 3) 코드흐름 파악 3-1) main() -> init_func() __int64 init_func() { _DWORD *v0; // rax char *v1; // rax __int64 result; // rax field = malloc(0xA0uLL); reset(); v0 = malloc(0x28uLL); play_info = (__int64)v0; v0[5] = 0; *(_DWORD *)(play_info + 0x18) = 0; *(_QWORD *)(play_i..
1. 문제 nc svc.pwnable.xyz 30042 1) mitigation 확인 2) 문제 확인 name, race, class를 설정한 뒤 PvP 또는 Question을 진행한다. 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // eax setup(argc, argv, envp); init_game(); while ( 1 ) { while ( 1 ) { while ( 1 ) { if ( !hero ) create_char(); print_char(); print_menu(); v3 = read_int(); if ( v3 != 1 ) break; pvp(); } if (..
1. 문제 nc svc.pwnable.xyz 30041 1) mitigation 확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int make_note() { _QWORD *v0; // rax signed int index; // [rsp+4h] [rbp-1Ch] __int64 size; // [rsp+8h] [rbp-18h] _QWORD *v4; // [rsp+10h] [rbp-10h] void *buf; // [rsp+18h] [rbp-8h] for ( index = 0; ; ++index ) { if ( (unsigned int)index > 9 ) { LODWORD(v0) = puts("Notebook full"); return (int)v0; } if ( !notes[index]..
1. 문제 nc svc.pwnable.xyz 30039 1) mitigation 확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int choose; // eax int v5; // [rsp+4h] [rbp-Ch] int v6; // [rsp+8h] [rbp-8h] setup(argc, argv, envp); puts("Door To Other RealmS"); v5 = 0; v6 = 0; door = rand(); while ( 1 ) { while ( 1 ) { while ( 1 ) { while ( 1 ) { print_menu(); choose = read_int3..
1. 문제 nc svc.pwnable.xyz 30038 1) mitigation 확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax setup(argc, argv, envp); puts("Playing God today."); while ( 1 ) { print_menu(); switch ( (unsigned int)read_int32() ) { case 0u: return 0; case 1u: create_adult(); break; case 2u: create_child(); break; case 3u: age_up(); break; ca..