본문 바로가기
Web Hacking/LOS (sql injection)

Lord of SQL Injection 3단계, goblin 풀이

by 코뮤(commu) 2019. 10. 27.
728x90
반응형

 

 

 

자 이번엔 3단계. 고블린 풀이다!

고블린이 어떻게 생겼는지 잘 모르고 있었는데, 신기하게 생겼다...!

 

 

아무튼 빠르게 코드부터 읽어보자.

 

 

 

 

 

 

 

그 전단계들과는 다르게, preg_match를 통해서 exit로 이어지는 구문이 하나 더 생겼다.

' 와 " , 그리고 ` 는 쓸 수 없다고 한다. 처음에 저걸 몰라서 헤맸다.

 

그리고 내가 의문이었던 것은, id가 guest로 고정이 되어있다는 점이었다.

문제를 해결하려면 id값이 admin이 되어야 하는데, 보이는 것과 같이 쿼리문에는 guest로 id값이 고정되어있다.

자, 데이터베이스 구문의 연산자를 잘 생각해보자.

 

 

 

 

 

출처는 제타위키.- SQL문의 연산자

 

 

자, 이 쿼리문에서 id=admin이라는 것을 표현하려면 어떻게 해야할까?

 

답은 생각보다 간단하다. 

no의 값을 거짓, 즉 아무 의미없는 숫자를 넣어 id='guset' and no=어쩌구 의 값을 거짓으로 만든 후,

or 연산자를 통해 id=admin이라는 것을 알려주면 된다.

 

우리는 싱글쿼터( ' )를 사용할 수 없기 때문에, admin이라는 문자열을 다른 형식으로 표현해야한다.

많은 방법이 있겠지만, 나는 16진수 변환기를 사용해 admin을 16진수로 만들었다.

 

 

 

변환 사이트는 이것을 이용했다.

 

 

 

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

 

swiss converter tool | percederberg.net

Quick encoding, decoding, escaping & unescaping of UTF-8, base64, hexadecimal, JSON, quoted-printable, HTTP POST, XML and more.

www.percederberg.net

 

 

 

 

 

정답은 더보기를 클릭!

 

16진수 말고도 다른 방법으로는 char(97,100 ... ) 이런식으로 아스키코드값으로 해결하는 방법이 있다.

728x90
반응형