본문 바로가기
작업/Webhacking.kr

webhacking.kr old-19 이해하기

728x90

 

 

 

old-19 페이지의 시작 화면입니다. 처음부터 값이 적혀 있어서 당당히 제출을 눌렀습니다.

 

 

admin이 아니라는 결과가 나옵니다. 무언가 잘못된 것 같습니다.

 

 

 

다른 값을 집어넣으면 hello와 함께 값이 출력됩니다. 이 상태에서 logout은 되지 않았습니다.

 

 

제출이 성공하면 쿠키값이 생깁니다.

 

 

logout이 되지 않는 것은 로그인 과정에서 형성된 쿠키값이 유지되고 있었기 때문입니다.
값을 삭제하면 다시 처음 화면으로 돌아옵니다.


다른 값들을 집어넣어도 그대로 뜨는 것으로 보아 admin 자체에 주문을 걸어놓은 것 같습니다.
admin이라는 값을 그대로 입력하면 필터링에 걸려서 오류를 출력시키는 것 같았습니다.

 

 

old-19 소스 코드

 

페이지 소스 코드를 보아도 입력 값의 최대(maxlength)는 5로 정해졌기 때문에
입력 상자를 건드리는 것으로는 해결이 불가능했습니다.


이번 문제의 해결은 입력 상자에 값을 입력했을 시에 URL에서 일어나는 변화에 있었습니다.
admin을 제출하면 admin이 아니라는 메시지가 출력되고 잠시 후 첫 화면으로 돌아옵니다.



그 사이에 URL을 보면 아래와 같습니다.

 

 

 

 

?id=admin은 id라는 인자에 admin이라는 값이 들어간다는 의미입니다.
?는 GET 방식으로 인자를 전달하는 방법입니다.


이 GET 방식 인자 전달에서 허점을 알아낼 수 있었습니다.


URL에서 GET방식의 인자 전달은 그 값에 제한을 받지 않는다는 것입니다.

 

 

입력 상자에서 글자 수가 5개로 제한되었지만 
URL에 값을 입력하게 되면 그 제한이 적용되지 않는다는 것입니다.

 

 

그래서 admin값을 우회하기 위해 old-18에서 사용했던 값 %0a를 사용했습니다.
PHP코드에서 필터링을 우회하는 값은 아래와 같습니다.

출처 : https://34t3rnull.tistory.com/28

 

 

URL 경로에서 ?id=admin 값을 ?id=ad%0amin으로 변경한 후 엔터를 눌렀습니다.

 

 

admin값 우회

 

 

 

 

 

신기합니다... 해결되었습니다...★

 

 

-끝-

 

 

 

 

728x90

'작업 > Webhacking.kr' 카테고리의 다른 글

webhacking.kr old-38 이해하기  (0) 2020.09.03
webhacking.kr old-25 이해하기  (0) 2020.09.03
webhacking.kr old-6 이해하기  (0) 2020.09.02
webhacking.kr old-24 이해하기  (0) 2020.09.01
webhacking.kr old-18 이해하기  (0) 2020.08.30