일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DYNAMIC Section
- Python.h: No such file or directory
- 리커버릿
- tool
- pwntools
- Seccomp bypass
- 임베디드 시스템 해킹
- pwn
- ppa:deadsnakes/ppa
- docker
- wsl2 복구
- user or team does not exist.
- vhdx 파일 복구
- add-apt-repository 에러
- std::cerr
- 개발
- 실시간로깅
- 지훈현서
- OpenAI 개발
- Recoverit
- GEF
- c++
- GDB
- Windows 부팅 오류
- z3 signed 이슈
- python3.11 pip
- 공유 라이브러리는 왜 항상 같은 순서로 맵핑 될까?
- python3.11 설치
- pip 에러 해결
- VSCode C++ 표준 버전 수정
- Today
- Total
목록Pwn Study (16)
OZ1NG의 뽀나블(Pwnable)
보호되어 있는 글입니다.
보호되어 있는 글입니다.
[*] Shellcraft란? pwntools에서 제공하는 엄청난 기능으로, 매우 간단하게 shellcode를 생성할 수 있도록 도와준다. 주로 pwntools의 asm함수와 같이 사용한다. 보통 CTF에서 seccomp를 우회하는 문제가 나왔을 때 사용한다. [*] 간단한 Shellcraft 사용법 기본적인 문법 : shellcraft.[환경].[OS].[syscall 함수](함수 인자) [!] 주의 : 함수 인자에는 '주소'를 입력할 때, 꼭 레지스터를 사용해야 한다. [linux 64bit 환경 예시] 1 2 3 4 sc = shellcraft.amd64.linux.open('./flag') # open으로 ./flag라는 이름의 파일을 연다. sc += shellcraft.amd64.linux.r..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
Format String Bug(이하 fsb)의 주축이 되는 printf함수는 널문자를 기준으로 문자열의 끝을 판단한다. 당연한건데 왜 주의해야 하는가? 32bit에서는 모든 주소들이 4바이트였고 한 주소를 판단하는 크기 또한 4바이트였기 때문에 크게 문제가 되지 않았지만, 64bit에서는 스택과 실제 함수 주소 제외한 대부분의 주소들이 3바이트이고, 한 주소를 판단하는 크기는 8바이트이기 때문에 무조건 1바이트 이상은 널문자로 채워지게 된다. 이게 문제가 된다. 예시를 들어 보자! 만약 fsb페이로드의 순서를 [어딘가의 주소]+[%???c%?$ln] 이런식으로 짰다고 치자, 그렇다면 fsb페이로드는 스택에 "0x0000000000606060(어딘가의 주소) 0x????????????????(%???c%..