[pwnable.xyz] fclose
Wargame/pwnable.xyz
Challenge is using libc 2.23AttachmentAnalysisinput에 fake FILE structure를 만들고 fclose()를 호출한다.Exploitation파일 구조체 전체에 임의의 값을 쓸 수 있기 때문에 vtable overwrite 기법을 이용하여 win()이 실행되도록 할 수 있다. 문제에서는 libc 2.23 버전을 사용하고 있어서 vtable check가 존재하지 않는다.fclose()는 내부적으로 _IO_file_jumps+0x10에 있는 _IO_new_file_finish()를 호출하는데, _IO_new_fclose+48부터 _IO_new_fclose+60까지의 코드가 이 과정에 해당한다. 이 코드까지 도달하기 위해서 딱히 필요한 조건은 없는데, _lock ..
[pwnable.xyz] message
Wargame/pwnable.xyz
Leave a message for the admin.AttachmentBugStack BOF in main()Message를 입력받을 때 stack buffer overflow가 발생한다.OOB read in get_choice()idx가 table의 범위 내에 있는지 확인하지 않아서 OOB read가 가능하다.get_choice()의 return value를 출력해 주기 때문에, 스택에서 char의 크기만큼의 범위에 있는 1바이트 값을 leak할 수 있다.ExploitationOOB read를 이용하여 canary와 PIE base를 leak한 후, stack BOF를 이용하여 main()의 return address를 win()의 주소로 덮으면 플래그를 획득할 수 있다.ex.py
[pwnable.xyz] UAF
Wargame/pwnable.xyz
Is it time for a UAF challenge yet?AttachmentBugstrchrnul()은 문자열에 찾으려는 문자가 없으면 문자열의 끝 주소를 반환한다. 따라서 cur->name에 old_char가 포함되어 있지 않으면 cur->name의 끝에 new_char를 이어붙일 수 있다.ExploitationOff-by-one을 이용하여 name을 play_game 포인터까지 연장할 수 있다.이후에 play_game에 저장된 calc()의 주소를 win()의 주소로 덮어쓰면 플래그를 획득할 수 있다.ex.py
[DreamHack / pwnable] basic_exploitation_003
Wargame/DreamHack
보호되어 있는 글입니다.
[DreamHack / pwnable] basic_rop_x86
Wargame/DreamHack
보호되어 있는 글입니다.
h0meb0dy_
'Wargame' 카테고리의 글 목록 (3 Page)