[Pwnable] Return Address Overwrite
·
Hacking/Wargame
Code AnalysisOOB ( Out of Bound)▶ scanf("%s", buf) → %[n]s- 입력 길이를 제한하지 않음- 공백문자가 들어올 때까지 계속 입력을 받음> 버퍼 오버플로우 발생 * 버퍼의 크기를 같이 입력하는 strncpy, stncat, snprintf, fgets, memcpy Trigger프로그램이 잘못된 메모리 주소에 접근했다는 의미 *core dumped : 코어파일이 생성됨 > 프로그램이 비정상 종료됐을 때 디버깅을 돕기 위해 운영체제가 생성해주는 것 Stack frame► 0x400729 ret 0x40072a nop word ptr [rax + rax] 0x400730 ..
BitLocker
·
Hacking
데이터 도난, 분실, 부적절하게 서비스 해제된 디바이스의 노출 위협을 해결하는 전체 드라이브에 대한 암호화를 제공하는 윈도우 보안 기능  이동식 디스크와 시스템 드라이브 암호화 지원전체 암호화를 진행하여 엑세스 제한Window 7부터 지원BitLocker의 제공 기능전체 디스크 암호화 : 윈도우 운영체제와 데이터를 포함한 전체 디스크 암호화볼륨 암호화 : 특정 볼륨(드라이브)만 암호화TPM 기반 암호화 : TPM을 사용하여 암호화 키를 보호복구키 제공: BitLocker을 해제하기 위한 복구키 제공 TPM하드웨어적인 보안 장치 : 비밀번호나 인증서, 암호키 등을 저장 ▶ BitLocker와 함께 작동하여 시스템이 오프라인 상태인 동안 디바이스가 변조되지 않았는지 확인 암호화 : AES 128 bit / ..
SAM(Security Account Manager)
·
Hacking
SAM(Security Account Manager) database file in the microsoft windows operating system that contains usernames and passwords 사용자 이름과 비밀번호가 포함된 Microsoft Windows 운영 체제의 Database 파일 각 사용자 계정 : LAN 암호 & SAM Microsoft Windows 암호 할당 Passworld hashes : 두 가지 모두 암호화되어 있어 어떤 사용자도 접근할 수 없음 > 보안 강화 비밀번호를 입력 > Windows 시스템 : SAM의 비밀번호와 비교하여 확인 - 일치하는 경우 : 시스템에 대한 엑세스 권한 부여 > SAM파일이 백그라운드에서 계속 실 - 일치하지 않는 경우 :..
[Memory Corruption] Stack Buffer Overflow
·
Hacking/Pwnable
Stack Buffer Overflow 스택에 위치한 버퍼에 버퍼의 크기보다 많은 데이터가 입력되어 발생하는 버그  *stack overflow : 스택 영역이 너무 많이 확장되면서 발생하는 버그  Buffer (버퍼)데이터가 목적지로 이동되기 전에 보관되는 임시 저장소 데이터가 처리되는 속도가 다른 두 장치 > 버퍼 : 완충작용을 해줌버퍼가 가득 찰 때까지 유실되는 데이터 없이 통신 가능속도가 다른 두 장치에서 안정적으로 목적지에 도돨하도록 함→ 데이터가 저장될 수 있는 모든 단위를 의미 ex) 스택 지역 변수 : 스택 버퍼 / 힙 지역 변수 : 힙 버퍼 *버퍼링 : 송신 측의 전송 속도가 느림 → 수신 측의 버퍼가 채워질 때까지 대기 Buffer Overflow (버퍼 오버플로우)버퍼가 넘치는 것을 ..
[Pwnable] Shell_basic
·
Hacking/Wargame
문제 : https://dreamhack.io/wargame/challenges/410 shell_basicDescription 입력한 셸코드를 실행하는 프로그램이 서비스로 등록되어 작동하고 있습니다. main 함수가 아닌 다른 함수들은 execve, execveat 시스템 콜을 사용하지 못하도록 하며, 풀이와 관련이 없는dreamhack.io  execve shell code를 사용할 수 없음> orw shell code를 이용하여 /home/shell_basic/flag_name_is_loooooong 에 있는 값을 알아내야함 int fd = open("/home/shell_basic/flag_name_is_loooooong", RD_ONLY, NULL);read(fd, buf, 0x50);write..
[Exploit] ShellCode(2) - execve shell code
·
Hacking/Pwnable
shell : 운영체제에 명령을 내리기 위해 사용되는 사용자 인터페이스kernel : 운영체제의 핵심 기능을 하는 프로그램  shell 획득 → 시스템 제어 → 시스템 해킹 성공execve shell code임의의 프로그램을 실행하는 shell code → 서버의 shell을 획득할 수 있음 execve("/bin/sh", null, null)syscallraxarg0 (rdi)arg1 (rsi)arg2 (rdx)execve0x3bconst char *filenameconst char *const *argvconst char *const *envp rax : 0x3brdi : "/bin/sh"rsi : NULLrdx : NULL* NULL : xor register register;Name: execve..
[Exploit] ShellCode(1) - orw shell code
·
Hacking/Pwnable
Exploit : 해킹 분야에서 상대 시스템을 공격하는 것 ShellCode 익스플로잇을 위해 제작된 어셈블리 코드 조각목적 ) shell을 획득하기 위함* 어셈블리어 ↔ 기계어 : 일대일 대응 ▶ 원하는 모든 명령을 CPU에 내릴 수 있음orw shell code 파일을 열고, 읽은 뒤 화면에 출력해주는 shell codechar buf[0x30];int fd = open("/tmp/flag", RD_ONLY, NULL);read(fd, buf, 0x30); write(1, buf, 0x30);>/tmp/flag를 읽는 shell code를 c언어 형식의 의사코드로 표현한 것 syscallraxarg0 (rdi)arg1 (rsi)arg2 (rdx)read0x00unsigned int fdchar* bu..