해킹/Write Up

Dimigo CTF 2017 간단 Write Up

NextLine 2017. 7. 18. 17:19

라이트업 이라기보다는 후기라는 느낌으로 봐주셨으면 좋겠습니다. 익스코드가 궁금하시다면 댓글로 요청주세요~

WEB

100

소스 어딘가에 flag가 있다고 하고 웹사이트 하나를 던져준 문제이다. 웹 사이트 시작시 where is flag?가 뜨는데 이 구문이 어디서 뜨는지 의심스러워서 flag를 띄워주는 script파일을 보면 알 수 없는 실행코드가 들어있다. 자바스크립트 난독화가걸려있는데 풀고 실행안된 함수 실행해주면 아스키아트로 flag가 나온다.


200

끝나고나서 알았는데 그냥 결과창에서 post로 데이터 99999999999999999999999999 넣고 보내면 Flag가 뜬다고한다..


Reversing

50

바이너리열고 string 확인하면 Flag가 있다.


100

도샵열어주는 프로그램으로 열면 Flag가 있다.


400

앵거돌리면 20초만에 나온다더라..(대회때는 못품)


PWN

100

단순 bof긴 한데 약간 생각해야한다. 바이너리가 xml parser이므로 양쪽 태그 붙여서 안에있는 데이터로 bof를 일으켜야한다.

bof하고 뭐할지 모르겠었는데 바이너리 오디팅해보니까 read_flag함수가 있었다..


200

그냥 rop chain짤 때, ret에 main한번 더넣고 bof 두번 일으켜서 rop하면된다.


300

이문제를 못풀어서 4등을 못했다 ㅋㅋㅋㅋㅋㅋ 자괴감이 들었던 문제인데 200점 바이너리에서 그냥 main두번 호출을 자체 카나리로 막아놨다.

leave ret을 이용하여 bss영역에다가 rop chain을 구성하여 문제를 풀면된다


400

사실 unsafe_unlink나 house of force로 푸는건데 unsafe_unlink 어려워보여서 한번도 관련 문제 안풀어보다가 이 문제보고도 unsafe_unlink 생각도못했다. 그런데 unintended solution으로 fastbin_duplicaiton을 통하여 문제를 풀었다. 풀고났는데 flag에 house_of_force or unsafe_unlink 있길레 엥? 했다


MISC

1

마이크 체크


100

[ 원본 -> base64 -> 어떠한 행위 -> php's bin2hex = 결과 값 ]

이라면서 결과값을 줬는데 대회때는 아 게싱 문제 하면서 못풀었다. 근데 풀이를 여쭤보니 게싱을 하거나 사이드채닝이라는 기법으로 풀어야한다고 했다.


100

원본 문자열 시작이 DIMIGO이고 뒤 부터 6개의 바이트가 0인 해쉬값을 찾는것이였다. 포너블 rop풀면서 libc-db를 설치했는데 그거 설치할동안 할꺼없어서 보다가 설치끝나기전에 브포돌려서 푼 문제이다 ㅋㅋㅋ


100

그냥 사진주고 위치어디인지 맞추는건데 사진에 gps정보 확인하면 된다. (BOB 과제인데 ㅠㅠ)


후기

9등이랑 4등이랑 점수차이보면서 자괴감들었다..

300점 포너블이나 다른거 하나라도 풀었으면되는데 포너블 푼다고 버티다가 못풀었다.. (6위가 거의 10분남기고 마지막에 순위변동으로 올라온친구인데 그전에 풀었으면 입상이였다..) 포너블공부 빡공하는걸로..