티스토리 뷰
포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.
2번 문제이다.
별게 없어 보인다.
소스코드를 보자.
소스코드도 별로 없다.
하지만 주석 부분에 admin.php에 접근 시 혼내준다는 문구가 보인다.
접속해보자.
무언가 입력하는 창이 나온다.
이곳에 정답을 입력하면 문제가 풀리는 것 같다.
이곳의 소스코드 또한 별 볼일 없어 보인다.
흠..
여러 번 둘러보다가 이전 소스코드에서는 시간을 표현해준다는 걸 발견했다.
그리고 쿠키값을 보니 time을 인자로 받는 값이 있는 것도 발견했다.
time의 값을 1로 주고 소스코드를 봤더니 변화가 있었다.
바로 소스코드에서의 시간이 사진과 같이 변했다.
그러다 문득 든 생각이 참과 거짓일 때 0과 1을 출력할까?라는 생각도 들었다.
테스트 결과 정답이다.
이제 문제 해결의 실마리가 풀렸다.
해당 부분에서 injection을 진행해보자.
일단 database() 개수를 출력해보자.
time의 value값: (select count(database()))
1개이다.
이제 이름을 알기 위해 길이를 추출하고 이름까지 추출해보자.
길이 : (select length(database()))
database()의 이름은 chall2로 나왔다.(=table_schema)
이번 코드에서는 이진 탐색 코드를 조금 더 발전시켰다.
이진 탐색에 필요한 검색 횟수를 넘어가는 순간 데이터가 없는 것으로 판단해 인젝터를 중단시키는 코드를 추가했다.
이제 테이블의 갯수와 이름을 파악하고 우리가 필요한 테이블로의 접근이 필요하다.
테이블 개수 : (select count(table_name) from information_schema.tables where table_schema='chall2')
2개의 테이블이 있다.
테이블 이름의 길이를 알아보자.
테이블명을 추출해보자.
첫 번째 테이블 길이: (select length(table_name) from information_schema.tables where table_schema='chall2' limit 0,1)
13자리이다.
두 번째 테이블 길이:(select length(table_name) from information_schema.tables where table_schema='chall2' limit 1,1)
3자리이다.
아마.. 우리에게 필요한 건 첫 번째 테이블이 아닐까 하고 추측해본다..ㅋㅋ
테이블 이름에서 추측이 맞았다고 알려준다.
admin_area_pw이 추출되었다.
테이블 이름을 알았으니 바로 칼럼수를 알아보자
time value: (select column_name from information_schema.columns where table_name='admin_area_pw')
1개 있다.
바로 이름을 추출하자.
칼럼명까지 추출 완료했다.
이제 pw값을 알아보자.
처음에 길이를 제대로 설정 안 하고 돌렸더니 중간에 잘렸다.
그래서 100으로 주고 다시 했다.
kudos_to_beistlab가 추출되었다.
아까 들어가 본 admin.php에 값을 입력하러 가자.
문제 해결!!
시행착오
1. 테이블 스키마를 먼저 찾아야 테이블명을 찾을 수 있다.(mysql)
database()=table_schema>table_>column_>value
2. sql injection 공격 위치는 링크 창에서만 할 수 있는 건 아니다.
3. length()과 len()의 차이로 mysql, mssql 구분이 가능하다. (순서대로)
느낀 점
1. 2번 문제부터 접근 난이도가 느껴져 두려웠다..
'SQL injection > webhacking' 카테고리의 다른 글
Webhacking 6번 (0) | 2022.03.12 |
---|---|
Webhacking 5번 (0) | 2022.03.09 |
webhacking 4번 (0) | 2022.03.08 |
webhacking 3번 (0) | 2022.03.07 |
Webhacking 1번 (0) | 2022.03.06 |
- Total
- Today
- Yesterday
- webhacking.kr
- 상품을 구매한 회원 비율 구하기 파이썬
- 자바
- 프로그래머스
- 스프링
- los 15
- Los
- static
- 김영한 실전 자바 기초
- 백준
- samron3
- 김영한 실전 자바 중급
- 상속
- 김영한
- los 15단계
- spring
- lord of sql
- 코딩테스트 준비
- extends
- 백준 피보나치 수열
- java
- ys.k
- 김영한 실전 자바 기본
- 기술스택
- 코딩테스트
- 백준 피보나치
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- zixem
- 프로그래머스 상품을 구매한 회원 비율 구하기
- samron
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |