문제의 소스 코드입니다.
문제를 푸는 아이디어 자체는 간단하지만 입력이 6문자로 제한되어 있습니다.
또한 주석에 사용되는 #, - 문자가 필터링되고 있습니다.
그러므로 필터링을 우회하면서 참인 조건을 넣어주어야 합니다.
주석으로 #,- 문자 대신 ;%00를 사용할 수 있습니다.
세미콜론으로 문장을 종료시키고 널 문자로 공백을 띄워서 뒷 문장을 무력화시키는 원리인 듯 합니다.
논리 연산에 대해 or(||) 연산에 집착하다가 문득 xor(^) 연산이 떠올랐습니다.
mysql은 boolean 타입 중 true는 1, false는 0으로 처리합니다.
xor연산은 같으면 1, 다르면 0을 반환합니다.
여기까지 알면 이제 문제를 풀 수 있습니다.
먼저 ('를 닫아주기 위해 ')문자를 넣어줍니다.
이제 pw는 false가 되었으니 뒤에 false인 0을 넣고 둘을 xor연산 시켜줍니다.
마지막으로 주석을 넣어줍니다.
최종 입력 값 pw=')^0;%00 을 넣어주면 문제가 풀립니다.
'write-up(web) > LOS' 카테고리의 다른 글
[Lord of SQLInjection] dragon write-up (0) | 2022.08.02 |
---|---|
[Lord of SQLInjection] xavis write-up (0) | 2022.08.02 |
[Lord of SQLInjection] zombie_assassin write-up (0) | 2022.08.01 |
[Lord of SQLInjection] succubus write-up (0) | 2022.08.01 |
[Lord of SQLInjection] assassin write-up (0) | 2022.07.31 |