'64bit fsb'에 해당되는 글 2건
- 2018.02.20 [pwnable.kr] rsa_calculator(200pt)
- 2016.10.29 [Tip] Format String Bug 팁
## Format String Bug 팁들
1. 스택 내 멀리 있는 주소의 값을 printf("%x%x...%x")로 찍어내지 않고 한 번에 출력하는 방법
=> printf("%길이$08x") -> ex) printf("%1337$08x")
=> 위와 같이 fsb를 터뜨리면 스택에 1337번째의 값을 HEX값으로 출력해줌(info leak할때 사용)
2. 스택 내 멀리 있는 주소의 값에 printf("%x%x...%x%n")로 주소 값 변조를 하지 않고 한 번에 변조를 하는 방법
=> printf("%길이$n") -> ex) printf("%12$n")
=> 위와 같이 fsb를 터뜨리면 스택의 12번째의 값에 저장되어 있는 주소에 앞에 출력된 바이트 수만큼 덮어씌울 수 있음.
3. 64bit Format String Bug에서의 특별한 점
=> 메모리 릭을 할때는 %x대신 %lx를 하여 8바이트 릭을 할 수 있음. 당연히 %12$lx도 사용 가능
=> 32비트에서는 바로 스택 $esp + 4부터 릭이 가능하지만, 64bit에서는 바로 스택이 안나옴.
=> 64비트 환경에선 %rdi, %rsi, %rdx, %rcx, %r8, %r9 순서로 릭이 된 다음 스택이 릭 된다.
=> 이런 이유는 64비트 환경에서는 함수 호출 시 레지스터로 인자 값을 활용하기 때문
=> memory write 할 때, 32비트에서는 %12$n으로 해도 되지만, 64비트에서는 "%12ln" 이런 식으로
하면 된다.(0xffff이상의 값을 덮어씌울 수 있다.)
'Vulnerablity(Exploit) > Linux System' 카테고리의 다른 글
[Tip] Linux에서 프로그램 실행시키기(with python os module) (0) | 2016.04.03 |
---|---|
Linux 프로그램에 python으로 값 넣기 (0) | 2016.03.03 |
[Tip] 프로그램 인자를 python으로 넣기 (0) | 2015.12.30 |
0x08 Buffer Overflow 공격(2) (0) | 2014.02.07 |
0x07 Buffer Overflow 공격(1) (0) | 2014.02.07 |