일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 모바일프로그래밍
- John the ripper
- 디스크
- K-shield Jr 10기
- Frida
- Multimedia
- 리버싱핵심원리
- 파일해시생성
- Mobile
- 포렌식
- crack
- 침해사고대응
- Android
- Reversing
- 케쉴주
- K-sheild Jr
- ZIP
- SW에듀서포터즈
- shadow
- ctf-d
- upx
- tar
- 안티디버깅
- 써니나타스
- Autoware
- Interceptor
- CodeEngn
- disk
- swing
- Today
- Total
목록Waregame & CTF (95)
물먹는산세베리아
PE 파일은 DOS header ~ Section header까지는 PE 헤더, 그 아래의 Sections들은 PE 바디로 구성되어 있다. 먼저, PE 헤더에 대해 살펴보자. 참고로, 파일은 일반적인 PE 파일의 기본 구조를 갖고 있는 윈도우의 notepad.exe 파일을 사용했다. 1. DOS Header PEViewer에서 notepad.exe 열어봄 PE 헤더의 맨 앞에는 IMAGE_DOS_HEADER 구조체가 있다. IMAGE_DOS_HEADER typedef struct _IMAGE_DOS_HEADER // DOS .EXE header { WORD e_magic; // Magic number WORD e_cblp; // Byte on last page of file WORD e_cp; // Pa..
1. 데이터 이동 MOV : 데이터복사 MOV 목적지, 소스 소스 내용을 목적지에 복사 MOV EAX, ECX MOVZX : 0확장하여 데이터 복사 MOVZX 목적지(32bits/16bits), 소스(16bits/8bits) 소스 목적지에 복사, 목적지 남은 부분은 0으로 채우기 MOVZX EAX, CX 연산 전: EAX(89ABCDEF), ECX(12345678) 연산 후: EAX(00005678), ECX(12345678) * 목적지가 32bits면 소스는 16 bits, 목적지가 16bits면 소스는 8bits 레지스터가 옴 * CX는 ECX 레지스터의 하위 16비트 값(즉, 5678)을 의미한다. MOVSX : 부호 확장하여 데이터 복사 MOVSX 목적지(32bits/16bits), 소스(16bi..
1. 64bit 레지스터 1.1. 레지스터 변화 EAX (4byte) → RAX (8byte) EBX (4byte) → RBX (8byte) EBP (4byte) → RBP (8byte) ... 사이즈와 이름이 달라지긴 했으나 x64에서 EAX, EBX, ..가 사용되지 않는 건 아니다. EAX는 RAX의 하위 4byte를 의미하기 때문이다. 1.2. 새로 추가된 레지스터 x64에서 범용 레지스터의 크기는 64비트(8바이트)로 확장되었다. R8~R15 레지스터가 추가되어 개수도 18개로 늘어났다. 모든 범용 레지스터들의 이름은 'R'로 시작한다. (x86은 'E'로 시작한다.) 새로 추가된 64비트 모드에서만 사용 가능한 레지스터는 64비트 모드에서 호환 모드로 전환 한 후 64비트 모드로 다시 전환되는..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
파일명: ropasaurusrex 아무 글자나 입력하니 WIN이라는 단어가 나왔다. 바로 IDA로 까봤다. main에서 sub_80483f4()라는 함수와 write 함수를 확인할 수 있었고 좀 전에 출력된 WIN도 볼 수 있었다. 버퍼의 크기는 136인데 read함수에서 256byte(0x100)을 입력받기 때문에 BOF취약점이 있다는 걸 확인할 수 있었다. 여기에 system("/bin/sh")을 넣어야 하는데 read, write 모두 인자를 세개씩 갖고 있으므로 "pop; pop; pop; ret" 가젯 주소를 찾는다. objdump -d ropasaurusrex | grep -B3 ret 주소는 80484b6이다. read@plt 주소 구하기 objdump -d ropasaurusrex | gr..
보호되어 있는 글입니다.
문제 nc pwnable.kr 9000 https://pwnable.kr/play.php https://pwnable.kr/play.php pwnable.kr 풀이 일단 실행해서 아무거나 넣어봄 overflowme에 입력하면 될 거 같다. bof.c #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0;..