[Normaltic's CTF] SQL Injection 1

2024. 5. 29. 13:30정보보안 및 해킹/CTF

비밀 데이터가 로또 번호면 좋겠습니다.

시작합니다..

어떤 게임의 랭킹 시스템인 것 처럼 보입니다.

일단 a라고 검색을 해보니,

a라는 글자가 포함된 것들이 전부 도출되고 있습니다

여기서 Like 구문을 사용하고 있다는 것을 알 수 있습니다.

그리고 a로 시작하거나 a로 끝나는 것이 아니라 중간에 낀 것이니,

%a나 a%가 아니라 확실하게 %a% 라는 것을 알 수 있게 되었습니다.

그러면 SQL Injection이 통하는지 확인하는 구문도 달라져야겠죠?

구문은 다음과 같습니다.

%' and '1%' = '1

현재 상상하고 있는 구문이

SELECT * FROM ? WEHER ?='%[input]%'

이기 때문에, 그 안에 넣어준다면

SELECT * FROM ? WEHER ?='%%' and '1%' = '1%'

이런 구문이 완성됩니다.

위의 구문으로 검색을 했음에도 검색이 잘 되는 걸 보니, SQL Injection이 되는 것을 확인할 수 있습니다.

그럼 바로 union 공격을 위해 컬럼 갯수를 알아보러 갑니다.

4줄이 도출되고 있기 때문에 일단 4줄부터 시작합니다.

5줄은 결과값이 나오지 않는 걸 보니, 이 서버에서는 데이터를 전부 보여주고 있었음을 확인할 수 있습니다.

 

그럼 어디가 어느 자리인지 확인하기 위해 1 2 3 4로 각 컬럼의 위치를 확인해줍니다.

차례대로 들어가있네요.

일단 데이터베이스 이름부터 뽑아봅니다.

어차피 4개의 컬럼 모두 드러나 있기 때문에, 어디에서 도출을 시켜도 상관 없습니다.

데이터베이스 이름은 sqli_1입니다.

바로 테이블 이름을 알아보러 갑니다.

테이블이 3개네요

flag_table, plusFlag_Table,user_info

우선 flag_table부터 확인해봅시다.

flag_table에 어떤 컬럼이 있는지 확인해봅니다.

flag라는 컬럼이 있습니다.

flag_table의 flag컬럼에는 어떤 값이 있을까요?

짜잔 플래그가 있습니다.

하지만 아까 플래그 테이블이 하나 더 있었죠?

plusFlag_Table이라고..

근데 이거 직접 여쭤보니까 짜가라고..

일단 데이터를 뽑아봅니다.

플래그가 나왔습니다.

근데... 여태까지 나왔던 플래그와는 형태가 조금 다릅니다.

'정보보안 및 해킹 > CTF' 카테고리의 다른 글

[Normaltic's CTF] SQL Injection Practice 1  (0) 2024.05.29
[Normaltic's CTF] SQL Injection 2  (0) 2024.05.29
[Normaltic's CTF] Secret Login  (0) 2024.05.29
[Normaltic's CTF] Login Bypass5  (0) 2024.05.29
[Normaltic's CTF] Login Bypass4  (0) 2024.05.29