ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • holyshield BrokenPiano
    CTF&Wargame/ETC 2016.12.22 17:55

    holyshield BrokenPiano

    이문제는 대회 때 아쉽게 못풀었던거같다


    피아노 모양에 C#으로 된 바이너리이다

    그리고 사진 처럼 버튼마다 클릭시 값을 가지게 되는데

    값을 다 누른 후 버튼 17을 누르면 된다


    우선 버튼 17을 보면 this.code가 null과 같다면 return을 한다

    그렇기 때문에 아무버튼이나 한번 눌러주고 버튼 17을 눌러준다

    버튼 17은 오른쪽 맨 끝 검은 건반이다


    지금은 접속이 안되는데

    저 위에 사이트에서 base64로 인코딩된 값이 나온다

    임시로 base64로 인코딩해서 값을 서버에 넣고 위에 부분에 아이피와 포트를 변경해서 풀도록 하겠다

    이런식으로 기존 바이너리를 인코딩해서 서버에 넣었다

    엄청긴데 저걸 풀어서 a.exe로 만든다


    그리고 a.exe가 있다면

    해당 소스처럼 내가 건반으로 입력한게 a.exe 전달된다

    그리고 내가 입력한거의 길이를 2로 나눠서 나머지가 0과 다르면 리턴한다

    2의 배수로 값을 넣어주면된다


    a가 FAIL이면 밑에 메시지와 함께 리턴된다

    그러므로 a.exe를 보자


    a.exe에서는 일단 8글자를 입력받는다 

    그리고 밑에 FAIL과 PASS가 있는데 위에 연산을 맞춰줘서 PASS를 띄워야한다

    대회 때는 여기서 저걸 어떻게 맞춰야할지 몰라서 포기했었다

    이 때부터 풀이를 기다리고있었는데 http://kblab.tistory.com/412

    해당 풀이 글에서 보듯이 z3를 이용하면 쉽게 풀 수 있다

    z3를 미리 알았더라면....

                

    이런식으로 무슨값이 들어가는지 알 수 있다


    이렇게 입력을 해주면 a.exe에서 PASS가 뜨게 된다


    이제 알았으니 저 값을 피아노로 쳐준다

    위에 사진을 보고 누르면 될거같다

    값을 다 치고 마지막에 17번을 눌러주면된다


    그렇게 하면 여기 부분에서 값을


    이런식으로 split() 해주고


    이 값을 가지고

    a.exe에 입력하게 되고


    a가 FAIL인지 판단하는데 a에는

    이렇게 PASS가 들어간다

    그 다음으로 입력한 값을 서버에 보내게 되는데

    서버를 임시용이라 실제로 무슨 값을 받아오는지는 알 수 없다


    받아온 값을 text에 넣고

    메시지 박스로 보여주는데


    이래 나온다 아마 실제로는 다른 HS{이런게 나올테지만..}

    'CTF&Wargame > ETC' 카테고리의 다른 글

    NEWSECU CTF Write-up  (0) 2017.01.01
    holyshield ppc  (0) 2016.12.24
    holyshield BrokenPiano  (0) 2016.12.22
    holyshield puzzle  (0) 2016.12.19
    holyshield ransome  (0) 2016.12.19
    holyshield easylang  (0) 2016.12.19

    댓글 0

Designed by Tistory.