Advancde Format String Attack

Osori·2023년 1월 12일

CTF 풀이를 위한 포맷스트링 공격 기법입니다. 이 글을 참조하면 FormatSniper 문제를 푸는데 많은 도움이 될 것이다,

%n 서식자

%hhn, %hn, %n 만 있는게 아닙니다. %ln 으로 8바이트 쓰기 또한 지원한다. 하지만 쓸 수 있는 최대 바이트는 0x7ffffffff 이라는 사실..!

%*c 서식자

%*c 를 이용하면 스택에 존재하는 값만큼 문자를 출력한다. leak 이 안되있거나 하는 경우에 유용한데, 너무 많은 값이 출력되는데 시간이 오래걸리기 때문에 close(1) 등으로 stdout 이 닫혔을 때 유용하다.

%?$n 과 %n 의 차이

인덱스를 지정해서 %3$n 과 같이 사용하거나 그냥 %p%p%n 을 쓸 수 있는데, 두 방식이 처리되는 루틴이 다르다. 전자와 같이 인덱스로 접근해서 메모리 값을 수정할 때는, printf 내부 루틴에서 해당 메모리 주소를 가지고 있다가 나중에 기록한다. 따라서 공격할 때 한번에 스택에 메모리를 바꾸고, 다시 그 메모리를 참조하는 공격은 인덱스를 참조하는 구문과 일반적인 덮어쓰기를 같이 사용해야 한다. (ex : c%c%c%hn%140d%38$hhn )

profile
해킹, 리버싱, 게임 좋아합니다

0개의 댓글