[pwnable.xyz] password
Wargame/pwnable.xyz
Can you restore the lost password?AttachmentAnalysisbuf의 첫 번째 문자가 null이면 strlen(buf)가 0이 되어 buf[-1]에 0이 들어가게 된다.ExploitationBypass loginlogin()에서 password를 입력받을 때 flag의 마지막 1바이트를 0으로 덮어쓸 수 있다 [1]. flag의 길이가 0x20바이트였다면 덮어쓴 이후에는 0x1f바이트가 되고, 길이가 4의 배수가 아니면 base64로 decode할 수 없기 때문에 b64decode()는 0을 반환한다 [2]. 그러면 b64cmp()의 첫 번째 인자로 0이 들어간다 [3].a1이 0이면 b64cmp()는 0을 반환하는데, login()에서는 올바른 password를 입력했다..
[pwnable.xyz] executioner
Wargame/pwnable.xyz
Let's encode this shellcodeAttachmentAnalysisinpt의 첫 번째 바이트가 null byte이면 strlen()의 return value가 0이 되어 key와 xor되지 않는다.Exploitationex.py
[pwnable.xyz] Punch it
Wargame/pwnable.xyz
Who is the strongest puncher?AttachmentAnalysisbuf에 0x2c바이트가 채워져 있을 경우 score까지 strlen()에 포함되어 buffer overflow가 발생할 수 있다.버그를 발생시키기 위해서는 rand()의 return value를 맞춰야 한다.Saitama를 선택하면 game_t에 1바이트 랜덤 값이 들어가고 이 값이 srand()의 인자로 전달된다. 1바이트는 충분히 브루트포싱이 가능하기 때문에 이후 rand()의 return value들을 모두 예측할 수 있다.Exploitationscore를 한 번 증가시키면 0x01이 되고, BOF를 이용하여 0xff로 덮어쓴 후 다시 두 번 증가시키면 0x0101이 된다. 이 과정을 반복하면 score에 null..
[DreamHack / pwnable] rop
Wargame/DreamHack
보호되어 있는 글입니다.
[Urmia CTF 2024 / pwnable] Orange
CTF
Dive into the juicy depths of this challenge and see if you can squeeze out a surprise.AttachmentAnalysisset_buyer_name()에서 Stack buffer overflow [1], show_cart()에서 format string bug [2] 가 발생한다.ExploitationFSB를 이용하여 canary와 스택 주소를 leak한 뒤에, 스택에 실행 권한이 있는 것을 이용하여 스택에 shellcode를 넣고 return address를 shellcode의 주소로 덮어쓰면 shell을 획득할 수 있다.ex.py
h0meb0dy_
'분류 전체보기' 카테고리의 글 목록 (5 Page)