포멧스트링 버그 - 데이터쓰기

2024. 5. 19. 18:50·시스템 해킹

 

man 3 printf

 

%n에서 데이터 쓰기관련된 내용이 여기서 볼 수 있다.

데이터를 읽어서 변환을 시켜주는 converting역할을 하지만

 

%n은 문자의 개수를 쓰는 역할을한다.

 

 

a에 데이터를 넣는 방법은 %n을 넣는다.

.. 앞에 점이 찍으면 문자가 두개가되는것

 

#include <stdio.h>

int main()
{
int a = 0;
printf("..%n",&a);
/* 이뒤에 %d를 넣으면 변수가 전달되지않았는데도 변수를 실행하게된다. */
if(a!=0)
{
printf("code detection\n");
/* 이문자가 출력되기위해서는
# a에 데이터가 씌워지면 %n에 데이터가 있다는것이다 */
}
return 0;
}


알기위해 코드를 작성한다.

gcc -o format_printf_n format_printf_n.c

아무것도 넣지않았지만 확인해보니 a !=0 a는 0이아니라는 판결을 알 수 있었다.

 

 

 

 
#include <stdio.h>

int main()
{
int a = 0;
printf("..%n",&a);
/* 이뒤에 %d를 넣으면 변수가 전달되지않았는데도 변수를 실행하게된다. */
if(a!=0)
{
printf("code detection %d\n", a);
/* 이문자가 출력되기위해서는
# a에 데이터가 씌워지면 %n에 데이터가 있다는것이다 */
}
return 0;
}


이번엔 어떤 데이터가 쓰였는지 %d, a를 추가하여 컴파일하고 확인해보자

 

gcc -o format_printf_n format_printf_n.c 
./format_printf_n

 

해보니 2가 추가로 출력되었습니다.

우리는  a를 2로 지정하지않았다.

 

개수를 계속넣으면 계속 늫어날것이고

데이터를 쓰는 방법을 알았고

원하는 스택주소를 뒤쪽에넣으면 데이터를 읽어드려서 그곳에 %n으로 저장을 할 수 있는 방법이다

포멧스트링버그는 %n이나 읽기쓰기가 가능한 방법이다!

 

 

 

저작자표시 비영리 변경금지

'시스템 해킹' 카테고리의 다른 글

HackerSchool FTZ - 1  (0) 2024.05.23
HackerSchool FTZ trainning 전체  (0) 2024.05.23
포멧 스트링 버그 읽기  (0) 2024.05.19
Protostar - stack 7 ROP  (0) 2024.05.19
Protostar - stack 7 jmpcall을 사용한 우회 방법 (exploit 코드만 작성 )  (0) 2024.05.19
'시스템 해킹' 카테고리의 다른 글
  • HackerSchool FTZ - 1
  • HackerSchool FTZ trainning 전체
  • 포멧 스트링 버그 읽기
  • Protostar - stack 7 ROP
taktaks
taktaks
보안 연습 일기장입니다. 모든 연습은 불법적인 용도로 사용하지 말아주시길 부탁드립니다. 용무는 wndudxkr2005@gmail.com 메일 부탁드립니다.
  • taktaks
    taktaks
    taktaks
  • 전체
    오늘
    어제
    • 보안 일지 (280)
      • 네트워크 구축 (12)
      • 리눅스 보안구축 (10)
      • 파이썬 기본 (11)
      • Web hacking (39)
      • 통합 인프라 보안 (41)
      • 공격기법 및 탐지 (33)
      • 악성코드 및 포렌식 (93)
      • 리버싱 (5)
      • 시스템 해킹 (20)
      • C 언어 (12)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      프롯
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    taktaks
    포멧스트링 버그 - 데이터쓰기
    상단으로

    티스토리툴바