rank 링크 클릭
score 값을 각각 다르게 넘겨주니 각각 다른 id 값이 나왔다.
참과 거짓에 따라 나오는 결과가 다르니 SQL Injection 공격을 시도할 수 있겠다.
Procedure analyse() 를 사용하여 쿼리 명령 시 DB명.테이블명.컬럼명 획득이 가능하다.
하지만, procedure analyse()라는 함수는 limit 절 뒤에 사용이 가능하다.
즉, limit 구문을 앞에 추가하여 필드를 차례로 뽑아내는 것이 가능하다는 이야기이다.
~ limit 0,1 procedure analyse() // 첫째 필드
~ limit 1,1 procedure analyse() // 둘째 필드
~ limit 2,1 procedure analyse() // 셋째 필드
이를 통해 알게 된 사실?
컬럼명 : id / score / p4ssword_1123581321
p4ssword_1123581321 컬럼의 length를 알기 위해 score=1 일 때
id 값이 Piterpan 이었다는 점을 이용하여
참 구문일 때의 length 값이 뜨도록 하였다.
길이는 31임이 확실해졌다!
이제 p4ssword_1123581321 컬럼의 문자열을 알기위해 score=1 일 때
id 값이 Piterpan 이었다는 점을 이용하여
참 구문일 때의 문자열이 순차적으로 뜨게 하였다.
하지만... 기다려도 안 돼서 확인해보니까
이 후 알게된 것
1. ascii 함수는 막아놨다 → ord 또는 hex 이용
2. substr 함수도 막아놨다 → right, left, mid 이용
해결
'WEB > WEB Hacking' 카테고리의 다른 글
XSS 취약점 참고 (0) | 2022.11.29 |
---|---|
Webhacking.kr Challenge(old) 23번 풀이 (0) | 2021.11.15 |
wfuzz (0) | 2021.07.10 |
[Webhacking.kr] Challenge(old) 39번 풀이 (0) | 2021.06.07 |
[Webhacking.kr] Challenge(old) 38번 풀이 (0) | 2021.06.04 |