how to pwn (life hack) shortcut

상위 문서 : how2pwn , shortcut

이 글은 내가 Pwn을 풀면서 막혔을때 로직적으로 우회할 수 있는 꿀팁 ( life hack ) 에 대해 다룬다.

FSB , BOF

모든 것의 시작은 이 둘이었다. 이 두가지가 있는지 확인해보자

→ what is double fsb

RTM ( Return to main )

우리가 흔히 뭔가 스택적으로 거리가 안되거나 , 특정 부분을 더 사용하거나 써야하는데 코드의 끝으로 완성을 못할때가 있다. 이럴때는 main을 지속적으로 실행시켜 너의 목적을 이룰수 있다는 점을 항상 생각해야 한다.

Byte write

특정 바이트에 쓸때 크기적 문제라던가, 로직적으로 쓸 수 없는 값을 써야 할때는 항상 바이트를 쪼개서 write 하는 것을 생각해야 한다. 2바이트씩, 4바이트씩 쪼개서 앞에 먼저 쓰고 나중에 뒤를 쓰면 앞바이트를 덮어쓰지 않아서 연결시킬 수 있다.

C
uint64_t *ptr;
uint64_t val;
*ptr = val;

참고로 다음과 같은 포인터도 2바이트씩 나눠서 쓸 수 있다.

아니 포인터인데 8바이트 정렬 안되어도 되나요?

ptr +2 ptr + 4 이런식으로 로직을 해쳐나가자

Glibc got overwrite

Race condition

와.. 얘 은근히 복병, 만약 스레드를 사용한다거나, 공용 전역 변수를 같이 사용하면 얘를 한번 의심해볼만하다.

leak

모든 것에 시작은 leak으로 부터..

RA bruteforce

Legend gadget

Ret2resolve

using setbuf

leak register with printf


kernel

vtable overwrite

커널 콜백함수 overwrite