Websec - level3
c에는 우리가 입력하는 데이터가 들어가며 hash된 값이 우리가 찾을 flag와 같으면 문제를 해결할 수 있다.
이문제의 포인트는 sha1함수에서 두번째 파라미터의 값이 false가 아닌 fa1se라는 점이다.
이것이 어떤 영향이 있는지 알아보면
sha1 함수에서 두번째 파라미터 값이 true이면 길이 20의 raw binary 데이터가 반환되고 false면 40글자의 hex값이 반환된다. 우리는 false가 아닌 fa1se이므로 raw binary 데이터가 반환된다.
flag의 해쉬값은 : 7c00249d409a91ab84e3f421c193520d9fb3674b
두글자씩 해석해서 보면 7c 00으로 두번째가 NULL로 인식된다.
문자열을 읽을 때 NULL까지 읽으므로 사실상 7c까지의 문자가 password_veryify의 함수에서 비교될 것이다.
따라서 우리는 sha1함수를 통해 hash된 값이 7c00~~~인 문자를 찾아서 값을 넣어주면 된다.
이것은 brute force를 이용해서 구하면 된다.