문제 설명에  xss 봇이 서버에서 돌고있다고 설명해준다. 페이로드를 짜서 내 서버에 xss 봇의 정보를 전송하면 될듯하다.



문제 메인인데 내가 입력한것은 항상 봇이 확인한다고 한다.



기본적으로 alert부터 띄워보니 필터링은 하나도 없고 쿼터만 사용이 무력화된다. 


페이로드 짤때 쿼터 못쓰니까 짜증날거같아서 아예 스크립트를 만들기로 생각했다.



이런식으로 내 서버에있는 js파일을 삽입했다.



js파일은 간단하다. 내 서버로 xss 봇의 쿠키값을 전송한다.



 php 파일은 내 DB에 봇에서 날라온 쿠키를 저장하는 역할이다.


그러나 쿠키는 존재하지 않는가보다. 날라오는데 아무것도 보이지 않는다.



두번째로 생각한것은 그냥 봇의 소스이다. 봇 소스에 주석으로 FLAG 적혀있지 않을까 생각했다.



소스를 가져왔는데 내가 날린 스크립트만 있고 아무기능도 단서도 없다.



세번째로 생각한것은 봇의 URL이다. 내가 직접 들어가 보기로 했다.



그런데 그냥 파라미터 이름으로 flag가 박혀있었다.


재밌다.


'문제 > RingZeroTeam' 카테고리의 다른 글

RingZer0Team RingZer0 Authenticator  (0) 2016.09.06
RingZer0Team Windows API for the win!  (0) 2016.09.06


실행을 시켜보니 username과 authCode를 입력받는다



디컴파일을 해보니 sub_4014A0함수에서 username과 authCode를 검사하는듯 하다.




주석으로 처리해 놓았는데 첫번째 do-while문에서는 username이 RingZer0인지 검증을 한다.


두번째 do-while문에서는 authCode의 길이가 15자 인지를 검증한다.


마지막 while문에서는 authCode의 값들이 '0'~'9'중에 있는지를 검증한 후 


sub_401334와 sub401450함수를 차례로 호출한 후 최종적으로 v10[4]==v19[17]가 참이어야지 인증에 성공하는 프로그램이다.


sub_401334함수는 a1(username)이 정해져 있기 때문에 분석할 필요가 없고 sub_401450함수만 분석하면 될듯하다.



 분석해 보면 15자리의 authCode를 3자리씩 잘라서 3개의 값들을 연산을 통해 총 5회 반복하여 크기 5의 문자열을 만들어낸다.


그리고 반환된 문자열을 앞서 반환된 문자열의 v9[1],v9[5],v9[8],v9[14],v9[17] 인덱스와 비교를 한다.


 디버깅을 통해 각각의 값은 0x98 0x97 0x78 0x0f 0x15 이다.


한번에 authCode의 3자리씩 알아낼 수 있으므로 간단한 코딩을 하면 문제가 풀린다.










'문제 > RingZeroTeam' 카테고리의 다른 글

RingZer0Team XSS Challenge 2  (0) 2016.10.20
RingZer0Team Windows API for the win!  (0) 2016.09.06


다운 받으면 exe파일 하나를 준다



디컴파일을 해보면 입력값이 &unk_403065와 같으면 ShowFlag함수가 실행된다.


인자값으로 입력값이 들어가는 것을 보아 if문을 우회해서 함수를 실행시키는게 아니라 


원하는 입력값을 입력해야만 옳은 Flag가 나올것으로 보인다.


 &unk_403065의 값이다.

입력값과 v11을 xor연산 하는것을 보니 v11의 값을 알아야 하는데 v11은 GetK 함수들을 통해 생성되는 것으로 보인다.


디버깅을 통해 v11에 들어가는 값을 보니


GetK1 = 8

GetK2 = -56

GetK3 = 24

GetK4 = 40

GetK5 = -72

GetK6 = -24


이런식으로 나왔다.


입력값을 알아내기위해 v11과 &unk_403065를 한바이트씩 xor연산을 통해 출력을 하면 값이 나온다.



참고로 디버깅을 하다가 getk6함수에서 GlobalHandle함수만 호출하면 프로그램이 죽었다.



GlobalHandle함수에 대해 검색을 해보니 확실한 원인은 찾지 못했지만 


옛날에 window7이 나온지 얼마 안됬을 때 피카츄배구가 window7에서 안돌아가서 win7호환용으로 따로 피카츄 배구가 있었다고 한다.


xp용과 7호환용의 차이점을 보니 win7호환용에서는 이 함수를 쓰지 않았다고 한다.


정확히는 모르지만 그냥 이 함수는 쓰면 안될거 같아서 함수 호출하는 부분을 NOP 처리하고 풀었다.


근데 실행하면 되는데 디버깅하면 왜 안되는지 모르겠다.


Windows API can be painful some time. 라고 문제에 써있어서 GlobalHandle함수가 문제인것은 확실한것 같다.



'문제 > RingZeroTeam' 카테고리의 다른 글

RingZer0Team XSS Challenge 2  (0) 2016.10.20
RingZer0Team RingZer0 Authenticator  (0) 2016.09.06

+ Recent posts