728x90

정보보안 공부 45

[withCTF] 우리는 이 파일에 플래그를...

힌트를 보니 “우리는 이 파일에 플래그를 넣었지만 오는 길에 뭔가 엉망이 됐어요.” 에서 인코딩 과정중 망가졌거나 파일 속성이 잘못됐음을 짐작할 수 있었다. flag 파일을 다운받아 .png와 jpg 파일로 확장자를 변경해보았지만 flag값을 찾지 못했고 마지막으로 zip 으로 압축해 파일을 열어보니 flag값을 찾을 수 있었다. ABCTF{broken_zipper} 추가 풀이 HxD를 통해 초기 flag 파일의 헤더를 확인해보면 1F 8B 08 …gz라는 것을 알 수 있음 따라서 확장자를 zip으로 변경하고 해제하면 flag값 획득 가능

[포너블] 리눅스 프로세스의 메모리 구조

1. 세그먼트 리눅스에서는 프로세스의 메모리를 크게 5가지의 세그먼트로 나눈다. 세그먼트란 데이터의 용도별로 메모리를 나눈 것인데 크게 코드 세그먼트, 데이터 세그먼트, BSS 세그먼트, 힙 세그먼트, 그리고 스택 세그먼트로 구분한다. 운영체제가 메모리를 용도별로 나누면 각각의 세그먼트에 권한을 부여할 수 있다는 장점이 있다. (읽기 쓰기 실행 권한이 있으며 CPU는 이 권한에 따라 접근할 수 있다.) 1.1 코드 세그먼트 실행가능한 기계 코드가 저장되는 곳이다. 프로그램이 동작하려면 코드를 읽고 실행시켜야 하기 때문에 읽기, 실행 권한이 부여된다. 쓰기 권한이 부여되면 공격자가 악의적인 코드를 삽입하기 쉬우므로 쓰기 권한은 부여되지 않는다. 예를들어 정수 31337을 반환하는 main함수가 컴파일 되면..

[CTF] 포렌식 포테이토 디지털 포렌식 미궁 게임 CLEAR

0. 서론 7월 13일 정보보호의 날을 맞아 과 동아리 I.Sly()에서 미궁게임을 개발하여 배포했다. 해당 미궁은 디지털 포렌식과 관련된 문제로 이루어져 있으며 문제 난이도는 비전공자도 충분히 풀 수 있는 정도(물론 나는 응애전공자지만) 라고 하길래 새벽 네 시쯤 잠이 안와서 도전해보기로 하였다. 난 CTF 문제를 풀어본 적도 없고 전공에서 배운 gdb디버거 등도 따라가기 어려워 했기 때문에 한 두 문제 풀다가 포기할 줄 알고 가볍게 시작했는데, 의외로.. 다 풀어내서 공부한 것들을 정리할 겸 백업해둔다. *다른 유저들의 플레이를 위해 flag 값은 적지 않았습니다. (정보 공유용x 그냥 내 기록용) *모든 저작권은 미궁 게임을 개발한 동아리 학생들에게 있습니다. (관련 글 : https://hacki..

[네트워크] IP Fragmentation의 취약점을 이용한 Ping Of Death 공격

*2022-1 네트워크 보안 과제 백업입니다. 1. 공격 대상 서비스 거부(DoS) 공격은 가장 파괴적이고 전 세계적으로 비즈니스 운영에 영향을 미치 는 사이버 공격 유형 중 하나이다. DoS의 확장된 공격은 분산 DoS (DDoS, Distribution Denial of Service)로, 여러 장치에서 공격을 가하여 희생자 컴퓨터의 네트워크 트래픽을 과부하 시키고 궁 극적으로는 시스템의 막대한 자원을 활용하여 서비스를 중단시킨다. DDoS 공격은 불필요한 요청 을 네트워크 서버로 과도하게 많이 보내며, 불필요한 요청은 희생자가 원하는 시스템 자원을 사 용할 수 없게 만든다. 그 중 프로토콜 공격의 유형에는 Ping of Death가 있다. Ping 프로그램은 호스트에게 ICMP 에코 요청 메시지를 ..

[시스템 보안] 세그멘테이션 폴트를 gdb 디버깅을 통해 확인하기

*2022-1 시스템보안 과제 백업입니다. 1. 문제 아래 소스 코드를 컴파일하여, 버퍼 오버플로우 취약점으로 인해 Segmentation fault (세그멘테이션 폴트) 오류가 발생하게 하는 최소 길이의 입력 값을 찾고, 이유를 설명하라. 이 과정에서 gdb 디버거를 활용하여 버퍼 오버플로우가 발생하는 시점 직전에 breakpoint (중단점)를 설정하고, 버퍼 오버플로우가 일어난 직후의 스택을 gdb를 통해 각각 확인하여 비교하라 (스크린샷 첨부 필수). 비교 과정을 통해, 세그멘테이션 폴트가 해당 입력에서 왜 발생하게 되었는지를 설명하라. #include int main(int argc, char *argv[]) { char buf[12]; gets(buf); printf(“%s\n”, buf); ..

[시스템 보안] 백도어 (back door)

1. 백도어의 이해 - 시스템 접근에 대한 사용자 인증 등 정상적인 절차를 거치지 않고 응용 프로그램에 접근 - 로그를 남기지 않음 (관리자도 이를 발견하기 어려움) - 주로 사람들이 많이 사용할 것 같은 프로그램에 심어놓음 (안드로이드 apk 파일 등) 1) 백도어와 트로이 목마 - 트로이 목마 : 사용자가 의도치 않은 코드를 정상적인 프로그램에 삽입한 프로그램 - 스파이웨어 : 설치된 정보를 주기적으로 원격지의 특정한 서버에 보내는 프로그램 - 백도어 : 원래 의미는 운영체제나 프로그램을 생성할 때 정상적인 인증 과정을 거치지 않고 운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 통로 2) 백도어의 종류 (동작과 목적에 따라 구분) - 로컬 백도어: 서버의 셸을 얻어내 관리자로 권한 상승(Pr..

[시스템 보안] 레이스 컨디션 (race condition)

1. 공유자원의 접근 1) 공유 자원 - 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말함 - 공동으로 이용되기 때문에 누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라짐 2) 경쟁 조건 (race condition) - 2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황 - 경쟁 조건이 발생하면 공유 자원 접근 순서에 따라 실행 결과가 달라질 수 있음 (CPU 관점에서 일어나는 문맥 교환과 비슷한 의미, 레이스 컨디션 자체가 공격은 아니나 악용하면 충분히 공격으로 적용 가능) A 기기에 돈을 10만원 있는 것을 확인 B 기기에 돈을 5만원 예금 잔고는 총 15만원이 됨 (그러나 A 기기에는 update가 되지 않음) 즉, A 기기에서 10만원을 다시 예금했을 때, 잔..

728x90