<aside> 🧰
이 유닛은 "도구 유닛"이다. 외우는 게 아니라 손으로 쳐보는 대상 — 정독은 가볍게, 직접 실행이 핵심, 진짜 산출물은 맨 아래 치트시트다.
학습 루프: ① 정독(개념 + 언제 쓰는지만) → ② 직접 어셈블리 작성·컴파일·실행 → ③ 원문 닫고 내 말·내 코드로 채우기 → ④ 재사용 셸코드/명령어를 치트시트에 누적
</aside>
<aside> 📌
공개(포트폴리오) 가능하게 쓴다 — 원문을 옮기지 말고 내 말·내 코드로, 실행 결과의 FLAG는 DH{REDACTED}로 가린다.
</aside>
open / read / write 시스템 콜의 번호와 인자 규약(x86-64) 숙지/bin/sh)을 띄우는 원리 이해objdump로 기계어(shellcode) 바이트 추출**셸코드(Shellcode)**는 익스플로잇을 위해 제작된 어셈블리 코드 조각을 일컫는다. 일반적으로 셸을 획득하기 위한 목적으로 셸코드를 사용해서, 특별히 “셸”이 접두사로 붙었다.
만약 해커가 rip를 자신이 작성한 셸코드로 옮길 수 있으면 해커는 원하는 어셈블리 코드가 실행되게 할 수 있다. 어셈블리어는 기계어와 거의 일대일 대응되므로 사실상 원하는 모든 명령을 CPU에 내릴 수 있게 된다.
셸코드는 공격을 수행할 대상 아키텍처와 운영체제에 따라, 그리고 셸코드의 목적에 따라 다르게 작성된다.
https://github.com/7feilee/shellcode/tree/master/Linux/x86-64