일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- php 로그인 페이지 만들기
- php file upload
- ssrf
- Cryptography
- active recon
- access control
- over the wire
- php
- php To Do List
- Cookie
- sql injection
- active reconnaissance
- Leviathan
- Server Side Request Forgery
- THM
- BANDiT
- php 파일 업로드하기
- overthewire
- War Game
- file upload
- php login page
- tryhackme
- privilege escalation
- Authentication
- 파일 업로드 취약점
- Reconnaissance
- FTZ
- Recon
- OS Command Injection
- SQLi
- Today
- Total
R's Hacking Daily Log
SQLi (3) - Lab 본문
SQLi (3)에서 살펴본 내용과 관련된 port swigger의 lab을 풀어보자!
첫 번째 lab에서는 column의 개수를 알아내라고 한다.
url 창에 ' union select null--을 입력했더니 server error가 발생했다. null을 두 번 넣고 세 번 넣고 했더니..!
column 개수가 3개인 걸 확인할 수 있었다.
두 번째 lab에선 제공한 특정 문자열을 가지고 어떤 column이 string data를 갖는지 확인하라고 한다.
column의 개수가 3개인 건 첫 번째 lab에서 알아냈으니 총 3번만 시도해보면 알 수 있다.
두 번째 column 자리에 문자열을 넣고 확인해보니 공격에 성공했다.
이로써 3개의 column 중에서 두 번째 column은 string data를 갖는다는 걸 알 수 있다.
세 번째 lab에서는 3개의 column, string data를 갖는 두 번째 column이라는 정보를 가지고 시도해야 한다.
여기서 username & password라는 column을 갖는 users table이 있다고 할 때, 모든 user의 정보를 조회하고 administrator 계정으로 로그인하라고 한다.
이렇게 저렇게 해보다가 안 풀려서 문제를 다시 읽어봤더니 "all"이라는 단어가 눈에 들어와 * 문자를 사용해 봤더니
중간중간에 username & password 내용이 출력되는 걸 볼 수 있었다.
원하는 건 admin 계정이니까 password를 복사해서 My account 클릭.
로그인 form에 위에서 조회한 내용을 입력하고 Enter를 누르면..!!
administrator 계정에 로그인에 성공한 걸 볼 수 있다.
이제 마지막 lab을 살펴보자.
네 번째 lab은 username & password column을 갖는 users table이 있고 original table에 대한 정보는 모르는 상태이다.
이때 모든 users 내용을 조회하고 admin 계정으로 로그인하라고 한다.
일단 lab으로 들어가 column의 개수부터 알아보자.
' union select null--부터 시도해 보니 어렵지 않게 column이 두 개인 걸 확인할 수 있었다.
두 개의 column에 대해 string data를 갖는지 확인해 봤더니 두 번째 column이 string data를 갖는다는 걸 쉽게 알아낼 수 있었다.
두 번째 column만 string data를 갖다 보니 username과 password column을 동시에 조회하는 것이 불가능해
username과
password column 내용을 따로 출력했다.
이 lab에서는 3명의 user 정보만이 포함되어 있어 3개의 password 중 어떤 게 admin의 password인지 다 해보면 되겠지만
무수히 많은 user 정보가 포함된 테이블을 조회했다면 굉장히 번거로운 작업이 되었을 것이다.
이렇게 여러 column의 data를 single column으로 조회할 수 있는 방법에 대해 SQLi (3)에서 이미 살펴보았다.
바로, concatenation!!
이 lab에서는 || 기호를 사용하니 에러가 발생해서 concat()을 사용했다.
이렇게 하면 username과 password 내용을 이어 붙여서 하나의 column에 출력할 수 있다.
username = administrator에 위에서 구한 password를 입력해서 로그인을 하면
이번 lab도 성공!
'Port Swigger > SQL Injection' 카테고리의 다른 글
SQLi (5) (0) | 2023.04.30 |
---|---|
SQLi (4) (0) | 2023.04.28 |
SQLi (3) (0) | 2023.04.27 |
SQLi (2) & Lab (0) | 2023.04.27 |
SQLi (1) - Lab (0) | 2023.04.26 |