반응형




안녕들 하시죠 !


이번시간에는 LOS 3번 문제를 풀어보겠습니다.



쿼리에 select id from prob_goblin where id='guest' and no = 라고 되어있네요.


아래 이미지의 주황색으로 강조해놓은 곳을 보시면 싱글쿼터 ( ' )와 더블쿼터 ( " )를 금지하고 있습니다.

또한 id에 'admin' 이 들어오게되면 solve문을 실행하게 되어있네요.



저는 우선 no= 라는 부분이 궁금했습니다.

그래서 값을 넣어서 결과를 비교해보았습니다.


?no=0



?no=1




이로써 guest의 no값은 1이라는게 밝혀졌습니다.

이 문제를 해결하기 위해서는 guest가 아닌 admin으로 설정해줘야하기에, no값은 0을 사용해야 할 것 같습니다.


그럼이제 ?no=0 부분까지는 알았습니다.


그래서 전 앞에서 늘 해왔던 or문을 사용하여 앞의 구문을 거짓 뒤의 구문을 참으로 만들어 통과시켜 볼 생각을 했습니다.

?no=0 or id='admin'을 입력하게된다면, 싱글쿼터 필터링에 걸릴것이고... 

아래 이미지와 같이 싱글쿼터 없이 admin만 넣게되면 문자열 인식을 못합니다.



이런 경우 문자열을 16진수(hex)로 나타내게 되면 16진수로 변환된 admin의 값을 문자열로 읽어갑니다.


아래에는 문자열을 16진수로 바꿔주는 사이트입니다.  

https://www.percederberg.net/tools/text_converter.html




자 아래에 변환된 Hex형태의 숫자들을 조합해보면 61646D696E입니다.

php에서는 Hex형태를 인식시키기 위해 앞에 0x를 붙여줘야합니다.


따라서, ?no=0 or id=0x61646D696E 라고 입력하게 되면,




성공했습니다.


오늘은 여기까지입니다 감사합니다 !


+ Recent posts