이번 포스트에서는 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..
이번 포스트에서는 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이 적혀있는 포스..
이번 포스트에서는 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 ..
이번 포스트에서는 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
이번 포스트에서는 XSS game의 Level 6 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 웹 사이트가 외부 파일을 요청해서 alert()을 실행하게 하면 된다. ## 문제 풀이 : 코드를 먼저 확인해보겠다. 43번째 코드를 확인해면 #뒤에 오는 값이 그대로 gadget의 경로로 활용된다고 한다. 그럼 바로 한 번 확인해보겠다. ### 공격 코드 : https://xss-game.appspot.com/level6/frame#GOTYOU ### 실행 결과 : GOTYOU가 화면에 출력된 것을 확인할 수 있다. 그럼 Data Url Schema라는 기법을 통해 공격을 시도해보겠다. Data Url Schema : 데이터를 URL 표현으로 바꾼다. 사용법은 d..
이번 포스트에서는 XSS game의 Level 5 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : Sign up을 누르면 다음과 같은 화면이 나온다. 이메일을 입력하고 Next 버튼을 누르면 다음과 같은 화면이 나온다. 5초 뒤에 다시 초기화면으로 돌아간다. 이어서 코드를 확인해보겠다. next 파라미터 값이 그대로 활용되어 next 변수값에 들어간 것을 확인할 수 있다. 즉, 우리는 next 변수를 통해 자바스크립트를 전달할 수 있다. 그러나 URL을 모르기 때문에 URL을 알아내보도록 하겠다. 13번째 코드를 확인해보면 url을 알 수 있다. 이제 url와 next 파..
이번 포스트에서는 XSS game의 Level 4 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : 우선 해당 웹 사이트에 alert()를 바로 삽입해서 공격해보겠다. ### 공격 코드 : ### 실행 결과 : 제대로 작동하지 않고 있다. 이어서 코드를 분석해보겠다. 분석한 결과, 우리가 삽입한 값이 23번째 줄의 timer에 들어간다는 것을 알 수 있다. 그러나 우리가 입력한 값이 parseInt() 함수를 통해 디코딩 되고 있다. 그럼 23번째 코드의 형식에 맞게 공격문을 삽입해보겠다. ### 공격 코드 : 1');alert('GOTYOU ### 실행 결과 : 공격에 성..
이번 포스트에서는 XSS game의 Level 3 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. 단 이번 문제는 애플리케이션 상이 아닌 URL 주소란을 활용해야 한다. ## 문제 풀이 : 우선 해당 웹 사이트에 XSS 공격이 적용되는지를 확인해 보겠다. ### 공격 코드 : 가 출력된 것을 확인할 수 있다. 여기서는 사진의 확장자인 jpg가 출력되었으므로 img태그가 활용되고 있다는 것을 추측해낼 수 있다. 또한 "'" 작은 따옴표로 끝나는 것을 알 수 있다. 그럼 img 태그라고 가정하여 onerror 핸들러를 활용하여 끼워맞추면서 공격을 실행해보곘다. ### 공격 코드 : ' onerr..
이번 포스트에서는 XSS game의 Level 2 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : script 태그를 사용해서 alert() 함수를 삽입해보겠다. ### 공격 코드 : ### 실행 결과 : script 문을 삽입해보니 제대로 실행되지 않다는 것을 알 수 있다. 힌트를 확인해보니 다음과 같다. script 태그가 동작하지 않다고 한다. 아마 필터링 처리되었을 것 같다. 또한 그 대신 i, m, g와 onerror가 동작한다고 한다. 그럼 img 태그의 onerror 핸들러를 활용해서 공격을 실행해보겠다. ### 공격 코드 : ### 실행 결과 : 공격에 성공..
이번 포스트에서는 XSS game의 Level 1 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : script 태그를 사용해서 alert() 함수를 삽입해보겠다. ### 공격 코드 : ### 실행 결과 : 공격에 성공한 것을 확인할 수 있다.