인디안 보호구역

Webhacking.kr 26 본문

Study/WebHacking 공부하는 인디안

Webhacking.kr 26

Indie-An 2019. 5. 27. 21:39
  1. 문제 풀이

<첫인상>

이번에는~ 100점짜리 문제. 스크립트 링크 외에 아무런 단서가 없기에 클릭하였다!

<코드 확인>

GET method를 이용하여 변수 id에 admin 값을 집어넣어야 한다. 그러나 eregi() 함수가 “admin” 문자열을 필터링하고있기 때문에 값은 admin이지만 형태는 다른 문자열을 넣어야할 것이라고 생각했다. 의미는 같은데 형태가 다른 것.. 인코딩을 해야겠다고 생각했다.

<문제 풀이>

  1. admin 입력

놉! 단호한 자식..

 

2) ASCII hex로 표현 URL Encoding

0x610x640x6d0x690x6e

\0x61\0x64\0x6d\0x69\0x6e

\x61\x64\x6d\x69\x6e

%61%64%6d%69%6e << 검색해보니 이게 정확한 URL 인코딩 표현이다.

 

3) NULL Injection

admin%00 a%00dmin

-> NULL은 브라우저에서 디코딩해주지 못했다.

 

4) Force Full + NUL Injection

%61%64%6d%00%69%6e

-> 그냥 해봤다.

 

이 방법이 아닌가..? 하다가 돌파점을 발견했다.

ASCII로 입력한 값 ”%61%64%6d%69%6e”이 새로고침되면서 “admin” 으로 바뀌는 것을 확인했기 때문.! 이 말인 즉슨, 스크립트 내의 urldecode() 함수가 실행되지 않았는데도 불구하고 먼저 디코딩 되었다는 뜻이기에, 이중 인코딩을 한다면 eregi() 필터링에 걸리지 않을 것이라고 생각했다. 결과는..

와~ 실수로 화면을 닫아서 ㅎㅎ 100점 추가~

 

2. 배운 점

  • 브라우저에서 서버로 데이터를 보낼 때 URL 인코딩을 한다.

3. 참고 링크




'Study > WebHacking 공부하는 인디안' 카테고리의 다른 글

Webhacking.kr 23  (0) 2019.06.20
Webhacking.kr 17  (0) 2019.06.19
Webhacking.kr 6  (0) 2019.05.27
Webhacking.kr 4  (0) 2019.05.27
Webhacking.kr 15  (0) 2019.05.25
Comments