반응형

CTF & WarGame 70

유용한 해킹 & CTF wargame 사이트

해킹과 취약점을 학습하기에 유용한 사이트를 발견했다. thehacktoday.com/ The Hack Today — Hacking News Platform that covers on Cyber Security, Privacy, Surveillance and Cyber Crime. Hack Today is a News Platform that centers on InfoSec, Cyber Crime, Privacy, Surveillance and Hacking News with full-scale reviews on Social Media Platforms & Technology trends. thehacktoday.com 외국 사이트지만 침투 테스트를 위한 자료들이 많이 포함되어 있다. 취약점 분석을 진..

CTF & WarGame 2020.10.06

[DIMICTF] dimi-math 문제풀이(Write up)

해당 문제는 netcat으로 접속하여 제공되는 S/W를 이용하는 방식의 챌린지이며, 힌트로는 smt slover가 제공된다 SMT(Satisfiability Modulo Theories) : 술어논리 기반의 논리식(방정식을 포함하는 개념) SMT solver : SMT를 풀어 정답을 도출하는 S/W 중근(Multiple root) : 2차 이상의 방정식에서, 2개 이상의 같은 값인, 중복되는 근(해) netcat을 이용해 해당 주소 및 포트로 접속하면 다음과 같은 화면이 뜬다. 제한시간은 500초이고 300문제를 풀게되면 쉘을 획득할 수 있게 된다, 코딩을 이용해 문제를 풀어보자. SMT solver 파이썬 모듈인 sympy를 사용할 것이며, 해당 모듈은 중근 존재 여부를 확인해주지 않으므로 코딩 중 별..

[DIMICTF] DIMICTF와 CTF를 위한 환경설정

- DIMICTF란 DIMICTF(한국디지털미디어고등학교CTF)는 청소년 모의해킹대회로 불리며, 과학기술정보통신부와 한국정보기술연구원에서 후훤하고 한국디지털미디어고등학교에서 주최 및 주관하는 국내 해킹대회이다. 챌린지의 유형은 제퍼디(Jeopardy, 출제된 퀴즈를 풀이하는 방식)이며, 분야는 일반적으로 많이 다루어지는 리버싱, 포너블, 웹, 및 MISC(MISCellaneous, 기타)로 구성되어 있다. 문제는 총 20문제로 구성되어 있으며, 예선전에 출제된 문제이다.

[wargame.kr] md5 password

207point인 md5 password 문제를 풀어보자. 첫 화면은 password를 입력할 수 있는 부분과 소스코드를 볼 수 있는 창이 있다. 쿼리문을 살쳐보면 입력받은 password값을 md5로 처리해서 쿼리의 결과를 반환하는 것 같다. 그리고 결과값이 $row 변수에 들어있으면 $key값을 echo하여 화면에 출력해주게 된다. 해당 문제는 md5의 취약점을 이용한 문제인 것으로 판단되며, md5함수의 취약점에 대해 알아보자. - md5(string $str, [bool $raw_output=false]) $str 해쉬값을 구할 문자열 $raw_output true 로 설정하면, 결과값이 16자로 만들어준다. 설정하지 않을 경우, 32자의 길이를 가진다. default는 false이다. MySQL..

[wargame.kr] login filtering

132point인 login filtering을 풀어보자. 문제에서는 계정이 있지만 block 상태라 하고 있다. login을 우회 가능한지 묻는 문제인 것 같다. 이제 시작해보자. - mysql_real_escape_string : mysql query에서 특수 문자열을 이스케이프하기 위해 사용 - trim() : 시작 문자와 끝 문자에 공백(또는 특수문자)을 포함하고 있으면, 제거한 문자열을 반환 특수문자가 이스케이프처리 되어 버리기 때문에 Injection을 시도할 수 가 없다. PHP는 문자열 비교에 있어서 대소문자를 구별하지만, MySQL은 기본적으로 대소문자를 구분하지 않는다. 그러므로, block처리되어 있는 계정의 아이디 값을 대문자로 넣어 인증 우회를 시도해보자. Guest / guest..

[wargame.kr] QR CODE PUZZLE

111point 인 QR CODE PUZZLE문제를 풀어보자. 문제에 들어가면 QR 코드가 뒤죽박죽 섞여있는 모습을 볼 수 있다. 소스를 살펴보면 자바스크립트의 unescape 함수를 확인할 수 있다. - escape() : URI로 데이터를 전달하기 위해서 문자열을 인코딩 - unescape() : escape를 통해서 만들어진 URI 이스케이핑을 디코드 콘솔에 unecape함수의 코드를 실행해보면 "./img/qr.png"의 파일 경로가 나온다. 해당 경로로 접을 해보면 QR Code 가 나온다. QR 코드 인식 App을 이용해 스캔하면 http://http://wargame.kr:8080/qr_code_puzzle/Give_M3_th7_F1aG.php 주소가 나오게 된다. 해당 URL로 접근하면 F..

[wargame.kr] flee button

84point인 flee button 문제를 풀어보자. 문제에 들어가보면 clik me! 버튼을 누르라고 하고 있는데 마우스로의 움직임이 클릭이 안되게끔 만들어져 있다. 소스 코드에서 힌트를 살펴보도록 하자. 자바 스크립트 코드가 난독화 되어 있는 것으로 보인다. 해당 unescape_blue14 함수 안에 들어있는 난독화된 코드를 개발자 도구 콘솔에 넣어 실행해보자. 총 2번에 걸처 unescape_blue14 함수를 실행해보면 최종적으로 다음과 같은 코드가 나온게 된다. "" onclick="window.location='?key=11f5';" onclick 속성의 window.location를 통해 url뒤에 ?key=11f5 파라미터를 보내보도록 하자. FLAG 값을 확인할 수 있다. 해당 값을 ..

[wargame.kr] already got

81 point인 already got 문제를 풀어보자. 문제를 클릭하게 되면 HTTP 응답 헤더를 확인했는지 물어본다. Start 버튼을 누르게 되면 이미 key를 획득했다는 문자열이 반환된다. 프록시를 이용해 응답 헤더를 살펴보도록 하자. 헤더부에 FLAG 값이 들어 있는 것을 확인했다. 해당 값을 제출해보도록 하자. 문제가 정상적으로 풀리는 것을 확인할 수 있다.

[webhacking.kr] 61번 문제

200점인 61번 문제를 풀어보자. 만약 id파라미터가 없다면 id=guest가 된다. id의 값이 15자 이상이거나 ( , ) , select, from, ',' , by, '.' 문자열은 필터링 된다. select {$_GET['id']} from chall61 order by id desc limit 1 쿼리문을 해석해 보면, 입력받은 id를 검색하는데 chall61테이블에서 id컬럼을 내림차순으로 정리한 것 중 id의 첫번째 줄에서 1개를 가져오라는 의미이다. 쿼리 후 결과가 admin이면 문제가 풀리게 된다. 이제 인젝션을 통해 문제를 풀어보도록 하자. 'admin' from chall61--를 넣어 뒤의 조건을 주석처리 시켜버리면 쉽게 해결할 수 있지만, from 문자열이 필터링 되고 있기 때..

반응형