강의 설명

SSP
SSP(Stack Smashing Protector) 보호기법에 대해 알아봅니다.

RELRO
RELRO(RElocation Read Only) 보호기법에 대해 알아봅니다.

PIE
PIE(Position Independent Executable) 보호기법에 대해 알아봅니다.

강의 목표
ELF 메모리 보호 기법을 우회하여 공격할 수 있다.
이 강의와 관련된 질문들입니다.
15개의 질문
메모리 주소와 메모리 크기 관련
![](https://dreamhack-media.s3.ap-northeast-2.amazonaws.com/attachments/ee9a36726a06a1230b8df94740f7c30831ab568250cfbd763e3573c48d072937.PNG) 저기서 0xffffd534 에서부터 x/40wx 즉, 160바이트를 4바이트씩 표현해라 라는건데, 메모리 주소 : 메모리 값인데 첫번째부터 보면, 0xffffd534라는 주소에서부터 순서대로 4바이트씩 4개의 메모리값을 가지고 있는데, 그러면 총 16바이트니깐 다음 메모리 주소는 0xffffd544가 아닌 0xffffd550 이여야하는거 아닌가요? 질문이 좀 부실할수 있지만, 답변 부탁드립니다 ㅠㅠ
#메모리_ᄌ소
main 함수의 ret주소
지금까지의 공부를 통해 함수를 호출한뒤 esp에 들어있는 값이 그 함수의 ret라고 이해했는데 이 강의에서 main함수의 ret값을 보면 esp에 들어있는 값이 아니라 esp값 그 자체가 main 함수의 ret라 돼있던데 그 이유는 무엇인가요? 그리고 main 함수의 ret를 찾는 방법이 있나요?
#시스템해킹
TLS 영역 찾기 질문입니다.
(gdb) info proc map process 116985 Mapped address spaces: Start Addr End Addr Size Offset objfile 0x8048000 0x8049000 0x1000 0x0 ~/master1 0x8049000 0x804a000 0x1000 0x0 ~/master1 0x804a000 0x804b000 0x1000 0x1000 ~/master1 0xf7dff000 0xf7e00000 0x1000 0x0 0xf7e00000 0xf7fb0000 0x1b0000 0x0 /lib/i386-linux-gnu/libc-2.23.so 0xf7fb0000 0xf7fb2000 0x2000 0x1af000 /lib/i386-linux-gnu/libc-2.23.so 0xf7fb2000 0xf7fb3000 0x1000 0x1b1000 /lib/i386-linux-gnu/libc-2.23.so 0xf7fb3000 0xf7fb6000 0x3000 0x0 0xf7fd3000 0xf7fd4000 0x1000 0x0 0xf7fd4000 0xf7fd7000 0x3000 0x0 [vvar] 0xf7fd7000 0xf7fd9000 0x2000 0x0 [vdso] 0xf7fd9000 0xf7ffc000 0x23000 0x0 /lib/i386-linux-gnu/ld-2.23.so 0xf7ffc000 0xf7ffd000 0x1000 0x22000 /lib/i386-linux-gnu/ld-2.23.so 0xf7ffd000 0xf7ffe000 0x1000 0x23000 /lib/i386-linux-gnu/ld-2.23.so 0xfffdd000 0xffffe000 0x21000 0x0 [stack] (gdb) find 0xf7dff000, +4096, 0x4dc1e800 0xf7dff714 1 pattern found. (gdb) x/wx 0xf7dff714 0xf7dff714: 0x4dc1e800 (gdb) ssp - 2 에서 TLS 영역 질문이 있습니다. 0xf7dff000 0xf7e00000이 TLS 영역이라고 했는데, 어떻게 TLS 영역인 것을 알 수 있는건지 궁금합니다.
#시스템해킹
라이브러리 베이스주소를 잘 모르겠습니다
find /w 0xf7e01000, 0xf7fb7000, 0xffffd5f4(main argv) * libc에서 argv 전역변수를 찾는 명령이라고 생각했습니다 0xf7fb65f0 : 찾은결과 (libc argv pointer) - 0xf7e01000(libc가 끝난 이후의 주소로 판단했습니다) 결과가 libc base로부터 argv가 얼마나 떨어져있는지 값이 나오더라구요 어떻게 이렇게 되는지 몰라서 질문남깁니다.. 아직 초보라 어렵네요 ㅜㅜ
#시스템해킹
gs:0x14
안녕하세요. gs:0x14에는 어떻게 접근하나요??? (gdb) x/8wx $gs 결과, 0x33 : cannot access memory at address 0x33이라고 나옵니다
#시스템해킹
leak.c 내용에 대해 질문드립니덩
``` // gcc -o leak leak.c -m32 #include <stdio.h> #include <string.h> #include <unistd.h> int main(void){ char buf[8] = {}; char secret[16] = {}; strcpy(secret, "secret message"); read(0, buf, 10); printf("%s\n", buf); } ``` 여기서 secret 이 leak 되려면 buf 와 secret 의 위치가 바뀌어야 하는거 아닌가요?? 조심스레 여쭤봅니다
#시스템해킹
example8_leak.py의 payload 관련 질문드립니다.
payload를 작성할 때, 왜 "A" * 40으로 들어가는지 설명 부탁드려도 될까요? 제 생각에는 "A"*32(buf[32]) + "A"*4(sfp) + ret 이렇게 돼서 결국 "A"*36 + give_shell 이렇게 들어가야 한다고 생각했습니다. 처음에는 카나리가 들어가있나해서 readelf -s ./example8 | grep stack_chk_fail 명령어를 이용해서 카나리를 체크를 해봤는데, 아무런 결과도 나오지 않는 것을 보아서 어떤 것이 4byte를 차지하는지 모르겠습니다.
#시스템해킹
argv에 대한 의문점
libc.so.6의 전역변수로 argv가 있다고 했는데 argv는 main함수의 인자인 것으로 알고 있습니다. 그런데 argv가 스택 메모리의 주소라고 하는데 이게 이해가 되지않네요ㅠㅠㅐ 도와주세요
#시스템해킹
argv에 대한 의문점
libc.so.6의 전역변수로 argv가 있다고 했는데 argv는 main함수의 인자인 것으로 알고 있습니다. 그런데 argv가 스택 메모리의 주소라고 하는데 이게 이해가 되지않네요 ㅠㅠㅐ 도와주세요
#시스템해킹
x/2i 0x8048420
gdb에서 x/2i 0x8048420 로 어떤 코드를 보는데 이게 무슨 코드를 보는건가요?
#시스템해킹
lazy binding과 now binding
lazy binding과 now binding의 개념은 어디서 볼 수 있나요?
#시스템해킹
canary
여기에서 왜 canary + 1까지의 오프셋을 구하는건가요?? 제가 생각할 때는 canary의 마지막 바이트가 0x00이여서 그런거 같은데, 이 이유가 맞다면 canary의 마지막 바이트는 왜 0x00인가요??
#시스템해킹
스택카나리 위치 찾기..
SSP-6에서 스택까나리가 0xffffd554라는 것을 어떻게 아나요??
#시스템해킹
BOF 예제 프리징 문제
SSP 프로그램 입력창에 A를 너무 많이 넣는 경우 페이지가 프리징됩니다.
#시스템해킹
오타 제보
첫 번째 줄: example6_leak.py는 스택 카라리의 값을 구하는 파이썬 스크립트입니다. *카나리
#시스템해킹
강의 평점
0.0★ (0)
0
Linux Exploitation & Mitigation Part 3
0.0★ (0)
Free
상세정보
약 3 hours 소요
보통 난이도
gdb, C, Python