컴퓨터 보안/실습 & Write-Up

컴퓨터 보안/실습 & Write-Up

[Webhacking.kr] old-26

1. 문제 설명 문제 링크에서 view-source를 클릭해 바로 소스 코드를 얻을 수 있다. 아래 php 코드를 살펴 보면, id의 값이 'admin'이면 풀린다는 사실을 알 수 있다. 2. 문제 풀이 1. preg_match 우회 하지만 preg_match() 함수에서 id의 값에 'admin'을 넣으면 exit()가 실행되어 solve()가 있는 if문에 도달할 수 없게 된다. 그러나 다음 라인에서 urldecode 함수가 실행되고 있으므로, 'admin'을 인코딩한 값을 넣으면 preg_match를 우회하면서 urldecode에서 'admin'으로 디코딩될 수 있다. 따라서 id의 값으로 admin을 인코딩한 값(%61%64%6D%69%6E)을 대입한다. 하지만 다시 'admin'으로 디코딩되며 ..

컴퓨터 보안/실습 & Write-Up

[Webhacking.kr] old-15

1. 문제 설명 문제 링크로 이동하면 아래의 alert 팝업이 뜬다. 2. 문제 풀이 1. 자바스크립트 차단 일단 alert 팝업이 뜬 후 사이트 홈으로 리다이렉션되는 것을 무력화해야 한다. 해당 상호작용은 자바스크립트에서 구현되므로, 브라우저 기능으로 자바스크립트를 차단한다. (크롬의 경우 사이트 고급 설정에서 차단할 수 있다.) 2. 소스 코드 확인 접속이 가능해지면서, DevTools를 통해 소스 코드를 확인할 수 있게 됐다. 9번째 라인의 document.write() 부분을 확인하면, '?getFlag'을 url에 추가함으로써 flag를 얻을 수 있는 것으로 보인다. 3. 정답 URL 접속 아래의 URL을 입력해서 접속하면, 문제가 바로 풀리게 된다.

컴퓨터 보안/실습 & Write-Up

[Dreamhack] Textbook-CBC

1. 문제 설명 2. 문제 풀이 1. challenge.py 분석 challenge.py 코드를 살펴 보면, 초기 벡터(IV)와 키가 동일하며, CBC 모드를 사용하고 있음을 알 수 있다. 만약에 0으로 채워진 한 블록을 CBC 모드로 암호화한다면, $E_{K}(P+IV) = E_{K}(0+K) = E_{K}(K)$ 따라서 $E_{K}(K)$를 구할 수 있게 된다. 그리고 총 두 개의 블록을 복호화한다고 가정하면, CBC 모드의 마지막 암호문 블록을 복호화하는 과정은 아래와 같다. $P_{2} = D_{K}(C_{2}) + C_{1}$ 이때 $C_{1}$을 0으로, $C_{2}$를 $E_{K}(K)$라고 한다면, $P_{2} = K$가 된다. 2. 복호화 코드 작성 from pwn import * fro..

컴퓨터 보안/실습 & Write-Up

[Dreamhack] ROT128

1. 문제 설명 2. 문제 풀이 1. 먼저 문제 파일의 압축을 푼다. 2. rot128.py의 코드를 확인한다. encfile이 어떻게 암호화됐는지 살펴보기 위해 rot128.py 코드를 확인해야 한다. 코드에 hex_list라는 게 먼저 나오는데, 이게 어떤 것인지 살펴봤다. 0부터 1씩 증가하는 hex 리스트인 것을 볼 수 있다. plain_list는 평문이 hex로 파싱된 list이다. 그리고 저 flag.png가 우리가 복호화해야 할 평문의 원본이다. 아래 코드에서 암호문이 카이사르 암호라는 걸 알 수 있다. 카이사르 암호는 간단한 치환암호 중 하나다. 평문의 각 단위를 일정한 거리만큼 밀어서 다른 문자로 치환하는 방식이다. 왜 카이사르 암호냐면, hex로 파싱된 평문을 순회하면서 hex_list..

컴퓨터 보안/실습 & Write-Up

[WHS] 컴퓨터구조 기초 실습

1. 구름 IDE로 리눅스 개발 환경 구성 1-1. 구름 IDE 서비스 회원가입 및 로그인 구름 IDE에 접속해 먼저 회원가입 및 로그인을 진행했다. 1-2. 컨테이너 생성 컨테이너 생성을 위해 기본 템플릿 및 C/C++을 스택으로 설정했다. 추가 도구 항목에서는 VSC를 체크했다. 위의 설정대로 컨테이너를 생성했으며, 잘 실행하는 것을 확인할 수 있었다. 2. Sizeof 연산 코드 작성 2-1. 소스 코드 작성 char, short, float 등 다양한 자료형의 사이즈를 출력하는 코드를 작성했다. 이때 '%zu'는 sizeof 연산의 출력을 위한 형식 문자이다. 2-2. 실행 결과 3. 오버플로 예제를 언더플로로 변경 3-1. 소스 코드 작성 는 정수형 자료형의 유효 범위를 확인할 수 있는 헤더다...

컴퓨터 보안/실습 & Write-Up

[WHS] 문서파일 포렌식 실습

1. 문제 설명 위의 pdf 파일에서 아래 3가지 정보를 찾아내면 된다. 고객 이름 거래 장소 거래 금액 2. 문제 풀이 2-1. 고객 이름 HEX 에디터에서 font를 검색해보면 정상적인 폰트 이름이 아닌, 고객 이름이 나타나는 것을 볼 수 있다. 'mycustomernameisNoliardaski'에서 고객 이름이 Noliardaski임을 확인할 수 있다. 2-2. 거래 장소 스크롤을 계속 내리다보면 (Line 670) 마지막 부분쯤에 자바스크립트 코드가 한 줄 등장한다. 앞에 있는 'x\x9c'는 hex로 '78 9c'인데, 이것으로 app.alert에 쓰인 데이터가 zlib 파일이라는 것을 알 수 있다. (포렌식에서 앞 hex는 문서의 종류를 밝히는 데에 항상 중요하다고 한다.) 위의 출처에 표기..

컴퓨터 보안/실습 & Write-Up

[Dreamhack] welcome

1. 문제 설명 2. 문제 풀이 1. 접속 정보를 확인하여 타겟 Host와 포트 번호를 알아낸다. 2. 리눅스의 netcat (nc) 툴을 사용하여 tcp 연결을 시도한다. netcat host3.dreamhack.games 23229 3. DH{...} 형식의 플래그 응답을 확인하고 정답을 입력한다.

bsj54
'컴퓨터 보안/실습 & Write-Up' 카테고리의 글 목록