(Lord of SQLInjection) assassin 문제입니다.

pw값이 like로 되어있습니다. 여기서 알아야 하는것은 like연산자입니다.

이전 라이트업에 작성했던 사이트에서 Like에 대한 언급이 있었는데
like는 _ 혹은 %가 와일드카드라 하여서 a% 처럼 시작하는 문자도 찾을 수 있지만
_ 언더바처럼 무슨 값이든 통과가 되는 특징이 있습니다.
즉 패스워드값이 맞지 않더라도 pw의 길이를 찾기에 용이 하다는 것입니다.
해서 pw의 길이를 찾기 위해 코드를 작성해 보면

위와 같이 작성이 가능합니다.
_ 언더바를 1개씩 늘려가면서 패스워드의 길이를 찾는 것인데....

100번을 해도 찾을 수가 없었습니다.
해서 패스워드가 길지 않기를 바라며 손수 노가다를 해봤는데

8번째에서 뜬금없이 guest가 출력되더라구요
여기서 잠깐 막혔는데, 곰곰히 생각해보면 와이드 카드 이기에
guest와 admin의 패스워드 길이가 같다면 이럴 수 있다고 생각이 들었습니다.
그렇다면 길이를 8로 두고 와일드 카드로 패스워의 정확한 값을 검색할때도 admin과 guest가
패스워드가 비슷하면 찾을수가 없다고 생각해 구분이 가능한 코드작성이 필요 했습니다.
간단하게 if 조건문을 두고 찾았을때 어떠한 유저의 패스워드를 찾았는지 출력하는 코드로

위와 같은 코드로 작성하였습니다. 실행해보면

패스워드 길이는 똑같이 8 guest는 admin의 패스워드와 앞의 두개가 같다고 나오네요
패스워드 값이라고 나온 902efd10을 전달해보면

문제가 해결되었습니다
'Wargame(Web) > Lord of SQLInjection' 카테고리의 다른 글
(Lord of SQLInjection) zombie_assassin 문제 (0) | 2022.08.31 |
---|---|
(Lord of SQLInjection) succubus 문제 (0) | 2022.08.31 |
(Lord of SQLInjection) giant 문제 (0) | 2022.08.24 |
(Lord of SQLInjection) bugbear 문제 (0) | 2022.08.24 |
(Lord of SQLInjection) darkknight 문제 (0) | 2022.08.24 |