반응형

HackCTF 문제 풀이 / Web - Time (150)


https://ctf.j0n9hyun.xyz/challenges#Time

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

 

Web - Time(150) 문제를 풀어보도록 하겠습니다. 

우선 아래 링크에 접속해 보겠습니다.

http://ctf.j0n9hyun.xyz:2032/

접속해 보면 아래와 같은 php 코드가 출력됩니다. 

아래 코드를 분석해 보겠습니다. 

먼저, time이라는 변수를 가져와, is_numeric() 함수를 통해 이 변수의 값이 숫자인지 검사합니다. 

 

그리고 그 숫자가 60 * 60 * 24 * 30 * 2 의 숫자보다 크거나 같고, 

60 * 60 * 24 * 30 * 3의 숫자보다 작거나 같은 숫자가 입력되어야 마지막 else문으로 진입할 수 있습니다. 

하지만, else 문으로 들어가면, 그 변수의 값으로 sleep() 함수를 호출하고, flag를 출력하는데, 

그 변수의 값이 2달, 3달에 대한 초가 입력이 되기 때문에, 2달, 3달은 기다려야 flag 값을 가져올 수 있습니다.

 

이때, php의 취약점을 이용하여 문제를 해결할 수 있습니다. 

60 * 60 * 24 * 30 * 2 = 5184000 입니다. 

지수형으로 표현해보면 5.18400e6 입니다. 

php에서는 5.18400e6를 (int) 형으로 형변환 할때, 소수점 이하는 잘라버리기 때문에 5가 됩니다. 

그러면 결국에는 sleep(5)가 되어 5초 이후에 flag를 확인할 수 있습니다.

반응형
반응형

wargame 문제 / WTF_CODE - 150 point 문제 풀이

 

http://wargame.kr/challenge

 

Wargame.kr - 2.1

 

wargame.kr

 

WTF_CODE 문제를 실행해보면, 아래와 같이 출력됩니다. 

이것은 또 다른 프로그래밍 언어라고 하고, 읽을 수 있는지 물어 봅니다. 

Start를 눌러보겠습니다. 

Start를 눌러보면 아래와 같이 출력됩니다. 

source code.ws를 눌러보면 파일 하나가 다운로드 됩니다. 

메모장으로 그 파일을 열어보면, 블록은 생기는데 문자는 하나도 보이지 않습니다. 

 

white space 언어인데, 이 언어를 실행해 보려면 아래 사이트에서 실행해 볼 수 있습니다. 

한번 아래 사이트에서 코드를 복사하여 실행해 보겠습니다. 

https://ideone.com/

 

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

ideone.com

실행해보면 아래와 같이 key가 생성된 것을 볼 수 있습니다. 

이 코드를 입력해보겠습니다. 

 

그러면 점수가 올라간 것을 볼 수 있습니다. 

Crome에서는 안될 수도 있으니 Explorer에서 해보시면 될 듯 합니다.

반응형
반응형

해커스쿨 ftz 문제풀이 / level6

level6로 로그인하면 바로 hint가 출력됩니다. 

인포샵 bbs의 텔넷 접속 메뉴에서 많이 사용되던 해킹 방법이라고 합니다.

 

엔터를 입력하면 아래와 같이 화면이 나옵니다. 

1,2,3을 모두 입력해도 접속은 안되고 프로그램이 종료됩니다. 

 

이 화면에서 Ctrl + C 키를 입력하면 level6 권한으로 bash가 실행됩니다. 

hint가 보여지는 화면에서 입력을 기다리고 있다가 엔터를 누르면 텔넷 접속 서비스 순으로 출력되는 것을 생각할 수 있습니다. (hint 출력 -> 키 입력 대기 -> 키 입력 -> 텔넷 서비스 출력) 

텔넷 서비스가 출력되었을 때에는 Ctrl + C를 하면 ssh를 종료하도록 해 놓은 듯 합니다. 

level6 홈 디렉토리에 password가 있고, 이 파일의 내용을 보면 level7의 패스워드를 확인할 수 있습니다.

반응형
반응형

해커스쿨 ftz 문제풀이 / level5

 

level6의 권한을 얻는 문제입니다. 

 

/usr/bin/level5 프로그램은 level6에 setuid가 설정되어 있습니다.  

이 프로그램을 실행시키면 /tmp 디렉토리에 level5.tmp를 생성한다고 합니다. 

하지만, /tmp/에 가보면 level5.tmp 라는 파일은 찾을 수 없습니다. 

 

이는 /tmp/level5.tmp를 생성하고 바로 지우는 것을 유추할 수 있습니다. 

이 파일을 지우는 것은 /tmp/level5.tmp 파일이 level6 권한으로 만들어 졌기 때문입니다. 

그러면 /tmp/level5.tmp 파일을 level5의 권한으로 만들면, /usr/bin/level5 프로그램 실행시켜도 해당 파일이 삭제되지 않을 것입니다. 

 

level5.tmp를 level5의 권한으로 생성합니다. 

파일 내용 없이 만드니깐 크기는 0이 됩니다. 

 

그리고 나서 /usr/bin/level5를 실행시킵니다. 

그러면 /tmp/level5.tmp 파일 내용을 업데이트 하였지만, 이 파일에 대한 소유자는 level5이기 때문에 삭제하지는 못하게 되어 파일이 그대로 남아 있습니다. 파일 크기를 보면 약간 증가한 것을 볼 수 있습니다. 

이 파일의 내용을 보면 다음 레벨의 패스워드가 있는 것을 볼 수 있습니다.

반응형

+ Recent posts