티스토리 뷰
포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.
57번 문제이다.
간략히 설명하겠다.
파라미터로 msg, se를 받으며 secret이 yes 일 때 1, no일 때 0으로 입력된다.
소스코드를 보자.
msg와 se 둘 다 입력값이 있어야 작동한다.
또한 둘 다 addslashes함수가 적영 되어있고
se에는 select, and, or, not, &, |, benchmark를 대소문자 구분하지 않고 필터링한다.
그리고 정상적인 값이 입력될 때마다 데이터가 삽입되며, id, msg, flag, se 순으로 삽입된다.
그리고 Done 메시지를 출력한다.
어떤 경우에서도 Done 메시지를 출력하거나 말거나 둘 중 하나이다.
따라서 error, union based injection 등은 사용할 수가 없다.
남은 건 blind or time이다.
근데 코드를 잘 보니 flag가 들어있는 칼럼명을 pw로 알려줬다.
문제는 생각보다 쉬워졌다.
그리고 benchmark를 필터링하는 걸 보니 time based 문제인 것 같다.
하지만 이런 식으로 문제를 해결하다 보면 실전에서 큰 도움이 되지 않을 것이다..
일단 풀어보자.
정상적으로 sleep함수가 작동한다.
이제 인젝터를 만들어보자.
추출되었다.
검증해보자.
문제 해결
시행착오
1. time based 공격을 할 땐, sleep() 함수 외에, 웹 서버 부하에 따른 시간 지연, 불안정한 인터넷 연결 등으로 시간 지연이 생길 수 있어, 대기 시간을 길게 할수록 정확도가 올라가나, 시간이 오래 걸린다.
따라서 알맞은 대기 값을 정하는 것도 중요하다.
'SQL injection > webhacking' 카테고리의 다른 글
webhacking 59번 (0) | 2022.08.23 |
---|---|
webhacking 58번 (0) | 2022.08.23 |
webhacking 56번 (0) | 2022.08.21 |
webhacking 55번 (0) | 2022.08.21 |
webhacking 54번 (0) | 2022.08.21 |
- Total
- Today
- Yesterday
- Los
- 스프링
- 프로그래머스 상품을 구매한 회원 비율 구하기
- spring
- extends
- 코딩테스트
- los 15
- 김영한 실전 자바 기초
- 백준
- lord of sql
- 김영한 실전 자바 기본
- 코딩테스트 준비
- 백준 피보나치 수열
- 김영한
- 상품을 구매한 회원 비율 구하기 파이썬
- java
- zixem
- 김영한 실전 자바 중급
- 프로그래머스
- 백준 피보나치
- 기술스택
- 상속
- 자바
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- ys.k
- samron
- los 15단계
- webhacking.kr
- samron3
- static
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |