zombie assassin

2022. 4. 6. 03:16Site/LOS

소스코드를 보니 먼저 strrev 함수가 나와있습니다. strrev함수는 문자열을 뒤바꿔줍니다

ex) strrev(nimda) -> admin

addslashes함수로 싱글쿼터, 더블쿼터, 백슬레쉬, NULL(%00)의 앞에 \를 넣어서 문자열로 만들어줍니다

따라서 ' " \ %00 -> \' \" \\  %0\ 로 변경을 해줍니다

그리고 id에 값이 있다면 클리어입니다

 

 

' 를 문자열로 바꾸기 위해 단순 \를 써주면 id='\\' and pw='' [\가 2개가됨] 처럼 되어 '를 문자열로바꾸는 기능이 상실해 버립니다.

' 를 넣어주면  id=''\' and pw='' 형태가 되어 싱글쿼터가 열린상태가 되기때문에 id에 문자열을 넣을 수가 없습니다

 

접근방법

" 를 사용하면 \"로 변경되고 또 strrev함수 때문에 "\ 형태로 변합니다 -> id='"\' and pw='' 

id='"\' and pw=' or 1=1 #'

그렇다면 \뒤의 싱글쿼터를 문자열로 인식하여 파란색으로 표시된 전체부분을 하나의 문자열로 인식되어 처리될 것이고 or연산자를 붙여주어 항상참인 1=1을 넣어주어 클리어 하면 될 것 같습니다

하지만 strrev함수 때문에 or 1=1을 뒤바꿔주어 입력해주어야 됩니다 

마지막 남은 싱글쿼터는 주석[%23]으로 처리해주면 마무리 입니다

-> pw=%23%201=1%20ro%09

 

cf) 생각해보면 간단한 문제이지만 strrev 함수 때문에 애먹는 문제인 것 같습니다

'Site > LOS' 카테고리의 다른 글

xavis  (0) 2022.04.13
nightmare  (0) 2022.04.06
succubus  (0) 2022.04.05
assassin  (0) 2022.04.05
giant  (0) 2022.04.05