The Definite Guide to ARM Exploitation with Raspberry Pi
테스트 환경 : Ubuntu 22.04 aarch64 linux Aarch64 Linux에서 적당히 활용 가능한 execve("/bin/sh", NULL, NULL) Shellcode 예제를 찾아보았다.(40 Bytes) 쉘코드 출처 : https://www.exploit-db.com/shellcodes/47048 아래와 같이 어셈블리 코드를 컴파일 해서 ...
앞서 Sigreturn ROP에 대한 논문을 읽어보았다. 논문에 따르면 intel 32, 64 뿐만 아니라 ARM 과 android 및 iOS에서도 다 된다고 되어있다. 실제로 인터넷 검색해보면 해외자료를 포함하더라도, Intel x86 및 x86_64에 대한 자료와 예제는 꽤 많이 나온다. 하지만 안타깝게도 ARM32에 대한 SROP 성공 사례는 없다. ...
지난 글에 이어 Protostar의 heap2 를 다룬다. 0. glibc version check 이 포스트 시리즈는 Arm32 bit 환경에서 재구성한 protostar 문제들을 다루고 있다. 그런데 앞서 stack과 format스트링과는 사뭇 다르게, heap 문제들은 해당 바이너리 자체의 취약점보다는, 동적 링킹된 glibc 의 버전에 영향을 더 크...
지난 글에 이어 Protostar의 heap1 을 다룬다. 0. glibc version check 이 포스트 시리즈는 Arm32 bit 환경에서 재구성한 protostar 문제들을 다루고 있다. 그런데 앞서 stack과 format스트링과는 사뭇 다르게, heap 문제들은 해당 바이너리 자체의 취약점보다는, 동적 링킹된 glibc 의 버전에 영향을 더 크...
이번 글부터는 Protostar의 heap0 ~ heap3을 다룬다. 0. glibc version check 이 포스트 시리즈는 Arm32 bit 환경에서 재구성한 protostar 문제들을 다루고 있다. 그런데 앞서 stack과 format스트링과는 사뭇 다르게, heap 문제들은 해당 바이너리 자체의 취약점보다는, 동적 링킹된 glibc 의 버전에 영...
앞서 Format String Vulnerability를 이용해서 ARM32에서 Arbitrary read와 write 및 Arbitrary execute가 가능함을 확인했다. 하지만 이는 모두 대상 주소 값을 알 수 있다는 전제 하에 가능했다. 만약 주소를 알 수 없다면 진행을 할 수 없고, 포맷 스트링 취약점을 통해 주소 값을 알아냈다 하더라도, 그 주...
지난번 글에 이어 이번에는 format4이다. 1. 소스코드 format4는 프로그램의 제어 흐름(Control Flow)를 변경하는 것이다. 본 format4 프로그램의 소스코드에서 main 함수는 vuln함수를 호출하고, vuln함수는 문자열을 fgets로 입력받은 후 printf 로 출력한다. 그리고 exit(1) 함수에 의해 종료된다. vuln 함수...
앞서 Format String Vulnerability를 이용해서 ARM32에서 Arbitrary read와 write가 가능함을 확인했다. 이번 글에서는 Arbitrary execute를 살펴보자. Arbitrary Execute 앞서 임의 주소의 메모리 내용을 읽을 수 있다는 점에서 memory leak이 가능하다는 것을 확인했다. 그리고 임의 주소의 ...
지난번 글에 이어 이번에는 format3이다. 1. 소스코드 format3는 format2와 거의 같다. target 값을 64가 아닌 0x01025544 로 맞추어야 한다는 점이 다르다. 그리고 포맷 스트링이 발생하는 위치가 printbuffer라는 함수를 한번 더 호출했을 때 발생한다. 그러므로 format2와는 스택의 구조가 조금 다를 것이다. 2. ...
지난번 글에 이어 이번에는 format2이다. 1. 소스코드 format2는 format1과 유사하다. 차이점은 argv 로 입력받는 것이 아니라 vuln 함수 내에 선언된 지역 변수 buffer 에 fgets() 함수를 통해 입력 받는 것이다. 이 경우 스택의 거의 시작 부분에 근접하므로 위치를 argv 의 경우보다 조금 더 쉽게 찾을 수 있다. 그리고 ...
지난번 글에 이어 이번에는 format1이다. 1. 소스코드 format1 은 format0 과 유사하지만 target 변수가 지역 변수가 아닌 전역 변수라는 점이 다르다. 전역 변수는 시작과 동시에 0으로 초기화가 된다. 하지만 vuln () 함수의 구현을 보면 target 이 0이 아니도록 하는 조건을 만족시켜야 하는 상황이다. 2. Compile(Ra...
이제부터는 Protostar의 format string bug 관련 문제를 풀이한다. 먼저 개념 이해를 위해 앞의 두 글을 읽어보길 권한다. ARM32 에서의 Format String Vulnerability (1) Arbitrary Read ARM32 에서의 Format String Vulnerability (2) Arbitrary Write 1. 소스코...
Software Security Engineer
자유로운 창작이 가능한 기본 포스트
한 컷씩 넘겨보는 카툰 포스트
직접 만든 영상을 올리는 동영상 포스트
소장본, 굿즈 등 실물 상품을 판매하는 스토어
멤버십에 가입하시겠습니까?
설정한 기간의 데이터를 파일로 다운로드합니다. 보고서 파일 생성에는 최대 3분이 소요됩니다.
포인트 자동 충전을 해지합니다. 해지하지 않고도 ‘자동 충전 설정 변경하기' 버튼을 눌러 포인트 자동 충전 설정을 변경할 수 있어요. 설정을 변경하고 편리한 자동 충전을 계속 이용해보세요.
중복으로 선택할 수 있어요.
총 0화
0P
*이미 구매한 포스트는 제외되며 1회 최대 25화까지 구매 가능합니다.
해당 포스트는 구매 후 크리에이터가 삭제할 경우 더 이상 열람이 불가능합니다.