본문 바로가기
Wargame

[LOS] 19번 xavis 문제 풀이

by m_.9m 2022. 1. 25.

https://los.rubiya.kr/


 

레벨 19번 xavis 풀이

 

제시문제

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

 

 

이번 문제는 특이하게 id가 admin으로 적용되어져있다.

일단 Addslash가 Hello admin 출력뒤에 우회되도록 붙여졌으니

Hello admin을 출력하기 위해 쿼리를 생성해본다.

 

정상적으로 출력문이 뜨자 뒤이어 1=1, 1=0 참과 거짓이 판별되는 문제임을 알게되었고

늘 그랬듯이 자동화문으로 Blind injection을 시도해보았다.

 

 

 

이제 자동화 코드를 돌려본다. 그러면 문자열 길이가 12개라고 뜬다.

그리고 나서 1부터 127로 이진탐색을 할 경우 127까지 계속 Hello admin이 뜨는것을 볼 수 있는데

숫자를 아예 높여도 Admin이 뜬다.

 

50000에서 60000사이에 값이 있는 것 같아서 자동화코드를 돌리는 김에 1부터 60000까지 이진탐색을 돌려본다.

 

 

 

첫번째 pw값으로 한글이 "우"가 뜬다.

한글 아스키 코드 값은 50000대에 머물러있다고 한다.

 

 

 

두번째 세번째 값의 pw도 "왕", "굳"으로 잘 나왔지만

4번째 자리 수부터는 1까지 내려갔음에도 Hello admin이 안나오는 걸 알수있다.

 

 

직접해본다. 그리고 말도 안되지만 음순가? 하고 0.00001을 넣어봤는데 .은 필터링되어져 나오지 않는 걸 확인한다.

그리고 진짜 음수...?

 

 

그건 아니였다.. 비밀번호는 그냥 우왕굳이 끝이였다...

 

 

length함수로 다시 돌아가서 1글자의 길이가 몇인지를 조사해보면

pw값 3글자까지가 모두 길이 4를 가졌다고 뜬다.

 

lenght 함수: 오라클 내에서는 문자열 길이를 그대로 반환해주는데 MYSQL에서 바이트 형식으로 길이를 가져온다고 한다.

 

https://extbrain.tistory.com/65

 

[MySQL] 문자열 길이 가져오기 (LENGTH, CHAR_LENGTH 함수)

▶MySQL 문자열 길이 가져오기 (LENGTH, CHAR_LENGTH 함수) ▶설명 MySQL에서 문자열의 길이를 가져올 때, 사용하는 것이  LENGTH함수입니다. 그렇지만, LENGTH 함수는 문자의 Byte길이를 가져오기 때문에 한

extbrain.tistory.com

 

한글 바이트: 보통 2바이트로 한글이 표현되지만 여러 경우에수에 따라 2바이트~4바이트로 구현된다고 한다.

그렇지만 한글이 3바이트까지는 가능해도, 4바이트가 되는 경우는 거의(아예?) 없는것같은데

다른 풀이들을 참조해봐도 문제가 왜 이렇게 나왔는지 다들 의문점을 가지는 것 같다.

 

 

https://programmerpsy.tistory.com/110

 

한글이 컴퓨터에서 표현되는 방법

1. 컴퓨터에서 한글을 표현하는 방법 완성형 '가' ,'닭' 등의 글자를 그대로 표현하는 방법 EX) '가' 의 경우 0xB0A1 값을 가짐 조합형 '가' 를 'ㄱ' + 'ㅏ' 형태로 조합해서 표현하는 방법 한글을 표현

programmerpsy.tistory.com

 

 

pw가 우왕굳이라니 지독ㅎㅐ,,,,,