- Today
- Total
Phantom
이번 단계는 은근히 쉬워 보입니다. 허나 setreuid로 권한 상승이 되지 않으며 버퍼도 작습니다. 더미까지 더해도 얼마나 커질지는 모르겠습니다. 그리고…ASLR로 스택이 랜덤이 되니 Basic BOF는 힘들거같고..뭐… 가능은 하지만 Setreuid 함수가 없으니 권한 상승이 되지 않겠군요. 그래서 제가 생각한 페이로드는 Chaining RTL을 할 생각입니다 Chaining RTL이란 나중에 다시 배우게 되겠지만 기본적인 RTL을 연속적으로 사용하는 것을 말합니다. 기본적인 Chaining RTL은 함수의 return 부분에 다른 함수의 주소를 넣어 다른 함수를 실행 시키며 이어가는 것을 말합니다. 아! 다른 방법도 있습니다. Pop-pop-ret을 이용하여 함수를 실행시키고 그 다음 ret 부분에..
#include #include #include #include void shellout(void); int main(){char string[100];int check;int x = 0;int count = 0; fd_set fds; //fd_set 구조체 fds 선언 printf("Enter your command: "); fflush(stdout); //출력버퍼를 비움 while(1){if(count >= 100)printf("what are you trying to do?\n"); if(check == 0xdeadbeef) // check안에 0xdeadbeef가 입력되어 있을 시 shelldout()함수 실행shellout();else{FD_ZERO(&fds); // fds의 소켓셋을 비움FD_..
이번에도 함수 포인터 문제인데 조금 다르다 다른 함수 뭐 이런 것이 없고 setreuid로 권한을 올린다음에 call()을 호출한다 뭐지? 그리고 call의 포인터로 printit()함수를 실행한다 함수 내용은 볼게 없다 음…. 그래서 생각한 것인데 함수 포인터도 포인터이다 그냥 BOF처럼 공격하면 그것을 실행하지 않을까? 그러기 위해 우선 스택 구조부터 살펴보자 보아 하니 전단계의 스택과 똑같다고 생각한다 그렇다면 스택은 다음과 같다 buf[20] | dummy(20) | call *(4) | dummy(12) | SFP(4) | RET(4) 우리는 기본적인 BOF를 사용할 생각이다 Buf에 쉘코드를 넣으려 했지만 ASLR때문에 그게 여의치 않다 그래서 환경변수에 쉘코드를 넣고 그 주소를 call에 담..