![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU8uxf%2FbtrIYmAsncF%2FG7AWHswPoYiqw7KMyKJixk%2Fimg.png)
이번 포스트에서는 CTF-D의 제 친구의 개가 바다에서... 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같다. ## 문제 해석 : 사진 파일에서 플래그를 찾으면 되는 것으로 보인다. ## 문제 풀이 : https://29a.ch/photo-forensics/라는 사이트를 통해서 분석을 해보겠다. ### 실행 결과 : 우측의 Level Sweep 기능을 통해 분석해보면 다음과 같이 사진 속 글자가 보인다. ### 실행 결과 : 사진을 확대해서 보면 다음과 같이 플래그가 보인다. ### Flag : tjctf{th3_f0x_jump3d_0v3r_m3}
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmeSBJ%2FbtrIXWH9hV7%2F6eDr2IZ1rI5UmYKgtYDTr1%2Fimg.png)
이번 포스트에서는 CTF-D의 GrrCON 2015 #1 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같다. ## 문제 해석 : 메모리에 관한 디지털 포렌식 문제이다. 공격자의 이메일 주소를 알아내면 풀 수 있는 것으로 보인다. ## 문제 풀이 : 먼저 해당 파일을 다운로드하여 이미지 Info를 확인해보겠다. ### 명령어 : volatility_2.6_win64_standalone.exe -f Target1-1dd8701f.vmss imageinfo ### 실행 결과 : 운영체제 버전을 확인할 수 있다. 이 중 아무거나 선택해서 분석을 계속해보겠다. ### 명령어 : volatility_2.6_win64_standalone.exe -f Target1-1dd8701f.vmss —profile=Win7S..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFR6uE%2FbtrIT9lDIDi%2FIwfxAP0oF3zkGlrvw26yV0%2Fimg.png)
이번 포스트에서는 Python Challenge의 Level 5 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 사진 한 장과 "발음해봐라"는 문구가 나와 있다. 소스코드를 확인해보니 다음과 같다. "peak hell의 발음이 친숙하다?"라는 문구가 나와 있으며, banner.p라는 파일이 있다. ".p"라는 확장자를 통해 해당 파일은 파이썬의 피클파일인 것을 알 수 있다. ## 문제 풀이 : 먼저 해당 피클 파일을 실행해보겠다. ### 공격 코드 : import pickle from urllib.request import urlopen data = pickle.load(urlopen("http://www.pythonchallenge.com/pc/def/bann..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd6IjZM%2FbtrIJ7JK7QH%2FTBSa2eUCyI3JUtR6jvfkJ0%2Fimg.png)
이번 포스트에서는 Python Challenge의 Level 4 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 사진이 한 장 달려 있다. 사진을 클릭하면 다음과 같은 화면이 나온다. 여기서 nothing은 URL의 파라미터인 nothing임을 짐작할 수 있다. 그럼 해당 파라미터를 계속 바꿈으로써 문제를 풀 수 있는 것으로 보인다. ## 문제 풀이 : 파라미터가 여러 번 변경되므로 파이썬을 통해 자동화 코드를 작성해보았다. ### 공격 코드 : from urllib import response import requests url = "http://www.pythonchallenge.com/pc/def/linkedlist.php?" nothing = 12345 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBwNIg%2FbtrImO4jQEe%2FCBkfbs7FKtuBIa2MsuC9dk%2Fimg.png)
이번 포스트에서는 Python Challenge의 Level 3 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : "양쪽에 정확히 세 명의 큰 보디가드에 둘러싸인 작은 글자 하나"라는 문구가 적혀 있다. 여기서 작은 글자는 알파벳 소문자, 큰 보디가드는 알파벳 대문자를 뜻한다. ## 문제 풀이 : 페이지의 소스를 확인해보니 아래와 같이 주석 처리된 긴 문장이 있다. 대충 훑어보니 영어 알파벳으로 이루어진 것을 알 수 있다. 아마 해당 주석문에서 다음 문제의 키가 존재하는 것 같다. 그럼 우리는 힌트를 통해 3개의 대문자 사이에 존재하는 1개의 소문자가 뭐뭐 있는지를 알아내면 된다. 여기서는 파이썬의 정규식을 활용하여 쉽게 구할 수 있다. ### 공격 코드 : im..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbsus1O%2FbtrIdDBcB2w%2FpPkxxvaFNbMeWkDN8ll9bk%2Fimg.png)
이번 포스트에서는 Python Challenge의 Level 2 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : "문자를 식별하라" 라는 문구가 적혀 있고 페이지의 소스 코드 안에 있다는 말도 함께 적혀 있다. 즉 페이지의 소스 코드 내에 답안이 있는 것으로 보인다. ## 문제 풀이 : 마우스 우클릭하여 페이지의 소스 코드를 확인해보겠다. 엄청 긴 소스 코드가 출력된 것을 확인할 수 있다. 여기서 초록색 위주로 보면 되는데, 기호들 사이에 간혹 아래 그림 처럼 알파벳이 들어가 있는 것을 확인할 수 있다. 그럼 파이썬을 활용하여 페이지 소스를 받은 다음에, 기호가 아닌 알파벳만 출력하게끔 하면 될 것 같다. ### 공격 코드 : import requests url..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs5die%2FbtrH9HEU7dA%2FxgLfkkTk6IHckpeyCX1df0%2Fimg.png)
이번 포스트에서는 Python Challenge의 Level 1 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 알아볼 수 없는 이상한 보라색 문구가 적혀 있다. 그리고 사진 속 K->M, O->Q, E->G가 적혀 있는 것을 확인할 수 있다. 해당 힌트에 대해서 생각해보면 K는 아스키 코드로 75이며 M은 77, O는 79이며 Q는 81, E는 69이며 G는 71이다. 즉 아스키 코드상 +2가 된 것을 알 수 있다. ## 문제 풀이 : 아래와 같이 아스키 코드를 바꿔주는 파이썬 코드를 짜보았다. ### 공격 코드 : cipher_t = input("Input the Cipher : ") plain_t = "" for i in range(len(cipher_t..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA11MA%2FbtrH9GTthuJ%2FLixpsigQIOKX4avaI4CTx0%2Fimg.png)
이번 포스트에서는 Python Challenge의 Level 0 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : URL 주소를 바꾸라는 문구가 있다. 아마 URL 주소를 맞게 변경하면 다음 레벨로 진입할 수 있는 것으로 보인다. ## 문제 풀이 : URL 주소를 확인해보면 다음과 같다. 0.html로 끝내는 것을 확인할 수 있다. 여기서 간단하게 0을 1로 바꿔보겠다. ### 사용할 공격문 : http://www.pythonchallenge.com/pc/def/1.html ### 실행 결과 : 2**38 is much much larger라는 문구가 출력된 것을 확인할 수 있다. 여기서 잠깐 Level 0의 문제를 확인해보면 컴퓨터 위에 2^38이 적혀있는 포스..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxZZ2x%2FbtrHhcqU8jg%2FzKENJI9JZZDXwGItvyAVB0%2Fimg.png)
이번 포스트에서는 Pwnable의 memcpy 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include #include #include #include #include #include unsigned long long rdtsc(){ asm("rdtsc"); } char* slow_memcpy(char* dest, const char* src, size_t len){ int i; for (i=0; i= 64){ i = len / 64; len &= (64-1); while(i-- > 0){ __asm__ __volatile__ ( "movdqa (%0), %%xmm0\n" "movdqa 16(%0), %%xmm1\n" "movdqa 32(%0), %%xmm2\n" "movdqa ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhqR3g%2FbtrG1yt6yCZ%2FTsAFeEJFCq5KSUAXnAKeC0%2Fimg.png)
이번 포스트에서는 Pwnable의 uaf 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include #include #include #include using namespace std; class Human{ private: virtual void give_shell(){ system("/bin/sh"); } protected: int age; string name; public: virtual void introduce(){ cout