일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kernel image
- xz-utils
- kernel build
- rootfs
- newbie
- 백도어
- liblzma
- cwe-506
- kernel img
- Kernel
- CVE-2024-3094
- Today
- Total
목록STUDY/PWNABLE_AArch64 (6)
ZZoMb1E
※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ aarch64 기법 공부 중 대학 동기가 문제를 하나 만들어주었다. [Exploitable]이라는 이름의 Buffer OverFlow 문제이다. symbol이 지워져있다.. (아 귀찮... 그래도 static은 안걸려있으니까...) main()으로 보이는 함수이다.별다른 취약점은 보이지 않는다. 호출되는 함수이다.구조는 매우 단순하다. 앞서 다뤘던 예제처럼 main()이 아닌 호출되는 함수쪽에서 bof취약점이 발생한다. 하지만 바로 Shell을 얻거나 flag를 출력해주는 함수가 존재하지 않기 때문에 gadget들을 사용하여 chain을 구성해야 한다. ROPgadget --binary Exploitable#0x00000000004..
※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ Pointer Authentication CodePointer를 서명하여 올바른 메모리 주소라는 무결성을 보장해주는 ARMv8.3 에서 추가된 보안 기법이다. amd64를 포함하여 대부분의 stack에서의 취약점은 [ret]를 변조하여 수행한다. 가장 대표적으로 rop 등이 있는데, 이는 바이너리의 call flow를 변경하는 취약점에 해당한다. aarch64를 기준으로 봤을 때 해당 취약점은 br이라는 어셈블리어로 다른 함수들을 호출하여 call flow에 영향을 준다. 이를 막고자 Pointer Address에 무결성을 체크하여 call flow를 변경할 수 없게하여 바이너리가 의도한 대로 실행되게 하게 도와주는 기술이 PAC이..
※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ 디버깅하는 방법을 앞에서 언급을 했지만 해당 방법으로는 동적 디버깅을 수행할 수 없다. 이번 게시글에서는 동적 디버깅을 수행하는 방법을 다루겠다. (직접 시행착오하며 겪은 것을 바탕으로 작성하는 것이기 때문에 더 효율적인 방법이 있을 수도 있다.) https://whrdud727.tistory.com/34 [AArch64] x86_64 간단 비교 ※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ 효율적인 전력 사용과 높은 성능의 위해서 설계된 architecture이다. 주로 스마트폰, 임베디드 시스템 등의 환경에서 사용 whrdud727.tistory.com 먼저 위 게시글에서 다룬 방법이다. gdb-mul..
※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ 바뀐 ASM과 register 들을 이용하여 gadget 사용하는 방법을 조금 다루겠다. #include #include #include void gift(){ write(1, "/bin/sh\x00",0x8); system('ls'); } void gadget(){ asm("ldr x30, [sp]"); asm("ldr x0, [sp, #8]"); asm("ldr x1, [sp, #16]"); asm("ldr x2, [sp, #24]"); asm("ret"); } void vuln(){ char buf[0x20]; read(0,buf,0x100); printf("Your Input : %s", buf); } int main(){ ..
※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ Buffer OverFlow에 대한 개념은 아래 링크에서 확인할 수 있다. https://whrdud727.tistory.com/5 [PWNABLE]Stack Buffer OverFlow ※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ Buffer OverFlow는 발생하는 영역에 따라서 Stack Buffer OverFlow와 Heap Buffer OverFlow로 나뉜다. Heap에 대해서는 다음에 다룰 예정 whrdud727.tistory.com https://whrdud727.tistory.com/6 [PWNABLE]Return Address Overwrite ※ 잘못된 부분이 있으면 알려주세요. 확..
※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ 효율적인 전력 사용과 높은 성능의 위해서 설계된 architecture이다. 주로 스마트폰, 임베디드 시스템 등의 환경에서 사용되고 있다. 간단하게 x86_64와 비교해보겠다. #include int main(int argc, char*argv[]){ printf("Hello world!\n"); return 0; } 위의 코드를 아래의 두 가지 방법으로 컴파일을 진행한다. aarch64-linux-gnu-gcc -static -no-pie -o test test.c gcc -no-pie -static -o x86 test.c AArch64로 정상적으로 컴파일 되었는지 확인하는 방법이다. 해당 파일을 그대로 실행 혹은 디버깅 할려고..