본문 바로가기

ROP

SigReturn Oriented Programming (SROP) SigReturn Oriented Programming (SROP) 개념 Return Oriented Programming (ROP)의 변종으로서 system call를 이용한 기법으로 가젯이 충분하여 register를 원하는대로 조작할 수 있으면 상관 없으나 그렇지 않은 경우 사용하는 방법이다. SROP는 가젯이 많이 필요하지 않고 INT80 가젯만 있으면 가능한 기법이다. 설명 SigReturn Oritented Programming(이하 SROP)는 sigreturn을 이용하여 쉘을 따내는 기법을 말합니다.sigreturn은 syscall table을 통하여 찾아보게 되면 아래와 같이 나타납니다. eax값으로 119를 넣어주면 sigreturn이 실행이되는 것이죠. 그리고 sigreturn의 파라미.. 더보기
Return Oriented Programming (ROP) - final Return Oriented Programming (ROP) - final 목표 ROP를 stage0, 1로 나누어 정확한 개념을 통해 이해해 보자. 설명 이번에 설명할 것은 step1, step2를 통해서 ROP를 어떻게 수행하는지에 대해서 알아봤습니다.이번 step3에서는 좀 더 ROP에 대해서 자세하게 알아보도록 하겠습니다. ROP는 stage0, 1에 따라서 실행을 합니다. 이번에 사용할 바이너리를 받아주세요. shayete 형 ㄱㅅ 해당 바이너리를 사용하는 법은 ./rop port 입니다. 해당 바이너리에는 아래와 같은 취약한 부분이 있습니다. vuln이라는 배열에는 100만큼의 공간이 있지만 recv()를 통해서 200만큼 받을 수 있게 해두었습니다. 따라서 BOF가 발생할 수 있습니다. 먼저.. 더보기
Return Oriented Programming (ROP) - step 2 Return Oriented Programming (ROP) - step 2 목표 L.O.B FC3 evil_wizard를 이용하여 ROP를 socket을 이용하여 어떻게 페이로드를 작성하는지 알아보도록 하자. 설명 위 C 코드는 LOB FC3 evil_wizard 입니다. 해당 문제의 주석을 확인해 보면 8888포트로 접속하여 하라고 합니다. 먼저 공격 방법을 생각해 봅니다. step1에서도 system("/bin/sh")를 만들어서 사용했었습니다. /bin/sh를 .bss영역에 넣어뒀었죠. system() 주소, /bin/sh 주소, pop pop ret 주소 strcpy() 주소 를 찾아야 합니다. .bss 주소 .bss section의 주소는 0x8049868 입니다. strcpy() 주소 str.. 더보기
Return Oriented Programming (ROP) - step 1 Return Oriented Programming (ROP) - step 1 개념 Return Oriented Programming(이하 ROP)는 운영체제의 보호기법인 NX, PIC, PIE, ASLR을 우회하여 해커가 원하는 명령어를 가지고 실행할 수 있도록 조합하여 권한 상승을 하는 기법.쉽게말해서 이것 저것 제약이 걸린 상태에서 BOF, RTL과 같은 기법들이 수행되지 못하는 경우 원하는 함수를 실행하기 위해 필요한 값들을 하나하나 찾아 조합하여 실행시킬 수 있는 방법을 뜻합니다. 설명 ROP는 해커가 제약된 환경에서 쉘을 얻어내기 위해 조각들을 모아 실행 시키는 것을 말합니다. 간단한 예제를 통해서 어떠한 방식으로 ROP가 이루어지는지 살펴보도록 하겠습니다. 해당 소스코드를 보면 main에서는 .. 더보기