목록분류 전체보기 (365)
시스템 해킹 로드맵을 모두 클리어했다. 초반 리버싱 문제가 푸는데 가장 오래 걸렸다. heap 쪽에서도 어이없는 삽질로 인해 시간이 좀 걸렸으나 재미있었다. 다른 로드맵에 비해 난이도가 있는 편인 듯하다. 정말 의미 있는 삽질들이었다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
https://dreamhack.io/learn/98#4 로그인 | Dreamhack dreamhack.io ptmalloc의 구현 목표는 메모리의 효율적인 관리입니다. 이 한 문장에는 여러 세부 목표가 함축되어 있습니다. 그중 핵심을 추려보면 다음과 같습니다. 메모리 낭비 방지 빠른 메모리 재사용 메모리 단편화 방지 ptmalloc2는 청크를 주요 객체로 사용한다. 청크 헤더 구조 prev_size 8바이트 인접한 직전 청크의 크기. 청크를 병합할 때 직전 청크를 찾는 데 사용됩니다. size 8바이트 현재 청크의 크기. 헤더의 크기도 포함한 값입니다. 64비트 환경에서, 사용 중인 청크 헤더의 크기는 16바이트이므로 사용자가 요청한 크기를 정렬하고, 그 값에 16바이트를 더한 값이 됩니다. flags..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
char buf[0x30]; int fd = open("/tmp/flag", RD_ONLY, NULL); read(fd, buf, 0x30); write(1, buf, 0x30); 해당 코드의 shellcode를 만들어 본다. read 0x00 unsigned int fd char *buf size_t count write 0x01 unsigned int fd const char *buf size_t count open 0x02 const char *filename int flags umode_t mode 1. open push 0x67 mov rax, 0x616c662f706d742f push rax mov rdi, rsp ; rdi = "/tmp/flag" xor rsi, rsi ; rsi = 0 ;..
명령 코드 데이터 이동(Data Transfer) mov, lea 산술 연산(Arithmetic) inc, dec, add, sub 논리 연산(Logical) add, or, xor, not 비교(Comparison) cmp, test 분기(Branch) jmp, je, jg 스택(Stack) push, pop 프로시져(Procedure) call, ret, leave 시스템 콜(System call) syscall 메모리 피연산자 QWORD PTR [0x8048000] 0x8048000의 데이터를 8바이트만큼 참조 DWORD PTR [0x8048000] 0x8048000의 데이터를 4바이트만큼 참조 WORD PTR [rax] rax가 가르키는 주소에서 데이터를 2바이트 만큼 참조 syscall 요청: ..