| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 커널
- linux ring 권한 구조
- Cross-cache attack
- hardware hakcing
- SMM
- Slab free list poisoning
- protection ring
- fini array
- Router
- mips
- Pwnable
- 익스플로잇
- tp link
- memory
- UART
- tl mr 100
- physmap
- mr 100
- Kernel
- System Management Mode
- 공유기
- ROP
- 라우터
- exit handler overwrite
- exploit
- e
- kernel exploit
- openwrt
- Today
- Total
목록Pwnable (6)
haehet
최근 임베디드 장비를 분석하던 중 발견한 취약점을 실제로 검증하고 공략하기 위해서는 해당 제품이 사용하는 아키텍처에 대한 이해가 필요하다는 것을 느꼈다. 특히 공유기와 같은 IoT 장비에서는 ARM뿐만 아니라 MIPS 기반 바이너리도 자주 등장한다. MIPS는 x86과는 다른 레지스터 구조, 함수 호출 규약, 스택 프레임, 분기 방식 등을 가지고 있다. 따라서 기존에 x86-64 환경에서 익스플로잇을 작성하던 방식만으로는 MIPS 바이너리를 분석하거나 ROP 체인을 구성하기 어렵다. 이번 글에서는 MIPS Architecture의 기본적인 구조와 주요 명령어 호출 규약 스택 프레임의 특징을 정리하고 이를 바탕으로 MIPS 환경에서 BOF와 ROP를 어떤 관점으로 분석해야 하는지 살펴보려고 한다. 1. ..
이번 글에서는 원하는 곳에 tcache를 맘대로 받을 수 있는 tcache_perthread_struct overwrintg애 대해서 정리 해보겠다. (기법 이름은 사실 찾아도 잘 안나와서 내가 임의로 붙였다.) 1. tcache의 구조 tcache는 스레드 별로 빠르게 할당을 해주기 위해 만들어진 목적에 맞게 malloc_state가 아닌 다른 구조체에서 관리된다. 그 구조체는 tcache_perthread_struct이다. static __thread tcache_perthread_struct *tcache = NULL;typedef struct tcache_perthread_struct{ uint16_t counts[TCACHE_MAX_BINS]; tcache_entry *entries[TCA..
이번 글에서는 FSOP에 대해 정리해 보도록 하겠다. 관련 기법이나 코드 등은 glibc 2.35 기준으로 하였다. 1. _IO_FILE_IO_FILE은 리눅스 시스템의 표준 라이브러리에서 파일 스트림을 나타내기 위한 구조체이다. 선언은 다음과 같다.struct _IO_FILE{ int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ /* The following pointers correspond to the C++ streambuf protocol. */ char *_IO_read_ptr; /* Current read pointer */ char *_IO_read_end; /* End of get area. */ char *_IO_..
지금까지 heap 관련된 공부를 해오면서 중요하다 생각한 부분을 정리하고자 한다. glibc 2.35를 기준으로 했으며 약간 내용이 두서가 없을 수도 있다. 1. tcache key && safe-linking if (__glibc_unlikely (e->key == tcache_key)) { tcache_entry *tmp; size_t cnt = 0; LIBC_PROBE (memory_tcache_double_free, 2, e, tc_idx); for (tmp = tcache->entries[tc_idx]; tmp; tmp = REVEAL_PTR (tmp->next), ++cnt) { if (cnt >= mp_.tcache_count) ma..
side channel attack은 시스템의 알고리즘 자체가 아니라 물리적인 구현 방식을 겨냥해, 실행 시간이나 전력 소비량, 전자기 방출 등과 같은 간접적인 정보 누출을 분석하여 민감한 데이터를 탈취하는 기법이다. 이 글에서 소개할 기법은 주로 ASLR 환경처럼 주소가 계속 변화는 곳에서 특정 주소의 매핑여부를 확인하는 기법이다. 세 가지 정도를 소개해보도록 하겠다. 1. intel TSX assembly intel TSX assembly란 x86명령어의 확장으로 transational memory 기술에 대한 하드웨어적인 지원을 제공한다. 그것은 개발자들로 하여금 명령어의 원자적 실행을 가능하게 하며 지속성과 고립성을 보장해준다. 여기서 중요한점은 Intel TSX 트랜잭션 내부에서는 잘못된 메모리..
최근에 드림핵에서 tiny backdoor 8단계 문제를 풀었는데 .fini.array를 조작해야 하는 문제였다. 이 문제를 풀면서 프로그램의 시작, 종료 관련 취약점에 대해서 정리해야겠다는 생각이 들었다. *이 글은 (Ubuntu GLIBC 2.35-0ubuntu3.10)을 기준으로 분석했다. 라이브러리 버전마다 약간씩 차이가 있을 수 있다.또한 gcc (Ubuntu 11.4.0-1ubuntu1~22.04.2) 기준으로 컴파일을 했다. 아래에 있는 간단한 코드를 통해 분석 해보겠따. #include //gcc -o test test.cint main(int argc, char* argv){ printf("%s", "test\n"); return 0;} 프로그램 시작 과정 1. execve -> ld...
