티스토리 뷰

SQL injection/webhacking

webhacking 59번

ys.k 2022. 8. 23. 19:07

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

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() 함수에 대해서 새로 배우게 되었다.

728x90
반응형

'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
링크
«   2026/07   »
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
글 보관함
250x250