포맷스트링(4)
-
Protostar Format3 [ FSB / objdump ]
Protostar Format3번 문제입니다 [ 그림1 ] 이번에는 target변수에 16진수의 주소값을 넣는 문제입니다 [ 그림2 ] 포맷스트링버그공격에서 제일먼저 해야할 일이 우리가 입력한 값이 어디에 위치하는지 알아내는 것입니다12번째 "%8x"스트링에서 우리가 입력한 데이터 AAAA를 확인할 수 있습니다 [ 그림3 ] objdump명령어를 이용해서 target변수의 주소를 알아내었습니다 ( 옵션은 -t 또는 -d 를 사용해도 됩니다 ) [ 그림4 ] 그리고 공격코드를 작성해줍시다포맷스트링 버그를 이용해서 16진수의 주소값을 원하는 주소에 입력시키려면 주소를 2byte씩 채워주어야합니다( 포맷스트링 버그의 자세한 설명은 http://itsaessak.tistory.com/115 링크에 있습니다 )
2017.06.13 -
Protostar Format2 [ FSB / objdump ]
Protostar Format2번 문제입니다 [ 그림1 ] target변수의 값을 64로 변질시키면 되는 문제입니다 [ 그림2 ] 포맷스트링버그공격에서 제일먼저 해야할 일은 내가 입력한 데이터가 어디에 존재하는지를 알아내는 것입니다 4번째 " %8x "스트링에서 우리가 입력한 데이터 AAAA가 있음을 확인이 가능합니다 [ 그림3 ] target의 주소를 알아야 공격을 할 수 있기 때문에 objdump명령어를 이용해 target의 주소를 알아냅니다 [ 그림4 ]공격코드입니다$ (python -c 'print "\x41\x41\x41\x41"+"\xe4\x96\x04\x08"+"%8x%8x%8x%32c%n"';cat ) | ./format2 코드에 따라서 "%n"스트링에 의해서 0x080496e4 ( tar..
2017.06.13 -
[6] Format String Bug [FSB]
원재아빠님의 Format String 강좌를 보면서 개인공부를 위해 작성하였습니다. 포맷 스트링이란 변수의 형태를 지정해주는 것입니다 종류에는 %d : 정수형 상수 int %c : 문자형 char %f : 실수형 상수 float %x : 16진수 %o : 10진수 %s : 문자 스트링 등이 있으며, 중요한 %n 도 있습니다 [ 포맷스트링 예제 ] 포맷스트링의 빈틈은 다음과 같은 소스코드에서 발생합니다 #vi test2.c #gcc -o test2 test2.c [ 그림1 ] printf()함수에서 받아들인 변수 put을 스트링의 여과 없이 그대로 출력해주고 있습니다 여기서 문제가 발생합니다. 특정 스트링을 임의로 사용자가 넣으면 특이한 현상이 발생합니다 [ 그림2 ] fgets()를 통해서 put에 문자..
2017.06.08 -
FTZ level11포맷 스트링 버그를 이용한 풀이
FTZ 11번문제는 버퍼오버플로우공격을 시도해도 공격이 이루어지지만, 포맷스트링 버그를 사용해서 문제를 풀어보겠습니다.포맷스트링 버그에 관한 자세한 설명은 다음 링크에 있습니다. http://itsaessak.tistory.com/115매우 쉽게 설명해놓았습니다. 읽어보고 해당 문제를 푸시면 많은 도움이 될겁니다 [ 그림1 ] printf()함수의 완벽한 형태가 아니죠 ? 포맷 스트링 버그 취약점이 생깁니다 [ 그림2 ] 취약점을 가진 해당 프로그램의 인자로 " %8x " 스트링을 넣어서 메모리 구조를 살펴볼 수 있습니다 4번째 " %8x "스트링에서 처음입력한 AAAA 문자열이 존재하고 있음이 보입니다이 부분이 우리가 문자를 입력할 수 있는 지점입니다. 해당 지점에 우리가 원하는 주소를 입력시킵시다우리..
2017.05.23