보안 공부/webhacking.kr

webhacking.kr 26번 풀이

sh1256 2021. 12. 5. 20:22
728x90

첫화면 소스를 보자

소스 코드입니다. 엄청 간결하네요 ㅎㅎㅎㅎ 아이 좋아ㅏㄹ

일단 중요한 곳만 따로 잘라 왔어요. 

하나하나씩 해석을 하보면, 먼저 preg_match로 admin이라는 문자열을 필터링 하네요! 그런데 /i가 없어요! 즉 대소문자 구분을 한다는 말이죠

네 예상대로 no가 나옵니다. 

 

역시 대소문자를 섞어서 ?id=AdMin를 입력했을 땐 아무일도 일어나지 않습니다. 

---urldecode함수 등장---

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