ubuntu 네트워크가 또 갑자기 안 돼서 몇 시간 동안 만져봤는데 해결이 안 돼서
그냥 kali가 아니라 ubuntu 내에서 진행
column 수가 2개
union문을 사용할 때는 column 개수가 같아야 한다는 것을 이용
3’ union select 1,2,3#을 했을 때 column 수가 3개가 아니라는 것을 알 수 있다. 오류
3’ order by 2 # column 수가 2개이기 때문에 1, 2까지는 나오지만 3 이상을 쓰면 오류
version은 5.7.37
version을 알아내는 이유는 information_schema를 위해 (5.0 이상 존재)
database 이름은 dvwa인 것을 알 수 있다.
database()가 database의 이름을 알려주는 함수이고 version()가 버전을 알려주는 함수이다.
user()는 유저 이름을 출력해주는 함수이다.
information_schema.tables의 table_schema와 table_name 출력
위와 동일한데 table_schema가 dvwa인 것만 출력해서 총 3개가 나오게 되었다.
dvwa에 있는 table_name은 guestbook과 users 2개라는 것을 알 수 있다.
table_name이 users인 TABLE_NAME과 COLUMN_NAME을 출력
COLUMN_NAME 중 password라는 것이 있다는 것을 확인
dvwa.users에 있는 first_name과 password를 출력 (Hash 값)
kali의 john 이용해서 복호화하려고 했는데 안 돼서 사이트에서 값을 변환
admin : password
Gordon : abc123
Hack : charley
Pablo : letmein
Bob : password
sql map은 kali랑 지금 연동이 안 되는 상황이라 못하고 그냥 하나하나 해봤다.
Blind injection
참
거짓
column 수는 2개
' or length(database()) = 4 #
아까 했던 대로 DB 이름 먼저 길이를 대입해보았다.
4글자인 것을 알 수 있다.
' or mid(database(), 1,1) = 'd' #
DB 이름의 첫 글자가 d인걸 확인할 수 있다.
이걸 다 돌려서 4글자를 보면 DB 이름은 dvwa인 것을 알 수 있다.
그럼 이제 DB에 있는 테이블명을 알아봐야 하는데 정말 하기 귀찮지만 일단 해보겠다.
' or length(select table_name from information_schema.tables where table_schema='dvwa')
여기까지만 하면 아까와 같이 dvwa에 속한 table_name 전체를 구하게 되는 거라 1개로 제한하기 위해 찾아봤는데
limit 함수를 사용하면 된다고 한다.
' or length((select table_name from information_schema.tables where table_schema='dvwa' limit 1,1)) = 5 #
이걸로 테이블명 길이는 5이다.
limit a, b 이렇게 사용하게 되면 a번 인덱스부터 b개까지로 제한하는 것이고 인덱스는 0부터 시작하니 지금 쓴 쿼리는 사실 인덱스가 1인 2번째 table명 길이를 출력한다고 보면 된다.
왜 1번째 인덱스를 출력했냐 하면 하다보니까 그냥 sql injection의 DB와 동일한 거 같아서 하나하나 하는 것의 귀찮음을 줄이기 위해서이다.
그다음 테이블 명의 길이를 알았으니 문자열도 하나하나 대입해봐야 한다.
그냥 방금 한 것에 length를 mid로 바꿔서 사용하면 될 듯하다.
' or mid((select table_name from information_schema.tables where table_schema='dvwa' limit 1,1), 1, 1) = 'u' #
이렇게 해서 첫 글자가 1인 것을 알 수 있고 똑같이 5번 돌려서 확인하면 이름은 users라는 것을 알 수 있다.
그냥 이제 이렇게 동일하게 하면 될 거 같은데 너무 힘들어서 그냥 여기까지만 할 것이다.
sql map을 이용하자...ㅎㅎ
'Security > SQL Injection' 카테고리의 다른 글
SQL Injection (0) | 2021.12.13 |
---|