티스토리 뷰
포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.
59번 문제이다.

회원가입과 로그인을 할 수 있어 보인다.
소스코드를 보자.

post방식으로 값을 넘긴다.
join을 먼저 보자.
id와 phone 둘 다 값이 있어야 작동하며, 각 addslashes가 적용되어있다.
lv의 값이 admin이면 문제가 풀린다.
login을 보자
역시 id와 phone 둘 다 값이 존재해야 작동하며, phone의 길이가 20이 넘으면 접근이 거부된다.
id에서 admin을 대소문자 구분하지 않고 필터링하며, phone은 admin, 0x, #, hex, char, asciil, ord, select 등을 대소문자 구분 없이 필터링한다.
insert 구문을 보니 3번째 칼럼의 위치에선 guest가 무조건 들어가게 되어있다.
아마 이 부분에 admin이 들어가게 쿼리를 만들어야 하는 것 같다.
사실 여기서 내가 아는 어떤 방법이든 동원해봤지만 풀 수 없었다.
1. 0x필터링 이므로 0b
2. admin의 문자열의 분리
등등
그렇게 검색을 하던 중 하나의 함수를 발견할 수 있었다.
reverse() // 입력된 값을 뒤집어서 나열함 ex) id= admin , reverse(id) -> nimda
이 함수를 이용하여 문제를 풀 수 있다.
한번 풀어보자.

우리는 id 칼럼에 값을 줄 수 있다.
따라서 id에 admin의 뒤집은 값인 nimda를 넣어주고 reverse로 이를 뒤집어 주면 admin을 정상적으로 주입할 수 있게 된다.
한번 입력 후 검증해보자.

문제 해결
시행착오
1. get방식을 통한 url형식의 쿼리 주입이 아니기 때문에 --를 통한 주석 처리 시 뒤에 +가 아닌 공백을 넣어줘야 정상적으로 작동한다.
2. reverse() 함수에 대해서 새로 배우게 되었다.
'SQL injection > webhacking' 카테고리의 다른 글
| webhacking 58번 (0) | 2022.08.23 |
|---|---|
| webhacking 57번 (0) | 2022.08.21 |
| webhacking 56번 (0) | 2022.08.21 |
| webhacking 55번 (0) | 2022.08.21 |
| webhacking 54번 (0) | 2022.08.21 |
- Total
- Today
- Yesterday
- spring
- zixem
- 차트
- samron
- 프로그래머스
- 빗각
- lord of sql
- samron3
- 나스닥
- 주식
- 코딩테스트
- 김영한
- webhacking.kr
- rgti
- absi
- 트럼프
- 백준
- 압사이
- 김영한 실전 자바 중급
- 코딩테스트 준비
- ys.k
- 김영한 실전 자바 기초
- 미국주식
- java
- 김영한 실전 자바 기본
- 종목추천
- 리게티컴퓨팅
- 차트공부
- 자바
- Los
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |