Basic03 힌트를보면 비주얼베이직의 스트링 비교함수를 알아오라고 합니다. 구글링해서 답을 찾을 수 있는 문제지만, 디버깅을 통해 알아보는게 실력향상에 도움이 될겁니다. 분석할 실행파일을 실행하고 등록을 눌렀더니 오류가 뜨네요. 저 문자열을 기억하고 있겠습니다. 스트링을 비교해서 True이면 맞는 값을, False면 저 msg의 경고창을 날리는 종류인 것 같습니다. Exeinfo PE로 확인을 해보면 visual Basic으로 컴파일이 되어있고 패킹은 안되어 있습니다. 디버깅을 해보면, VB 파일을 디버깅하게 되면 항상 저런 모습의 exe파일과 다르게 점프문 형식으로 이루어져 있습니다. VB는 이벤트 값으로 실행하고 불러오는 구조이기 때문에 그렇습니다. exe파일 분석하다가 이런 파일 만나면 너무 어렵..
Basic02의 힌트를 보면 패스워드가 무엇인지 분석하라고 나옵니다. 일단, 실행을 해보겠습니다. 실행은 안되고 오류가 뜨네요. 흠.. 헥스레이로 한번 살펴보겠습니다. 예상대로 기존의 실행 파일과는 많이 다르네요. MZ(4D 5A)만 정상이고 다른 것들은 좀 이상해보입니다. 아래는 일반 실행파일과 이번 문제 파일의 비교입니다. 일반 실행파일의 헤더 구조 이상하다 싶어서 아래를 계속 내리니 헤더 복구가 된다면 정상적인 API 함수도 사용하고 기존의 True/False 루틴도 나옵니다. 그런데 문자열 속에 무언가를 숨겨놓네요.
코드엔진 Basic부터 차근차근 풀어가도록 하겠습니다. 다른 사이트와 다르게 답을 공개하면 불이익이 주어지네요. 풀이만 공개하겠습니다. 일단, 문제를 보시면 HDD를 CD-ROM으로 인식하기 위해서 리턴값을 바꿔야 하는 것 같은데, 바로 올리디버거로 분석 해보겠습니다. 밑의 화면을 보시면 처음에 MsgBox를 띄워줍니다. 당신의 HDD를 CD-Rom으로 만들어라. 흠.. 아래의 API 함수가 눈에 띄네요. GetDriveTypeA라는 함수는 현재 드라이브를 가져와서 리턴 시키는 함수입니다. UINT WINAPI GetDriveType( _In_opt_ LPCTSTR lpRootPathName ); 인자로는 path 값을 받아서 실행을 합니다. 밑의 화면은 GetDriveType의 리턴 값입니다. 트레이싱..
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라는 포맷스트링을 ..
MySQL 설치- sudo apt-get install mysql-server mysql-client 아파치 설치- sudo apt-get install apache2 localhost 입력 후 설치 유무 확인- localhost PHP5 설치 - sudo apt-get install php5 libapache2-mod-php5 Apache 재부팅- sudo /etc/init.d/apache2 restart PHP5 설치 유무 확인- localhost/test.php PHPMyAdmin 설치- sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin PHPMyAdmin 설치 유무 확인- localhost/phpmyadmin
level10에서 hint를 보겠습니다. ls -al을 보면 못보던 program이라는 디렉터리입니다. 하지만 root권한이라서 읽지도 못합니다. 분명히 program 안에는 단서가 있을텐데 말입니다. 혹시 몰라서 평소같이 level11을 권한으로 하는 파일을 찾아봤더니, 전혀 없네요.. 다르게 생각해보면 프로그램을 시스템이 시작될 때 자동으로 시작되도록 등록하는 설정에 해당 파일이 있을 수 있으므로 rc.local 파일을 확인해 볼 필요가 있습니다. 그 파일은 /etc/rc.d/rc.local 경로에 있습니다. 이제 rc.local 파일에서 실행파일의 이름과 경로를 알았으니 level10이라는 이름으로 실행중인 프로세스가 있는지 확인해 봅니다. 하지만 level10으로 실행 중인 프로세스는 없다. 즉,..
- Total
- Today
- Yesterday
- idapython
- CVE-2018-0798
- 출처 : Do it 안드로이드 프로그래밍
- AMSI
- cuckoo-sandbox
- 멋쟁이사자처럼 4기
- Cisco Talos
- Servey
- 악성코드
- Static Analysis Engine
- Yara
- koodous
- Flybits
- 해킹메일
- 한글악성코드
- vuln
- keylogger
- Decoding
- Bisonal
- 비트코인
- .wll
- MS-Office
- us-cert
- CVE-2018-9375
- malware
- infostealer
- 위협정보공유
- VirusBulletin
- Kimsuky
- 스피어피싱
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |