[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를 입력했다..