문제 페이지에서는 패스워드를 갖고 있냐는 말과 함께, 다운로드 링크가 존재한다. 추가로 영어 마지막 문장을 보면 Brute-force를 할 필요가 없다고 한다. 다운받으면 So_Simple.zip 파일이 보인다. 압축을 풀려고 하니 암호가 걸려있다고 뜬다. 그런데 다시 문제를 보면 암호가 있기나 한건가! 라는 문자열이 보인다. 압축파일을 HxD를 사용해서 변경한것이 있나 확인을 해보았다. 우선 .zip 파일의 구조는 아래와 같다. 압축 방법에 대한 부분을 00 00 으로 변경해보았다. 그럼 압축을 풀 때 암호를 입력하는 창이 뜨지 않는다. 압축을 푼 폴더내에 존재하는 압축파일을 한번 더 풀었다. key2, key3 파일은 의미 없어보이는 텍스트파일 같다. 압축파일 내에 존재했던 텍스트 파일에 인증키로 보..
문제 페이지에 적혀있는 영어를 해석하면 아래 내용과 같다. NSA가 IRC 서버로부터 마피아 조직원들 간의 대화를 도청했다. 수사관들은 그 메시지가 어떤 비밀을 가지고 있다고 확신하지만, 그들은 어떤 단서도 찾을 수 없다. 당신의 임무는 NSA 수사관들을 돕고 이 메시지의 비밀을 밝히는 것입니다. down 버튼을 누르면 메세지 파일을 다운받을 수 있다. 제목에서 x86 이라는 걸 보고, 다운받은 텍스트 파일을 HxD에 넣어서 확인했다. 여기서부터 어떻게 해야 할지 몰라서 살짝 찾아봤는데 HxD에서 txt 파일의 HEX 값을 복사해서 디버거에 넣어야 된다고 한다. 디버거로 아무 exe 파일을 연다. 어셈블리 코드 드래그 하여 선택 > 우클릭 > Binary > Binary paste ⇒ 위 과정을 거치면 ..
이번 암호화 문제는 Frequency 분석을 통해 암호 텍스트에서 일반 텍스트를 얻어내야 한다고 한다. 공백과 마침표는 생략했다고 한다. 암호학에서의 빈도분석은 평문과 암호문에서 사용되는 문자의 빈도를 이용해서 암호를 해독하는 것이다. 아래 링크에서 분석을 시도했다. https://quipqiup.com/ 분석된 결과는 아래와 같다. kimyuna 를 인증페이지에 입력했다.
문제 페이지에는 LAST NUMBER라는 문자열과 바로 밑의 MAKE 버튼, 다운로드 링크가 보인다. MAKE 버튼을 눌러보면 숫자 4자리가 나온다. 파일을 다운받으면 Suninatas25.zip 이 다운받아진다. 파일 압축을 풀면 앞에서 풀었던 문제들과 동일하게 확장자가 없는 파일이 나온다. HxD 로 확인해보면 앞에서 보았던 파일 시그니처인 PK임을 확인할 수 있다. 파일에 .zip으로 확장자를 붙였다. Androidmanifest.xml 파일이 보이는 것을 보아 또 apk 파일 관련 문제라고 생각했다. dex2jar 를 사용해서 .jar 파일로 변환했다. 중요해보이는 코드 부분을 가져왔다. if (str != null) { Intent intent = new Intent("android.intent..
문제 페이지를 보면키 파일을 다운받는 링크만 존재한다. 파일을 다운받으면 suninatas.zip 파일이 다운받아진다. 압축을 풀면 suninatas24 파일이 나온다. suninatas24 파일을 HxD에 올려서 파일 시그니처를 확인했다. PK 라는 시그니처는 압축된 파일이라고 한다. HxD로 확인하면 상단에 AndroidManifest.xml 파일이 보이는 걸 봐서 안드로이드 파일이 들어있는 압축파일인 것 같다. suninatas24 파일에 .zip 이라는 확장자를 붙여서 확인했다. 디렉터리 내에 존재하는 classes.dex 파일을 디컴파일하기 위해 dex2jar를 사용해 jar 파일로 변환했다. 변환한 classes-dex2jar.jar 파일을 java 코드로 읽기 위해 JD_GUI 프로그램으로 ..
이번에는 앞에서 푼 Blind SQL Injection과는 다르게 더 어렵다고 한다. admin 이라는 문자열도 제한이 되어있다. pw의 길이를 찾는 데 필요한 len은 필터링이 되어있지 않아서 바로 pw의 길이를 확인해보았다. 우선 id에 입력해야 하는 admin을 우회하기 위해 문자열을 잘라서 확인해보았더니 우회가 되었다. id에 입력해야 하는 admin은 a'+'dmin'으로 우회했다. admin을 우회하는 방법을 찾았으니 pw의 길이를 찾기 위해 아래 명령어들을 사용했다. a'+'dmin' and len(pw)
문제 페이지를 보면 로그인 화면과 함께 Blind SQL Injection 문제라고 적혀있고, 필터링 키워드들이 적혀있다. Blind SQL Injection은 오류가 출력되지 않을 때 사용하는 공격 기법으로, 한 문자씩 알아내며 DB 정보를 알아내는 SQL Injection의 한 종류이다. 소스코드를 확인해보면, 게스트 계정 정보가 나와있고, 나는 admin pw를 알아내는것이 목표라고 적혀있다. 우선 guest 계정으로 로그인을 해보았다. OK guest 라고 문자열이 출력되는 것 외에는 다른점이 보이지 않는다. id에는 guest를 입력하고, 뒤에 주석을 달았다. pw는 1234를 넣어보았다. guest의 pw는 guest임에도 불구하고 1234로도 로그인에 성공했다. 이번에는 id는 admin으로..
문제 페이지를 보면 솔루션 키와 부분 가려진 문자열이 보인다. 이미지를 저장해서 확인했더니 다른 이미지들과는 다르게 파일 크기가 컸다. 다른 이미지가 숨어있나 싶어서 foremost 명령어를 사용해 확인했다. 총 8개의 이미지가 숨겨져있었다. 가려진 부분이 부분부분 달라서 인증 키를 맞춰보았다. AuthKey : H4CC3R_IN_TH3_MIDD33_4TT4CK 알아낸 값을 인증페이지에 입력했더니 문제가 풀렸다.
문제 페이지를 보면키 리버싱이라고 적혀있고, 힌트 2가지가 적혀있다. correct 함수가 호출될 수 있는 input 중 가장 짧은 것을 구하시오 이 문제는 프로그램이 실행되는 어떠한 시스템에서도 동일하게 풀려야합니다 문제와 함께 파일을 다운받을 수 있는 링크가 있다. 그러나 리버싱 프로그램에 파일을 올려보면 잘못된 PE 파일이라고 한다. IDA 에 파일을 올려서 확인했다. 프로그램 좌측에는 Functions - Function name 이 있다. Correct 함수를 더블클릭해서 트리구조로 확인했다. 코드를 보면 어떤 값과 0DEADBEEFh 가 같은지 비교하여 "Congratulation! you are good!” 문자열을 출력하는 구조인 것 같다. Ghidra를 사용하여 가장 먼저 main 함수를..