본문 바로가기

해킹 공격

[NOOBHACK] blind SQL injection 공격 기법 (BLIND)

오늘은 SQL injection의 응용 공격인 blind SQL injection에 대해 알아 볼 것이다

 

앞서 이 공격 기법의 탄생 목적과 용도는

SQL injection를 하기 위해 DB의 Table의 이름을 알아내거나 Table의 정보를 추론해서 알아내기 위함이다

 

SQL injection으로 로그인 우회 뿐만 아니라 예 아니오의 이분적 사고로 DB의 정보를 알아 낼 수 있다

웹 사이트는 우리가 원하는 대로 다 해 주진 않는다 admin의 비밀번호를 알아내기 위해 서버에게

admin의 비밀번호가 뭐냐고 물어본다고 해서 그냥 알려주진 않는다

 

비유를 해보자 스무고개를 떠올리면 된다 상대가 묻는 질문에 예 아니오만 말한다면 금방 상대방이 머리속에서만 생각하는 것을 알아 맞출 수 있는 것 처럼 당신도 웹 사이트에게 질문을 하여끔 DB의 정보를 유출 할 수 있다

이제 잡소리 같은 이론 집어 치우고 바로 알아보자

 

오늘도 우리의 샌드백인 ctf 사이트에 공격을 할 것이다

참고로 사이트 코드는 여기서 보시길

https://noobhack.tistory.com/4

 

[NOOBHACK] CTF용 사이트(코드 공유)

요즘 내가 ctf를 하면서 계속 느낀건데 웹 해킹 ctf 사이트가 너무 실제 사이트 같지도 않아서 실감이 안나고 실무성을 못 느껴서 내가 집적 간단하게 ctf전용 사이트를 제작하게 되었다. 사용 언

noobhack.tistory.com

 

오늘도 어김없이 여기서 admin의 비번을 알아낼 것 이다

로그인의 구문은

 

SELECT * FROM members WHERE uid="아이디" and upw="비번"

 

인데 구문을 바꿔보자 

 

SELECT * FROM members WHERE uid="admin" and upw="" or uid="admin" and substr(upw, 1, 1)="A"

 

입력 값(" or uid="admin" and substr(upw, 1, 1)="A)이 꽤 낯설다

SQL도 사실 프로그래밍 언어이기에 함수도 사용 할 수 있고 제어문도 사용 가능하다

그 중 substr은 1번째 DB에서 upw의 값의 1번째 글자를 가리키게 된다 그럼 그 글자가 A일 경우에 SQL 구문은 참이 돼여

admin의 세션으로 연결하게 된다

이런 식으로 옳은 구문을 넣게 된다면 

 

 

짠 하고 된다

 

 

 

그러면 더 알아보기 위해 자동으로 admin의 비밀번호를 출력하는 코드를 만들었다 

이 공격기법을 잘 이해 하고 싶다면 SQL를 먼저 배워 보는걸 추천한다 분명 써먹을 때가 많을 것 이다