레벨 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
한글 바이트: 보통 2바이트로 한글이 표현되지만 여러 경우에수에 따라 2바이트~4바이트로 구현된다고 한다.
그렇지만 한글이 3바이트까지는 가능해도, 4바이트가 되는 경우는 거의(아예?) 없는것같은데
다른 풀이들을 참조해봐도 문제가 왜 이렇게 나왔는지 다들 의문점을 가지는 것 같다.
https://programmerpsy.tistory.com/110
pw가 우왕굳이라니 지독ㅎㅐ,,,,,
'Wargame' 카테고리의 다른 글
Dreamhack CTF Season 3 Round #4 (🌱Div2) (0) | 2023.07.24 |
---|---|
[LOS] 20번 dragon 문제 풀이 (0) | 2022.02.03 |
[LOS] 18번 nightmare 문제 풀이 (0) | 2022.01.23 |
[LOS] 17번 zombie_assassin 문제 풀이 (0) | 2022.01.21 |
[LOS] 16번 succubus 문제풀이 (0) | 2022.01.19 |