본문 바로가기

챌린지

Lord of SQLInjection - gremlin 지난 글에서도 언급했지만 나는 웹, 특히 데이터베이스 부분에 대해서 많이 취약하기 때문에 이 부분에 대해 공부를 좀 할 필요가 있다. 그래서 인터넷에서도 이런저런 문서를 찾아보고 있긴 한데 얼마전 이 글을 읽고서 LoS, 즉 Lord of SQLInjection 문제를 풀면서 공부하기로 했다. Webhacking Techtree – blog.rubiya.kr 2019년 중순 기준으로 해킹의 분야 중에서 수 년 째 포너블의 강세가 계속되고 있습니다. 그러나 실무에서는 웹해킹의 비중이 아직도 압도적으로 높습니다. 모의해킹 업무를 나가면 90%는 웹이고 blog.rubiya.kr 리버스 엔지니어링도 기초 지식을 공부한 후 워게임 문제를 풀면서 흥미를 가졌던 것처럼 SQL Injection도 문제를 풀어보면서 .. 더보기
bughela - WTF_CODE wargame.kr의 5번째 문제인 WTF_CODE다. 이번에는 약간 쉬어가는 느낌으로 어떤 특별한 기술이 요구되지 않는다. 이번 문제는 특이하게 어떤 프로그래밍 언어로 쓰여진 소스 코드를 해석하는 문제다. 확인을 위해 Start 버튼을 눌러 문제 사이트로 진입하여 소스 코드를 다운받아보자. 문제에서 설명하는 것처럼 다운받은 소스 코드를 메모장으로 열어보면 아무것도 안 보이는 것을 확인할 수 있다. 하지만 드래그를 해보면 공백인지 아니면 표현이 안되는 문자인지 뭔지 모를 데이터가 존재하고 있는 것을 볼 수 있다. 자세한 확인을 위해 16진수 값으로 볼 수 있는 HxD 프로그램으로 열어보면 다음과 같이 0x20, 0x0A, 0x09 3개의 문자로 이루어진 코드임을 알 수 있다. ASCII 테이블을 확인해보.. 더보기
bughela - login filtering wargame.kr의 네 번째 문제인 login filtering이다. 차단된 계정에 로그인하는 것이 목적이다. Start 버튼을 눌러 문제를 확인해보면 다음과 같은 간단한 로그인 폼이 나타난다. 따로 자바스크립트로 필터링하는 부분이 없기 때문에 백엔드 단에서 입력값을 검증하고 있다는 것을 알 수 있다. 개발자 도구로 소스를 확인해보면 주석으로 어떤 계정의 아이디와 비밀번호가 두 쌍 적혀있는데 아마 이 계정이 차단된 계정이라 추측할 수 있다. 해당 아이디와 비밀번호로 로그인을 시도하면 차단되었다는 메시지가 나타난다. 다른 요소를 조사해봐도 별다른 정보를 얻을 수 없었기 때문에 get source 링크를 클릭해서 소스 코드를 분석해보자. 주석에서 계정을 저장하는 테이블의 정보를 알려주고 있다. 기본키와 인.. 더보기
bughela - QR CODE PUZZLE Wargame.kr의 세 번째 문제인 QR CODE PUZZLE이다. 아직까지는 간단한 퀴즈같은 느낌이라 별 문제는 없다. 이번에도 자바스크립트 문제로 퍼즐 챌린지라고 한다. Start 버튼을 눌러 문제 페이지로 이동해보자. 페이지로 이동하니 옛날에 많이 하던 슬라이드 퍼즐 게임이 등장했다. 근데 타일의 모양을 자세히 보니 일종의 QR 코드 인 것 같은데 이 퍼즐을 완성하면 어떤 QR 코드가 만들어지고 이를 스캔해서 플래그를 얻을 수 있는 것 같다. 빈 공간을 클릭하다보면 퍼즐을 언젠가는 맞출 수 있겠지만 워게임은 퍼즐 게임이 아니기 때문에 다른 방법으로 이를 맞추거나 원본 사진을 알아내야 할 것이다. 일단 소스 코드를 살펴보자. 소스를 확인해 보니 jqp-piece 클래스 div가 퍼즐의 한 칸을 이루.. 더보기
bughela - flee button wargame.kr의 두 번째 문제인 flee button이다. 아직까지는 낮은 포인트의 문제로 그리 어렵지 않다. 문제 설명은 버튼을 클릭하라는 것인데 잡을 수가 없다고 한다. 무엇이 문제길래 그런 것일까? Start를 눌러 문제 페이지로 진입해보았다. 지금 마우스 커서가 안보여서 무슨 일인지 모르는 사람도 있을 수 있겠지만 저 click me! 버튼이 마우스가 움직이면 자기도 같이 움직여서 클릭할 수가 없다. 사용자 입력에 그대로 반응하기 때문에 피지컬로 되는 그런게 아니고 자바스크립트를 살펴봐야 할 것 같은데, 일단 개발자 도구로 해당 버튼을 살펴보자. 엄청나게 빠르게 값이 변해서 거의 볼수도 없는 버튼의 속성이다. 마우스가 움직일 때마다 해당 div, 즉 버튼의 style이 변하고 있는데 abso.. 더보기
Challenge(old) 24 자기 전에 한번 풀어보려고 쉬운 문제를 골랐는데 금방 풀 수 있어서 이렇게 블로그에 포스팅한다. 사실 webhacking.kr에 있는 문제들은 대부분 SQL 문제기 때문에 아직 해당 분야에 공부를 안 한 나로서는 풀기 버겁다. 그래서 PHP나 자바스크립트 문제 위주로 풀고 있는데 그 중에서도 100점짜리, 매우 낮은 단계의 문제를 풀어보았다. 사이트에 접속하면 이상한 주소의 client ip와 유저 에이전트 정보가 표시되고 Wrong IP! 라는 문자열이 사이트 가운데에 출력된다. 개발자 도구로 요청 헤더나 응답 헤더를 살펴봐도 특별한 점을 찾을 수 없는데 특이한 것은 테이블의 client ip에 뭔가 빠진듯한 IP 주소가 적혀 있다는 것이다. 좀 더 알아보기 위해 view-source를 눌러서 소스를 .. 더보기
bughela - already got 요즘 보안 공부를 본격적으로 시작하면서 워게임 문제도 조금씩 풀어보고 있다. 아직 리버싱 기초밖에 공부하지 않았긴 한데 그래도 뭔가 문제를 풀면서 공부해야 의욕도 나고 성취감이 있을 것 같아 reversing.kr, webhacking.kr, pwnable.kr, wargame.kr 이 네 곳을 중점적으로 시도해보고 있는데 그 중에서도 wargame.kr의 첫 번째 문제를 풀어보았다. wargame.kr의 문제들은 reversing.kr 때처럼 클릭하면 문제가 다운받아지는 게 아니라 간단하게 문제 설명이 나오고 문제 사이트로 이동해서 푸는 형식이다. 인증 코드를 입력하는 폼이 있는데 문제를 풀어서 얻은 플래그를 입력하면 풀었다고 표시되는 것이다. 이번 문제는 "can you see HTTP Respons.. 더보기
Challenge - Replace Reversing.kr의 5번째 문제인 Replace다. 이전 문제인 Music Player보다는 조금 더 푼 사람이 많은데 아마 비주얼 베이직 프로그램이 아니어서 그런지도 모른다. 이번 문제에서는 단순히 문제 파일만 주어지고 어떻게 뭘 하라는 지시가 없어서 좀 헷갈릴 수 있다. 일단 프로그램을 실행시켜보자. 사용자 입력을 받는 텍스트 박스 하나와 Check 버튼, 그리고 Wrong이라는 문자열로 구성된 화면이 나타났다. Wrong 문자열이 있는 부분은 사용자 입력에 아무 반응이 없으며 텍스트 박스에는 숫자만 입력할 수 있다. 일단 아무 값이나 입력한 후 Check 버튼을 눌러보면 어떤 반응도 없이 그대로 프로그램이 종료되는 것을 볼 수 있다. 그런데 뭔가 프로그램이 종료되는 모습이 부드럽지가 않은데, .. 더보기