printbuffer
vuln(target 값을 0x01025544로 맞춰야하고, target 주소는 0x080496f4)
버퍼 값이 어디에 저장되는 지 알았다.
이제 target 값을 0x01025544로 맞춰야한다. 앞에 target 주소(4Byte) + %08x*11 (11*8=88Byte) = 92Byte 만큼을 16930116에서 빼고 공백+문자열로 넣어주면 된다. => %16930024x%n
계산하기 쉽게 앞에 AAAA는 빼고 바로 target 주소 넣었다.
위에서 계산한 것 처럼 공간의 크기가 0x5c(92Byte) 인 것을 볼 수 있다.
그래서 이렇게 페이로드를 작성했지만 Segmentation fault만 나오고 풀리지 않아서 검색해봄.
왜인지는 모르겠지만 위처럼 값 모두 불러온 다음 %n 사용은 안되고, 바로 12번째 있는 값을 주소로 지정하는 페이로드를 사용하니 해결됨(앞에 %08x 11번 안불러오므로 88만큼 공백 더해줌)
payload : (python -c 'print "\xf4\x96\x04\x08" + "%16930112x%12$08n"') | ./format3
'LiveOverFlow' 카테고리의 다른 글
Format 2 (0) | 2020.11.03 |
---|---|
Format 1 (0) | 2020.11.03 |
Format 0 (0) | 2020.11.01 |