environ 변수를 이용해 stack leak 를 하는 방법이다.

 

이 공격을 하기 위해 다음과 같은 가정이 필요하다.

  • libc base 주소를 알고 있다.
  • 임의의 주소를 leak 할 수 있다.

 

gdb-peda$ p 0x00007ffff79e4000 + 0x861a5c8
$2 = 0x7fffffffe5c8
gdb-peda$ p environ
$3 = (char **) 0x7fffffffe5c8
gdb-peda$ x/gx $rsp
0x7fffffffe4d8: 0x00007ffff7a05b97
gdb-peda$ p 0x7fffffffe5c8 - 0x7fffffffe4d8
$4 = 0xf0
gdb-peda$ 

libc base address: 0x00007ffff79e4000

environ offset: 0x861a5c8

environ address: 0x7fffffffe5c8

 

ret address: 0x7fffffffe4d8

 

environ address를 구했다면 ret address 까지의 거리는 0xf0 이므로 

만약, CTF 문제에서 stack address 주소를 알고 싶다면, environ address - 0xf0 = ret address 로 구할 수 있다.

 

 

 

https://github.com/Naetw/CTF-pwn-tips#leak-stack-address

 

Naetw/CTF-pwn-tips

Here record some tips about pwn. Something is obsoleted and won't be updated. Sorry about that. - Naetw/CTF-pwn-tips

github.com