'Wargame/xcz.kr'에 해당되는 글 4건

xcz.kr PROB:21번

Wargame/xcz.kr 2018. 1. 21. 23:43

xcz.kr PROB:21번 문제다.

두번째 웹 문제로 점수는 300 point.

소스를 확인해보니 상당히 꼴보기가 싫다. 자바 스크립트 난독화는 몇번 봤는데 php 난독화 같은 경우는 처음본다. 복호화가 필요할 것 같아 찾아봤다.

일단 디코딩은 됐는데 상당히 지저분하다. 저걸 보기 좋게 바꿔야 하는데 툴 같은걸 찾다 딱히 못찾아서

결국 수동으로.... 하.. 


토할 뻔했다.. 하... 이게뭐라고.. 별로 중요한 것도 아닌데 ㅠㅠㅠ 이제 대충 보기좋게 고쳐놨으니 이제 해석을 해보자.

우선 처음에 키 값을 받으면 explode함수를 통해 -를 기준으로 5개의 배열로 나뉘게 된다.
아마 ????-????-????-????-????

이때 이 값들이 preg_match함수를 통해 에러가 안나려면 모두 대문자,소문자 영문이거나 숫자로 이루어져야 한다.

이제 다음 if문들의 조건을 충족시켜 KEY값을 출력하면 될 것 같다.

if(is_numeric(substr($a[0],0,2))&&!is_numeric(substr($a[0],4,1))&&h($a[0])>312&&h($a[0])<333&&!is_numeric(substr($a[1],0,1))&& is_numeric(substr($a[1],3,2)))

먼저 첫 번째 조건문인데 첫번째 배열에서 1,2번째 자리는 숫자여야하고 5번째 자리는 숫자이면 안된다. 그다음 첫번째 배열의 각각의 문자의 아스키 코드값들의 총합이 312가 넘고 333보단 작아야 한다. 
그리고 두번쨰 배열의 첫번째 문자는 숫자이면 안되고 4,5번째 문자는 숫자여야 한다.

첫 번쨰 조건을 통과하려면 대충 122Fa - a??32 - ????? - ????? - ????? 이런 상태인 것 같다.

다음으로 두번째 조건문인데 해석해보면

