malloc
pwnable.xyz의 첫번째 문제이다
문제를 다운받으면 .gz파일로 되어있어서 압축을 풀어주어야 한다
gzip -d filename
tar -xvf filename
해당 코드로 두번 풀어주면 된다
압출을 풀면 image폴더에 문제가 생성된다
따로 제공된 c파일이 없어서 코드를 ida에 넣어서 확인했다
이 문제의 핵심 v3를 0으로 만들어주면 flag를 얻을 수 있다
위 사진을 보면 [rsp+28h+size]
가 length of your message를 통해 입력받은 값이라는 걸 알 수 있다
여기서 mov byte ptr [rbp+rdx-1], 0
를 해주기 때문에 해당 주소를 v3의 주소로 바꾼다면 v3값을 0으로 만들어 줄 수 있다
이 세개를 모두 합친값이 v3의 주소가 된다면 조건문을 만족하게 되고 cat flag를 실행할 수 있게된다
malloc은 할당에 실패하게 되면 null을 반환하게 된다
이 과정을 거치게 되면
byte ptr[rbp+rdx-1] = byte ptr[0 + (v3 + 1) - 1] = byte ptr[v3] = 0
즉, v3는 0이 되어 조건을 만족하게 된다
leak보다 1 큰 값을 넣어주면, cat /flag
가 실행되어 플래그를 얻었다