One Gadget이란 해당 Gadget 하나만을 이용하여 Shell을 획득할 수 있는 Gadget이다. One Gadget은 라이브러리 파일 내에서 "/bin/sh"를 실행하는 Gadget이다. One Gadget을 사용하기 위해서 일부 조건이 만족해야 되는 경우도 있다. ROP, RTL 기법을 사용할 때 해당 Gadget을 많이 사용한다. One-gadgets of libc(/lib/x86_64-linux-gnu/libc-2.23.so) 다음과 같은 코드들이 One gadgets으로 사용될 수 있다. do_system() 함수 내에서 __execve() 함수를 이용해 shell을 호출한다. ... #endif if (pid == (pid_t) 0) { /* Child side. */ const cha..
여러 개의 함수를 호출하기 위해 사용되는 것이 Gadgets이며, 기본적으로 다음과 같은 형태의 Gadgets이 사용된다.ROP는 공격자가 NX bit 및 코드 서명과 같은 보안 방어가 있는 상태에서 코드를 실행할 수 있게 해주는 기술이다. ROP는 기본적으로 RTL 공격 기법을 이용하기 때문에, 해당 기법을 모른다면 다음 사이트를 공부하고 보도록 하자. RTL(Return to Libc) RTL이란 Return to Shellcode와 비슷하게 Return address 영역을 공유라이브러리(libc) 함수의 주소로 변경해, 해당 함수를 호출하는 방식이다. 이를 이용해 NX bit를 우회할 수 있다. Calling Convention RTL를 이해 hogbal.tistory.com Stack Buffe..