ii4gsp

Exploit Exercises [Protostar - Format4] 본문

시스템 해킹/Exploit Exercises - Protostar

Exploit Exercises [Protostar - Format4]

ii4gsp 2020. 1. 17. 20:32
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int target;

void hello()
{
  printf("code execution redirected! you win\n");
  _exit(1);
}

void vuln()
{
  char buffer[512];

  fgets(buffer, sizeof(buffer), stdin);

  printf(buffer);

  exit(1);  
}

int main(int argc, char **argv)
{
  vuln();
}

exit() 함수를 hello() 함수로 바꿔줘야한다.

exit()함수의 주소와 hello()함수의 주소를 구해주자

 

 

 

 

AAAA를 입력후 포맷 %08x로 값을 확인해보니 4번째 주소에 41414141이 있다.

exit()함수의 주소와 hello()함수의 주소를 구해주자

 

 

 

 

exit() 함수의 주소는 0x08049724 이다.

hello() 함수의 주소도 구해주자

 

 

 

 

hello()함수의 주소는 0x080484b4 이다.

 

 

 

 

hello()함수의 주소 0x080484b4는 10진수로 134,513,844 이다.

 

 

 

 

페이로드는 exit()함수 주소 + %08x * 2 + %134513824x%n

134,513,844에서 exit()함수 주소 4 + %08x * 2 = 20

134,513,844 - 20 = 134,513,824가 된다.

%n에 134,513,824x를 %n에 저장하기 위해 자리를 맞춰줘야 한다.

 

 

 

 

hello() 함수가 실행되었다.

Comments