본문 바로가기
Wargame

[LOS] 3번 goblin

by m_.9m 2022. 1. 8.

https://los.rubiya.kr/


 

레벨 3번 goblin풀이

 

제시문제

 


※ url에 ?를 쓰면 query를 날릴 수 있다.

즉 url에 ? no=1 을 넣어보면, '' 안에 값이 입력된다.

위와 같이 변하는 것을 볼 수있다.
그럼 쿼리를 삽입-조작해 ? no=1 or id='admin'를 삽입해본다.

 

그럼 이렇게 경고문이 뜨는 걸 볼수있는데 이는 코드 내에 preg_match 이 있기때문이다.

 preg_match는 검색대상 문자열을 찾는 함수이다.

 

 

이는 싱글쿼터('), 더블쿼터(") 등을 우회하고 있다. '(%27)도 필터링이 되어있기때문에

16진수로 치환해 값을 전달해본다.

 

https://www.online-toolz.com/langs/ko/tool-ko-text-hex-convertor.html

 

16 진수 변환기 텍스트 - 온라인 도구

In mathematics and computer science, hexadecimal (also base 16, or hex) is a positional numeral system with a radix, or base, of 16. It uses sixteen distinct symbols, most often the symbols 0–9 to represent values zero to nine, and A, B, C, D, E, F (or a

www.online-toolz.com

 

16진수 변환기를 사용해 admin을 변환하면 61646d696e가 되고 여기 16진수임을 알리는 0x를 추가해 0x61646d696e를 완성해준다. 이를 쿼리에 입력해본다. 16진수 변환값(핵사값)은 그자체로 '' 쿼터없이도 문자열로 인식되기때문에 단어변환부분만 추가해줘도 인식이된다.

 

 

그럼 admin이 아닌 guest로 로그인되는 것을 볼수있는데 이는 id=guest가 or문에서 앞에 있기때문에 일어나는 현상인것같다. 그래서 앞에 id='guest'를 거짓으로 만들어줄 쿼리문을 하나 더 넣는다.

마찬가지로 싱글쿼터(')는 필터링되기때문에 16진수로 아무 문자를 id 값으로 넣어준다.

그러면 이 문제가 정상적으로 풀린것을 확인할 수있다.

 

 

참고 블로그

https://pd6156.tistory.com/106

'Wargame' 카테고리의 다른 글

[LOS] 6번 darkelf 문제 풀이  (0) 2022.01.16
[LOS] 5번 wolfman 문제 풀이  (0) 2022.01.16
[LOS] 4번 orc , 파이썬 자동화 코드 만들어보기  (0) 2022.01.16
[LOS] 2번 cobolt  (0) 2022.01.08
[LOS] 1번 gremlin 풀이  (0) 2021.10.26