22번 - blind sql injection
※ 문제될 시에 비공개 처리하도록 하겠습니다. ※
어드민으로 로그인하라고 나오네요.
컬럼 이름이 id와 pw인가봅니다.
blind sql injection 문제 같아요.
admin' and if(true/false,1,0) or '1'='0을 id에 삽입해 injection이 되는지 확인해보겠습니다.
위의 결과를 통해 if문의 조건이 참일 경우 비밀번호가 틀림, 거짓일 경우 로그인에 실패라는 문구가 뜨는 것을 확인할 수 있었습니다.
admin' and if(length(pw)>숫자,1,0) or '1'='0
위의 payload를 통해 admin 계정의 pw의 길이가 31 글자라는 것을 확인할 수 있었습니다.
이제 비밀번호를 알아내는 코드를 작성해보겠습니다.
이런 결과가 나오게 되는데 두 가지 방법이 떠오르게 됩니다.
첫째는 레인보우 테이블을 작성하는 것입니다.
하지만, 이는 너무 시간이 오래걸리기도 하고, 알파벳 10글자만 하더라도 141,167,095,653,376의 경우의 수가 나옵니다.
따라서, 두번째 방법인 MD5 온라인 디코더를 이용하겠습니다.
MD5는 단방향 암호함수입니다.
원래는 해독하는 것이 불가능합니다.
그래서 MD5 온라인 디코더도 해독을 하는 기능은 수행하지 못합니다.
하지만, MD5 함수를 통해 암호화된 문자들을 모두 데이터베이스에 저장해 빅데이터를 만든다면 어떠한 해쉬 값에 해당하는 값을 추출해낼 수 있겠죠?
결국엔 똑같이 레인보우테이블을 이용하게 되는겁니다. 다만, 그 양이 어마어마할 뿐이죠.
www.md5online.org/md5-decrypt.html
여기서 그 기능을 수행할 수 있습니다.
apple은 salt 값이고, wow가 비밀번호인 것 같네요.
'[▒] 보안 > webhacking.kr' 카테고리의 다른 글
24번 - COOKIE/PHP extract (0) | 2020.10.15 |
---|---|
23번 - POSIX Regex/PCRE Regex (0) | 2020.10.15 |
21번 - blind sql injection (0) | 2020.10.15 |
20번 - time out (0) | 2020.10.15 |
19번 - etc. (0) | 2020.10.14 |