간만에 포스팅하는 거지만 암튼 오늘은 GOT Overwrite를 해 보겠다. 일단 아래와 같은 파일을 만들어보자. 보면 일단 print.c 파일은 root로 SetUID로 고정되어 있다는 것을 알 수 있다. 그리고 print.c 내용을 보면 scanf 함수와 printf 함수가 있는데, 위에 있는 h.c로 만든 h 파일을 이용하여 scanf 함수를 root로 권한을 따고 system 함수의 주소로 조작할 수 있다. 그리고 첫번째 인자로 "%s"인 것을 "./h;"로 바꾸어서 실행하면 system("./h;", buf);가 실행되어 쉘 실행 프로그램인 h를 실행하게 되는 것이다. 그러면 일단 .plt Section의 시작주소를 알아보기 위해서 readelf -S를 사용해보자. readelf를 사용할 때, ..
PLT와 GOT의 구조를 알아보기 위해 간단한 덧셈 소스코드를 만들어보자.만든 다음, Section header만 띄우기 위해 readelf -S을 쳐보면 다음과 같다.여기서 .plt와 .got.plt section을 볼 수 있다..plt 섹션은 Procedure Linkage Table의 약자로써 함수를 링크가능한 테이블로 프로그램이 호출하는 모든 함수가 나열되어 있다..got.plt 섹션은 Global Offset Table의 약자로 전역 offset을 가지는 테이블이다.이제 gdb로 파일을 둘러보자.main을 disassem 했을 경우 다음과 같다.main을 보았을 때 첫 부분에서 printf가 호출되는 것을 볼 수 있다. 한 번 내용을 들여다보자.어딘가로 점프를 하는 것을 볼 수 있다. 계속 따라..
동적, 정적 라이브러리 차이점에 대해서 알아보기로 하자. 정적 라이브러리는 프로그램과 같이 컴파일 & 링크 되어 실제 오브젝트 파일 내에 포함 되어서 실행 되는 라이브러리이다. 라이브러리와 프로그램이 합체되기 때문에 정적 라이브러리와 링크 하면 프로그램 용량이 늘어나는 현상을 볼 수 있다. 프로그램과 합체가 되면 속도는 빨라지지만 단점도 생기는데 라이브러리가 업데이트 되었을 때 그 라이브러리를 사용한 프로그램의 업데이트가 쉽지 않다. 이래서 DLL이라고 불리우는 동적 라이브러리가 탄생하게 되었는데 프로그램에 합체 된 정적 라이브러리를 밖으로 꺼내 놓기 시작했다. 이게 바로 동적 라이브러리이다. 이러면 아주 편하게 수정 & 배포를 할 수 있으리라 생각 했겠지만 속도가 느려지는 단점이 있다. 아래 프로그램으..
PLT PLT는 "Procedure Linkage Table"의 약자 입니다. Procedure들을 연결해 주는 Table이라는 것이다. PLT는 Procedure를 연결하지만 외부 Procedure를 대상으로 연결을 한다. 즉 프로그램코드를 짰는데 모두 직접 같은 화일 안에서 구현한 Procedure들이라면 이것들은 따로 PLT가 필요없이 직접적으로 호출이 가능하다. 그런데 이런 Procedure가 아닌 다른 라이브러리에 위치해 있는 Procedure를 호출 할 때에는 PLT를 사용해서 그 Procedure를 호출하게 된다. GOT GOT는 "Global Offset Table" 이다. 이 Table은 Procedure들의 주소를 가지고 있다. 이 Table의 중요성은 바로 PLT가 참조하는 Table..
- Total
- Today
- Yesterday
- #디지털 포렌식
- #포렌식
- #Volatility
- #EnCase
- 4차 산업혁명
- #DEFT
- Fin Tech
- #Forensic
- #010 Editor
- #ReKall
- #Chrome
- #캐시
- #WireShark
- blockchain
- #FTK
- #GRR
- #WinPmem
- #이미지 수정
- #크롬
- #메모리
- ethereumj
- #수정
- #tool
- #Pmem
- 이더리움
- ethereum
- #WinHex
- #Forensic Tools
- #tcpdump
- #Security
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |