부제굴능
article thumbnail
Published 2021. 8. 5. 00:03
[Suninatas] 22번 Hacking/suninatas

웹에서 8번 다음이 22번이라니!

 

거두절미하고 바로 풀어보죠

 

 

Blind Sql Injection 문제입니다.

 

Blind Sql Injection 이란?

SQL 쿼리의 참,거짓반응을 이용하여 패스워드를 추출하는 Sqli 기법입니다.

 

쉽게 말하면 이런거죠

 

ID = admin

PW = P@ssW0rd

 

라는 계정을 Blind Sql injection을 통해서 PW를 추출해보도록 하겠습니다.

 

나 : 혹시 id = admin에 pw = admin 맞아?

Server : [id = admin, pw = admin] ㄴㄴ 패스워드틀림

 

나 : 그럼 id = admin' AND  len(pw)=8-- 에 pw = admin 은?

Server : [id = admin' AND len(pw)=8-- pw = admin(-- 로 인해 뒤에가 전부 주석처리됨)] ㅇㅇ맞음 id가 admin인 pw길이는 8맞음

 

나 : 마지막으로 id = admin' AND substr(pw,1,1)='P'-- 에 pw = admin 은?

Server : [id = admin' AND substr(pw,1,1)='P'-- pw = admin] ㅇㅇ admin 계정에 pw 첫글자 'P' 맞네

 

.

.

.

 

substr('String', pow, len)

문자열에서 pow 번째부터 len 길이만큼의 문자를 추출해내는 함수입니다.
위에서 보여드린 것처럼 사용한다면 pw에 1번째부터 1개의 문자를 추출해라.
이런 뜻입니다.

len(pw)

pw에 있는 문자열의 길이를 반환해주는 함수입니다.
위에서 사용된 함수의 반환 값은 8이겠네요

--, #, /**/

모두 주석입니다.

--, # 은 뒤에 있는 모든 쿼리를 주석 처리해버리는 아주 무서운 애들입니다. 그래서 대부분은 --와 #을 필터링하죠.

 

.. 최대한 쉽게 써봤는데 이해가 되시나요?

 

이런 식으로 서버에 request를 보내면 오는 response로 한 글자씩 패스워드를 찾아내는 방식입니다.

 

id = admin' AND substr(pw,1,1)='P'-- pw = 1

 

를 보내게 되면 서버는 --뒤에 있는 건 주석처리를 하고 앞에 id = admin AND substr(pw,1,1)='P' 만을 인식하게 됩니다.

 

AND는 둘 다 true 일시 true를 반환하기 때문에 만약 패스워드의 첫 번째 문자가 'P' 라면 true로 인식을 하고 admin으로 로그인이 되게 됩니다.

 

쉬운 예로 id = admin AND '1' = '1'-- 또한 AND 연산에 의해 true 이기 때문에 admin으로 로그인이 됩니다!

 

하지만 목적은 admin 계정으로 로그인이 아니죠?

 

admin의 password를 찾는 것입니다.

 

그래서 이렇게 한 글자씩 한땀한땀 정성을(?) 들여서 패스워드를 찾는 것입니다!

 

근데 패스워드가 뭔지 알고 저렇게 한 글자씩 비교해보나요 ㅡ.ㅡ

 

Se0ngYuW0n_jonjal_KingGod_Empire_General_Majesti_chungmugong_RaMyunJalKkeul_im

 

제 패스워드는 이건데 이거 하나하나 찾으려면 제 생각에 하루 종일 해도 일주일은 걸릴 거라고 봅니다.

 

 

그러니 Payload를 만들어 보내도록 합시다.

 

Payload의 ?뒤에 인자 값으로 보내는 부분이 BlindSql의 핵심인 페이로드입니다.

 

아스키코드값 33번부터 123번까지 전부 넣어서 admin으로 로그인이 된다면 해당 문자를 answer에 저장합니다.

 

그렇게 패스워드의 길이만큼 반복하면 끝!

 

 

찾았네요

 

 

admin의 패스워드가 그대로 authkey 값입니다.

 

N1c3Bilnl)

 

'Hacking > suninatas' 카테고리의 다른 글

[Suninatas] 8번  (0) 2021.08.04
[Suninatas] 6번  (0) 2021.08.04
[Suninatas] 3번  (0) 2021.08.04
[Suninatas] Level 4  (0) 2021.07.24
[suninatas] Level 2  (0) 2021.07.20
profile

부제굴능

@magarets

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!