그동안 포스팅 하면서 워게임은 너무 Root Me 문제만 풀이한것 같아
새로운 워게임을 하나 찾아보았다.
CTFlearn(https://ctflearn.com/) 이라는 사이트이고
해킹대회 연습용 문제들이 많이 올라와있다.
첫번째 문제는 웹해킹 문제이다.
39779 명이나 문제를 푼 걸 보면 엄청나게 쉬운 문제이듯 한다.
문제소스는 따로 주어지지 않고, 문제 페이지 주소만 주어진다.
link 버튼을 눌러 접속할 수 있다.
문제 페이지에 접속하면 이런 화면이 나온다.
Input : 밑에 사용자가 입력할수 있는 폼이 하나 있고,
아래쪽에는 사용자의 입력값을 받아 데이터베이스로 전달하는 SQL 구문이 그대로 출력되어 보인다.
예를들어 Input 에 HELLO 라고 입력하면
아래쪽 SQL 구문에 SELECT * FROM webfour.webfour where name = 'HELLO' 라고 출력이 되는것을 볼 수 있다.
문제 설명에도 써 있듯이
이 문제는 SQL Injection 문제이다.
SQL 인젝션은 사용자의 입력을 서버측에서 적절하게 필터링 하지 못할 경우 발생하고,
공격자는 악의적인 입력값을 통해 데이터베이스에 저장된 비인가 정보에 접근하여 읽을 수 있게 된다.
여기서 해야하는 일은
1. SQL 구문을 변경시킨다.
2. Where(조건)절이 항상 참이 되게끔 한다.
3. SQL 구문을 변경시키고 나서 남은 작은따옴표를 제거해준다.
위 세가지이다.
어려워보이지만 아주 간단하게 위 세가지 작업을 할 수 있다.
Input 창에 ' OR 1=1-- - 이라고 입력해주면 된다.
SELECT * FROM webfour.webfour where name = ' ' OR 1=1-- - '
그럼 SQL 구문은 위처럼 만들어질 것이고,
작은따옴표가 맨 앞에 들어감으로써 SQL 구문이 변경되고,
OR 1=1 로 인해 Where 절은 항상 참의 결과값이 나오게 된다.
마지막으로 맨 뒤에 살아있는 작은따옴표는 주석처리(-- -) 를 통해 없애줄 수 있다.
실제로 ' or 1=1-- - 을 입력해보면
Where 절이 항상 참이 되어버리기 때문에
webfour 테이블 전체가 조회되고,
조회된 내용 중간에 플래그가 있는것을 볼 수 있다.
'워게임 > CTFlearn' 카테고리의 다른 글
[CTFlearn] Base 2 2 the 6 - 암호학 / Base64 (42) | 2022.07.24 |
---|---|
[CTFlearn] Where Can My Robot Go? - 웹해킹 / robots.txt (47) | 2022.07.17 |
[CTFlearn] Taking LS - 포렌식 / Linux / 숨김파일 (64) | 2022.07.13 |
[CTFlearn] Character Encoding - 암호학 / ASCII (48) | 2022.07.08 |
[CTFlearn] Forensics 101 - 포렌식 / HxD / Strings (66) | 2022.07.04 |