if(h($a[1])>300&&h[$a[1])<326&&!is_numeric($a[2],0,1))$is_numeric(substr($a[2],1,1))&&h($a[2])>349&&h($a[2])<407){

두번째 배열의 아스키 총합은 300보다크고 326 보다 작다.  세번째 배열의 첫번째 글자는 숫자이면 안되고 두번째 글자는 숫자여야하며 세번째 배열의 아스키 총합은 349보다크고 407보다 작다.  

198
두 번쨰 조건을 통과하려면 대충 122Fa - a2A32 - a33dA - ????? - ????? 이런 상태인 것 같다.

다음으로 세번째 조건문인데 해석해보면

if(!is_numeric(substr($a[3],0,2))&&is_numeric(substr($a[3],2,3))&&h($a[3])>357&&h($a[3]<359)

네번째 배열의 1,2번째 글자는 숫자이면 안되고 3,4,5번째 글자는 숫자여야 한다. 그리고 아스키 총합은 357보다크고 359보다 작다. 즉 358이어야 한다.

122Fa - a2A32 - 3a3dA - aa992 - ????? 

드디어 마지막 조건이다..

if(round((h($a[0])+h($a[1])+h($a[2])+h($a[3])))/4)==h($a[4]))

1~4번째 배열의 총합을 4로 나눈후 반올림한 값과 네번째 배열의 총합이 같으면 된다. 337만들자.

122Fa(316) - a2A32(313) - a33dA(364) - aa992(358) - 22dW3

그대로 입력해보자.

성공!

귀찮아서 그렇지 문제자체의 난이도는 어렵지 않은 것 같다.


'Wargame > xcz.kr' 카테고리의 다른 글

xcz.kr PROB:18번  (0) 2018.01.21
xcz.kr PROB:17번  (0) 2018.01.21
xcz.kr PROB:13번  (0) 2018.01.21
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

xcz.kr PROB:18번

Wargame/xcz.kr 2018. 1. 21. 23:43

xcz.kr PROB:18번 문제다.

위 사이트의 첫 번째 웹 문제로 점수는 150point이다.

들어가보면 다음과 같은 화면이 나타나는데 첫 웹 문제인 만큼 Basic이라고 나타난다.

소스를 확인해보니 변수에 대해 간단한 난독화가 이루어져 있다. 양이 별로 없기 때문에 Ctrl + F로 찾은 후 직접 치환을 했다.


basic 답게 소스는 매우 간단하다. get, post, cookie 세가지에 대해 모두 값을 받고 그 중 test함수에 get과 cookie의 전달된 값을 더한 것이나 post값 중 하나를 넣었을 때 둘중하나만 조건에 성립하면 키가 배출된다.
test()함수는 입력한 값에서 -를 추가하고 한바이트씩 아스키코드값으로 변환한다.  


다음과 같이 파이썬코드를 작성했다. 첫번째 조건문을 통과시키기위해 get에는 103 , 105, 118, 101에 해당하는 give라는 값을 주고 나머지 부분은 cookie값에 password라고 넣어 줬다. post값은 필요없으므로 아무값이나 줬다. 다음과 같이 실행하면 키값이 나오게된다.

성공! basic 문제라 그런지 너무 간단했다.


'Wargame > xcz.kr' 카테고리의 다른 글

xcz.kr PROB:21번  (0) 2018.01.21
xcz.kr PROB:17번  (0) 2018.01.21
xcz.kr PROB:13번  (0) 2018.01.21
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

xcz.kr PROB:17번

Wargame/xcz.kr 2018. 1. 21. 23:42

xcz.kr PROB:17번 문제다.

점수는 100 point.

짱게임이란 놈한테 xcz.kr에 있는 비밀번호를 해킹당한거 같다.

패킷파일이 있고 이를 확인해보면 될 것 같다.

먼저, 열어보니 패킷양이 상당하다. 필터링을 해야할 것 같다. 먼저 비밀번호가 xcz.kr에 있기 때문에 xcz.kr에 접근했을 거라 생각하고 xcz.kr ip를 필터링 해봤다.

 

아직 양이 상당하다. 좀더 패킷을 필터링해야 할 것 같다.

이 떄 보면 xcz.kr를 대상으로 하나의 사설아이피가 지속적으로 패킷을 보내는데 이게 아마 사용자의 PC IP 인 것 같다. 또한 지문에서 주어진 정보를 잘 생각해보면 사용자와 서버 사이의 http 통신 중에 패킷을 스니핑 당하거나 세션 하이재킹이 있었을 것으로 추측된다.

양이 꽤 많이 줄었다.

마지막으로 사용자가 ZZANGGAME이라 했으니 id가 이와 비슷할거라 유추된다. 이를 좀 완화시켜 패킷에 ZANG을 포함하는 것만 따로 필터링한다.

5개의 패킷을 하나씩 Follow TCP Stream 해보면 다음과 같이

 Join Success라는 성공창을 보여주는 패킷의 pw값이 비밀번호라는 걸 알 수 있다.

성공!


'Wargame > xcz.kr' 카테고리의 다른 글

xcz.kr PROB:21번  (0) 2018.01.21
xcz.kr PROB:18번  (0) 2018.01.21
xcz.kr PROB:13번  (0) 2018.01.21
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

xcz.kr PROB:13번

Wargame/xcz.kr 2018. 1. 21. 23:42

xcz.kr PROB:13번 문제다.

점수는 150point.

네트워크 관련 복구 문제인 것 같다.

확장자를 알 수 없는 파일을 하나 주는데 네트워크 문제인 만큼 파일이 pcap형식의 파일일 거라고 생각하고 hex 에디터로 열어봤다.

근데 pcap의 시그니처 헥스 값인 D4 C3 B2 A1가 아니고 처음보는 이상한 값이 나와있다. 흠..

무슨 파일의 시그니처 값인지 찾아보니 pcapng의 시그니처 헥스 값이었다. pcapng는 pcap에서 조금

더 확장된 버전정도로 생각하면 될 것 같다. 

확장자를 바꿔서 파일을 열어봤다.


27.255.67.44라는 서버가 172.30.1.6이라는 사용자IP에게 대량의 응답패킷을 보내주는걸 봐서 http 통신을 하고있는 것 같다.

다음과 같이 필터링해봤다.

treasure1, treasure2, tresure3이라는 서버자원을 지속적으로 요청하고 서버가 이에 png파일 형식으로 응답해주는걸 볼 수 있다.
실제로 Follow tcp stream을 해보면 서버가 png파일 형식으로 응답해 주는걸 확인할 수 있다.


확장자명 밑에 헥스값들을 추출해 이미지를 복원할 수 도 있지만 귀찮은 작업이기 때문에 와이어샤크에 객체 추출 기능을 사용하기로 했다.

 

treasuer1,2,3에 대해 png확장자명을 주고 열어보았다.

별게 없다. 2,3번째 파일은 아예 파일이 열리지도 않는다.

흠..2,3 번째 파일의 바이트 값들을 확인해보니 3번째 파일의 맨 마지막에 다음과 같은 PNG 파일의 푸터 시그니처가 보인다. 즉, 3개의 파일이 나누어 진 것을 알 수 있다.

3개의 파일을 합친 후 실행시켜봤다.

성공!


'Wargame > xcz.kr' 카테고리의 다른 글

xcz.kr PROB:21번  (0) 2018.01.21
xcz.kr PROB:18번  (0) 2018.01.21
xcz.kr PROB:17번  (0) 2018.01.21
블로그 이미지

JeonYoungSin

메모 기록용 공간

,