[Normaltic's CTF] SQL Injection Point 1

2024. 6. 10. 17:34정보보안 및 해킹/CTF

플래그를 찾아내자!

심플하네요

??? 심플하네요.....

일단 로그인을 해볼까요..? 주어진 계정도 없으니.. 할 수 있을까요?

다행히 회원가입 란이 있습니다. 회원가입을 해줍니다.

회원가입 후에 로그인을 하니, 마이페이지, 게시판, 로그아웃이 나왔습니다.

마이페이지부터 볼까요?

있는 정보는 닉네임과 변경할 비밀번호 뿐이군요

일단 마이페이지에 들어오면서 패킷이 어떻게 구성되어 있는지 살펴보겠습니다.

쿠키가 있습니다! 제 닉네임으로 된 쿠키네요. 저걸 변조할 수 있지 않을까요?

변조를 위해 Repeater로 보냅니다.

우선 원래 닉네임일때 정보가 잘 나오고 있는 것을 확인하고..

SQL Injection을 위해 ' and '1'='1 을 추가해봅니다.

정보가 변하지 않네요. 그럼 거짓 조건을 한 번 넣어봅시다.

거짓 조건을 넣으니 Nothing Here이라고 적혀있던 문구가 사라졌습니다!

원래의 거짓 조건, 즉 로그인이 틀렸을 때에 어떻게 나오는지를 확인해봐야 정확하지만.. 이 창은 로그인 이후 마이페이지 창이기 때문에 확인할 수가 없습니다.

일단 참과 거짓 조건일 때 결과가 다르다는 것을 확인했습니다.

참인 조건일 때에 Nothing Here로 적혀있던 부분이

거짓 조건을 넣었을 때 placeholder가 비어있습니다.

참과 거짓의 조건에서 결과가 다른 것을 알아내었으니, 일단 에러메세지는 나오지 않기 때문에 Error Based는 사용할 수 없고, SQL의 결과도 출력되지 않기 때문에 union도 사용할 수 없습니다.

남은 선택지는 blind 하나 뿐이군요. 후우... 갑시다.

우선 Database()부터 시작합니다. 다음에는 반드시 파이썬으로 자동화 툴을 제작해서 풀겁니다...

첫 번째 글자는 115

두 번째 글자는 113

세 번째 글자는 108

네 번째 글자는 105

다섯 번째 글자는 95

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

sqli_6

테이블 이름으로 넘어갑니다.

첫 번째 글자는 102

두 번째 글자는 108

세 번째 글자는 97

네 번째 글자는 103

다섯 번째 글자는 95

여섯 번째 글자는 116

일곱 번째 글자는 97

여덟 번째 글자는 98

아홉 번째 글자는 108

열 번째 글자는 101 입니다

flag_table

컬럼 이름입니다.

첫 번째 글자는 102

두 번째 글자는 108

세 번째 글자는 97

네 번째 글자는 103입니다.

flag

 

플래그입니다!