이번에 못쓰는 문자열은 다음과 같다.
- prob, _(언더바),.(점), (역 슬래쉬)
이점은 Level 1이랑 다른 게 없어 보인고 쿼리를 본다.
query = "select id from prob_cobolt where id='{_GET[id]}' and pw=md5('{$_GET[pw]}')";
이번에 는 id에 해당하는 pw를 md5를 이용해서 해싱하고 해싱 값을 비교한다.
비밀번호는 일방향으로 암호화, 생체정보는 양방향 암호화하는 것이 현재 개인정보보호법의 기준이다. 물론 md5같이 충돌이 발견된 불안정한 알고리즘으로 하면 안 된다.
cobolt의 코드에는 저번 gremlin의 코드의 Injection이 유효하다.
다음 아래와 같이 입력해본다.
admin이 아니라 rubiya라고 한다. 즉 이번에는 admin으로 접근을 해야 하는 걸 알 수 있다.
해결방법
admin계정의 존재는 알려주었으니까 그냥 admin을 가져오라고 query를 하고, query를 작은따옴표(')로 닫아버리면 끝이다.