본문으로 바로가기

[ctfLearn][Review] : Inj3ction Time

category CTF/CTFs 2020. 12. 27. 22:03
728x90
반응형

설명을 읽어보자면 UNION SQL Injection을 이용해 풀어야 하는 것을 힌트로 주고 있습니다. 링크로 들어가 봅시다.

입력을 받을 수 있는 폼 하나와 그 밑으로 어떤 데이터가 나와있습니다 입력 폼에 2를 입력해봅시다.

2를 입력하고 보니 GET 방식으로 전송이 요청되었고 밑의 데이터가 변경된 걸 확인할 수 있습니다. 앞서 언급했듯 UNION SQL Injection을 이용해야 하는 문제이므로 UNION SQL Injection을 시도하기 전 UNION SQL Injection을 어떻게 해야 되는지 정리해봅시다. 

# Summary
## UNION SQL INJECTION
: 2개 이상의 쿼리를 요청하여 결과를 얻는 UNION 연산자를 이용하여
: 요청에 추가 쿼리를 삽입하여 정보를 얻어내는 공격

## 조건
1. 컬럼의 갯수가 같아야 함
2. 데이터의 형식도 같아야 함 

UNION SQL INJECTION에 대해 알아봤으니 UNION SQL 구문을 검색 후 다음과 같은 순서로 시도해봅시다.

1. column의 갯수 유추
2. TABLE NAME 정보 획득
3. column 정보 획득
4. union 연산자를 이용해 정보 획득

첫 번째로 칼럼의 갯수를 유추하기 위해서는 많은 다음과 같은 작업이 필요한데 중간과정은 생략하고 이 문제에서는 컬럼의 개수가 4로 되어있었습니다.

컬럼의 갯수가 4개인 걸 알았으니 TABLE NAME을 획득하기 위해 구문을 날려봅시다. 어떤 DB를 쓰는지는 모르지만 mysql로 가정하고 날려봅시다.

# MYSQL TABLE_NAME
2 union select 1, table_name, 3, 4 from information_schema.TABLES

꽤나 많은 정보가 나오지만 스크롤을 내리다 보면 위와 같이 TABLE NAME이 확연히 다른 게 하나 있습니다. TABLE NAME을 획득했으니 세 번째 과정을 진행해봅시다 ( Column 정보 획득)

# MYSQL COLUMN
2 union select 1, column_name, 3, 4 from information_schema.columns

똑같이 스크롤을 내리다 보면 TABLE NAME과 비슷해 보이는 COLUMN이 발견됩니다. 조회에 필요한 정보는 얻었으니 4번째 단계를 진행해 플래그를 얻으면 끝납니다.

2 union select 1, found_m3, 3, 4 from w0w_y0u_f0und_m3

728x90
반응형

'CTF > CTFs' 카테고리의 다른 글

[gdb] : Break Point  (0) 2021.01.03
[N00bCTF][MISC]  (0) 2021.01.03
[weCTF2020] : Build Up  (0) 2020.12.26
[Affinity CTF 2020] : Catch Me if You Can  (0) 2020.11.22
[NACTF2020][Web] : Calculator & Cookie Recipe  (0) 2020.11.09