[Normaltic's CTF] SQL Injection Point 3

2024. 6. 10. 18:02정보보안 및 해킹/CTF

플래그를 찾으세요!

웰컴~

가입하고~ 로그인!

이번에도 게시판입니다.

두 개 써줍니다.

sort.정렬입니다.

order by구문을 사용하겠죠?

일단 편리하게 Repeater로 보내줍니다.

 

숫자 넣어보니까 10까지는 정상 작동하는데

11부터는 에러가 납니다. 컬럼 갯수가 10개인 것 같습니다.

위의 절차는 해당 구문이 order by가 맞는지 확인한 절차입니다.

order by에는 SQL Injection을 방어할 수 있는 Prepare Statement를 사용하지 못하기 때문에 취약합니다.

 

이번 공격에는 case when 구문을 사용합니다.

case when (조건) then (참일때) else (거짓일 때) end

이런 구문을 갖추고 있습니다.

따라서, 어느 한 곳에 에러를 유발하는 데이터를 삽입하여 참과 거짓을 구분해서 blind 공격을 할 수 있습니다.

case when (1=1) then 1 else (에러를 유발하는 데이터) end

이렇게 사용할 것 입니다.

일단 참의 조건에서 결과가 어떻게 조출되는지 확인합니다.

거짓 조건에서 다르게 나오는지 확인합니다.

select 구분이 필터링 되고 있는지 여부와 에러를 잘 유발하고 있는지를 확인합니다.

이제 공격 시작합니다 Database()부터 시작합니다.

첫 번째 글자는 115

두 번째 글자는 113

세 번째 글자는 108

네 번째 글자는 105

다섯 번째 글자는 95

여섯 번째 글자는 56입니다.

sqli_8

테이블 이름입니다.

첫 번째 글자는 102

두 번째 글자는 108

세 번째 글자는 97

네 번째 글자는 103

다섯 번째 글자는 95

여섯 번째 글자는 84

일곱 번째 글자는 97

여덟 번째 글자는 98

아홉 번째 글자는 108

열 번째 글자는 101 입니다.

flag_Table

컬럼 이름입니다.

첫 번째 이름은 102

두 번째 이름은 108

세 번째 이름은 97

네 번째 이름은 103

다섯 번째 이름은 68

여섯 번째 이름은 97

일곱 번째 이름은 116

여덟 번째 이름은 97입니다.

flagData

플래그가 나왔습니다.

휴 3번째 되니까 힘드네요