소스 코드입니다. 엄청 간결하네요 ㅎㅎㅎㅎ 아이 좋아ㅏㄹ
일단 중요한 곳만 따로 잘라 왔어요.
하나하나씩 해석을 하보면, 먼저 preg_match로 admin이라는 문자열을 필터링 하네요! 그런데 /i가 없어요! 즉 대소문자 구분을 한다는 말이죠
네 예상대로 no가 나옵니다.
역시 대소문자를 섞어서 ?id=AdMin를 입력했을 땐 아무일도 일어나지 않습니다.
urldecode(): urlencode()로 URL인코딩된 문자열을 디코딩한다.
아휴 네네 좋습니다. 쉽네요 그럼 urlencode()로 인코딩된 문자열을 id변수에 전달하면 되겠군요
그래서 인터넷에 바로 url인코더를 검색하고 admin을 인코딩 했는데
admin이 그대로 나와서 당황..;;;;
네 그래서 urlencode()를 검색해 보니까
urlencode()- URL에 공백이나 한글로 된 경우에 인코딩이 필요한 경우 인코딩을 해주는 역할
이라고 합니다. 그러니까 알파벳은 인코딩에 포함되지 않은거죠
아니 그래도 admin이 영어인데 인코딩..? 아닌데 이게 뭐지 하고 검색을 좀 더 해봤습니다.
URL인코딩은 퍼센트 인코딩이라고도 한다 합니다. 아래 위키 백과에 따르면, 퍼센트 인코딩은 특정 문자(공백이나 한글)은 인코딩이 반드시 필용하지만 알파벳은 그렇지 않다고 합니다. 하지만! 할 수는 있다는 말! https://ko.wikipedia.org/wiki/%ED%8D%BC%EC%84%BC%ED%8A%B8_%EC%9D%B8%EC%BD%94%EB%94%A9
퍼센트 인코딩 - 위키백과, 우리 모두의 백과사전
퍼센트 인코딩(percent-encoding)은 URL에 문자를 표현하는 문자 인코딩 방법이다. 이 방법에 따르면 알파벳이나 숫자 등 몇몇 문자를 제외한 값은 옥텟 단위로 묶어서, 16진수 값으로 인코딩한다. '위
ko.wikipedia.org
퍼센트인코딩은 기존 문자열의 HEX값 앞에 '%'를 사용하면 된다고 합니다. (ASCII table의 출력가능 문자)
맨 앞글자 'a'는 '%61'로 인코딩 된다는 것이죠
그럼 기존 URL 뒤에 ?id=%61dmin 을 붙여서 시도를 해봤습니다
오호라 %61이 a로 디코딩 되어서 잃어졌나 봅니다. 그럼 %61을 한번 더 인코딩 해서 시도해보죠!!
%61 --> %25%36%31
즉, %25%36%31dmin를 입력해 보죠!!
성공!!
'보안 공부 > webhacking.kr' 카테고리의 다른 글
webhacking.kr 14번 풀이 (0) | 2021.12.06 |
---|---|
webhacking.kr 5번 풀이 (0) | 2021.12.05 |
webhacking.kr 21번 풀이 (0) | 2021.12.05 |
webhacking.kr 3번 풀이 (0) | 2021.12.04 |
webhacking.kr 2번 풀이(파이썬 이용) (0) | 2021.12.03 |