우선 문제를 보면 id와 pw를 받아와서 그에 해당하는 id 컬럼의 값이 admin이면 문제가 풀린다. 쿼리문을 보면 pw는 ma5(‘{$_GET[pw]}’)인데 md5가 무엇인지 검색해보았다.
http://php.net/manual/kr/function.md5.php 여기를 참조해보면 문자열의 md5 해시를 계산한다는데 16진수를 32문자로 해시를 반환한다고 한다. 그리고 md5 인자의 불린값의 기본값은 FALSE라고 한다. 그러면 여기서 드는 생각이 TRUE인 값으로 하면 pw는 해결되는 것 아닌가?
그래서 1’or’1을 md5해시값으로 만들어 때려보려 했는데 계속 실패했다.
http://bbolmin.tistory.com/77 여기를 참고해보면 내가 생각한 것처럼 sql injection을 할 수 있는데 가능한 경우는 md5함수를 true로 사용하는 상황에서만 해당한다. 즉 cobolt의 경우에는 false이기 때문에 32자리의 16진수 값 반환을 해서 1‘or’1로 내가 원하는 방향대로 풀 수 없다.
그래서 그냥 pw이후를 주석 처리하여 풀었다.
'WEB > Lord Of SQL injection' 카테고리의 다른 글
[Lord Of SQL injection] darkelf → orge (0) | 2017.01.12 |
---|---|
[Lord Of SQL injection] wolfman → darkelf (0) | 2017.01.11 |
[Lord Of SQL injection] orc → wolfman (0) | 2017.01.09 |
[Lord Of SQL injection] goblin → orc (0) | 2017.01.05 |
[Lord Of SQL injection] gremlin → cobolt (0) | 2016.12.31 |