인디안 보호구역

Webhacking.kr 23 본문

Study/WebHacking 공부하는 인디안

Webhacking.kr 23

Indie-An 2019. 6. 20. 13:48

인젝션을 통해 경고창을 띄우라는 문제이다.

인젝션 문제가 역시 그렇듯, 코드는 get 방식으로 데이터를 넘기는 것 외엔 크게 눈에 띄는 것이 없다.

 

혹시 모르니 <script>alert(1);</script>를 바로 대입해봤다.

no hack이라고 뜨는 것을 보아 필터링 되는 문장이 있다는 것을 알 수 있었고

우선 <, >, / 등의 특수문자를 삽입해봤는데 전부 통과했고,

결국 script, alert 등의 문자열이 필터링 되고 있음을 알 수 있었다.

 

인코딩 쪽으로 눈을 돌려보았다.

base64, URL 인코딩 둘 다 안되는 것을 확인했다.

 

아는것이 바닥나서 구글신께

'인젝션 키워드 우회'로 검색했더니, 알파벳에 %를 붙이거나 대소문자를 변경하면 된다고 나와있었다.

<s%c%r%i%p%T>a%l%e%r%t%281%29%3B</s%c%r%i%p%T>

위와 같이 입력해보았는데도 안된다.

 

(이유 : Mysql은 대소문자 구분이 없으므로 select나 SeLecT를 같은 문장으로 판별하는데 반해, PHP는 모든 문자열에 대해 case sensitive한 성격을 가져 대소문자를 구분한다.)

 

이거저거 다 안되는 상황.

아는 지식을 총 동원해보기 위해 얼마 전에 필터링 문제를 하나 푼 기억이 있어 참고차 들어가서 다시 확인해봤다.

Webhacking.kr 26

 

Webhacking.kr 26

문제 풀이 <첫인상> 이번에는~ 100점짜리 문제. 스크립트 링크 외에 아무런 단서가 없기에 클릭하였다! <코드 확인> GET method를 이용하여 변수 id에 admin 값을 집어넣어야 한다. 그러나 eregi() 함수가 &ldqu..

indie-an.tistory.com

해당 문제에서 눈에 띈 것은 Null Injection이다.

그래서 s%00cript로 입력하니 URL에는 s%2500cript으로 출력된다.

혹시 싶어서 url상의 %25를 지우니 필터링이 우회가 되는 모습을 확인할 수 있었다!

 

근데 이상한점은 alert도 필터링 되어야하고 script도 ript 라는 부분 글자만 들어가도 no hack이 떴는데

앞에 저거 하나 삽입했다고 해서 문제가 풀어져버린 것에 의문이 들었다.

 

이유를 모른채 문제를 풀어버렸기에

이번에도 구글신께 'Null injection 우회' 라고 검색했더니

Null byte injection

 

[php] NULL 바이트 인젝션

C 에서 NULL 바이트는 문자열의 끝을 나타내는데, 이것을 이용해 공격하는 기법입니다. \x00 \0 아래 URL 의 값을 받는다고 가정해 보겠습니다. habony.php?user_id=%00%27%3BSELECT+*+FROM+member_table 다음의..

blog.habonyphp.com

null 문자 때문에 문자열 alert를 a%00lert로 판단해서 문제를 푼 것이 아니라,

문자열의 끝으로 인식하기 때문에, 문장이 끝나버려 eregi 함수를 우회할 수 있었다는 것!

 

즉, 대충 코드를 상상해보면

if(eregi("script|alert",$_Get[code])) 였을 것이고

 

기존에는

if(eregi("script|alert","<script>alert(1);</script>")) 였을 문장이

if(eregi("script|alert","")) 와 같은 형태가 되어버린다는 것이다.

 

그렇기 때문에 

 

%00<script>alert(1);</script>

이렇게 적어야 정답일텐데

 

<s%00cript>alert(1);</script>

이것도 정답이 되었다 라는 의문도 풀리게 되었다.

 

뿡빵뿡

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

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