반응형




안녕들 하시죠 !


이번시간에는 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 라고 입력하게 되면,




성공했습니다.


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


반응형




안녕들 하시죠 !


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



음... 우선 싱글쿼터( ' )나 더블쿼터( " )를 필터링하고 있진 않고, id값에 admin이 들어가게 되면 성공이네요.

그런데 위에 해시 암호화 md5라는게 있어 잠깐 고민을했습니다.


하지만 pw값은 고려할 것 없이 id값만 만족하면 된다는 생각을 하고 우선 ?id=admin 값을 넣어보았습니다.



 

id값에는 admin이 잘 들어갔지만 and 뒤에있는 pw를 충족하지 못해 클리어가 되지 않네요.

그렇다면 id='admin' 뒷부분을 전부 주석처리해주면 어떨까? 라고 생각했습니다.


mysql에서의 주석기호 # 을 사용하여 뒷부분을 전부 주석처리했습니다.

#은 urlencoding방식으로 %23이라고 적어주셔야합니다.

?id=admin'%23




성공했습니다.


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


반응형




안녕들 하시죠 !


오늘은 LOS 1번 문제풀이를 해보겠습니다.



다음과 같이 싱글쿼터( ' )나 더블쿼터( " )를 필터링하고있지 않으며, id값에 그 어떤 값이 들어와도 solve가 되겠네요.

자 그럼 우선 id에 아무 값이나 넣어보겠습니다.


?id=hongpossible 



자 이렇게 싱클쿼터 안에 hongpossible이 제대로 들어갔습니다. 

하지만 뒷부분에 pw값을 넣지못해 and 뒷부분을 참으로 만족시키지 못했네요.

그럼 가장 기본적인 SQL Injection구문을 이용하여 or 1=1 로 참을 만들어주고 그 뒷부분을 전부 주석처리하면 참을 만족시킬 수 있을 것 같습니다.

mysql의 주석처리 #을 urlencoding방식을 통해 %23으로 넣겠습니다.



urlencoding에 대해 알고싶으시다면 아래의 URL로 들어가보세요.

https://www.w3schools.com/tags/ref_urlencode.asp



?id=hongpossible'or 1=1 %23



위의 이미지에서 노란색부분 ( #' and pw '' )는 모두 주석처리가 되어버려 성공했습니다.


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


+ Recent posts