
🔁ROP 시리즈🔁 [ROP 시리즈 (1)] 라이브러리와 링크 [ROP 시리즈 (2)] PLT, GOT [ROP 시리즈 (3)] Return to Library 개념 및 실습

🔁ROP 시리즈🔁 [ROP 시리즈 (1)] 라이브러리와 링크 [ROP 시리즈 (2)] PLT, GOT 첫번째로 함수를 호출할 때는 GOT에 아직 puts함수의 주소가 적혀있지 않다. 실제 puts함수의 주소는 puts함수 안에있는 _dl_runtime_resolve_fxsave라는 함수를 통해 구해진다. 그리고 이 함수가 GOT에 puts함수의 실제 위치를 적어준다. 그리고 다시 callee로 이동하게된다. 그리고 다시 calle에서 다음 코드들을 쫘르륵~ 실행한다. 이후 다시 프로그램에서 puts를 호출하면 PLT가 GOT의 값을 참조했을 때(GOT의 코드를 실행하는건 아니다! GOT에는 코드가 없다! PLT에만 코드가 들어있다!!), 다시 plt+6로 돌아오지 않고 바로 puts 함수의 실제 위치로 ..

들어가며 스택 오버플로우는 보안직이 아닌 일반 개발직무 분들도 많이 들어본 용어일 것이다. 심지어 구글링할 때 항상 참고하게 되는 Stack Overflow 이름도 말그대로 스택 오버플로우이다. 아래는 CVE에 등록된 보안 취약점의 종류를 보여주는 도표이다. 이중에서 주황색 막대기로 체크된 Overflow가 꽤나 높은 수치를 가지는 것을 볼 수 있다. 그렇다면 정확히 스택 오버플로우와 스택 오버플로우는 어떤 공격이고 어떻게 공격할 수 있는지 간단한 실습을 통해 알아보는 시간을 가질 것이다. 스택 오버플로우(Stack Overflow) vs 스택 버퍼 오버플로우(Stack Buffer Overflow) 스택은 함수를 실행하면서 동적으로 크기가 줄거나 늘어날 수 있다. 이때 스택 오버플로우는 스택의 크기가 ..

이 글을 읽기 전에 시스템 콜(system call) 및 셸의 개념이 헷갈린다면 여기를 참고하자 익스플로잇과 셸 코드 먼저 익스플로잇이 무엇인지부터 알아보자! 해킹 분야에서의 익스플로잇은, '상대의 시스템을 공격하는 것'을 말한다. 그럼 오늘 배울 개념인 셸코드는 무엇일까? 셸코드는 익스플로잇을 위해 작성된 기계어 코드이다. 보통 셸의 획득을 목적으로 하는 경우가 많아서 셸 코드라고 불리게 되었다. 더보기 rip의 위치를 우리가 만든 셸 코드로 옮기면 상대 시스템은 우리의 셸코드를 실행하게 될 것이다!! 그러니까 rip 위치를 조정해주는게 우리의 목적이지 않을까?(걍 내 생각이다) 그런데 셸 코드는 결국 어셈블리어,기계어로 쓰여있기 때문에, 공격할 상대 시스템이 어떤 컴퓨터 구조를 가지고, 어떤 운영체제..