COBOLT

2022. 3. 29. 22:08Site/LOS

이번시간에는 COBOLT를 풀어보겠습니다

아직 공부하는 입장이니 틀린 것이 있더라도 양해부탁드리겠습니다


 

소스코드를 보니 gremlin문제와 비슷해 보입니다

일단 $db변수에 db를 연결해서 저장을 하고있고

preg_match함수를 통해 get으로 받은 id값중에 /prob, _, ., (, ) 가 있으면 No Hack ~_~을 출력하고

두번째 preg_match함수도 get으로 받은 pw값중에 /prob, _, ., (, ) 가 있으면 No Hack ~_~을 출력합니다

$query에 prob_cobolt 테이블에서 get으로 받은 id값과 pw값이 일치하면 id값을 저장을 합니다

그리고 $result의 id값이 admin이라면 클리어 되는 것 같습니다

 

이번에 다른점은 get으로 받은 pw값을 md5암호화 해쉬함수로 변환을 하는 것 같고

id값이 admin이기만 하면 클리어 되는것 같습니다

 

*

md5

임의의 길이의 메시지를 입력받아 128비트짜리 고정 길이의 출력값을 냄

-> md5 해시의 길이는 128비트 또는 16바이트입니다. 이 응용 프로그램에서는 16진수 형식으로 32자로 표시됨

ex)

dgu -> 9307450acfbd3c80f88e32763b250c73

dgu. -> c5a58921aad3734cc3c19c124e7a7cef

cobolt -> bf0bffeea212a41b0f3d16171e2ec67f

보시다싶이 문자열 길이와 상관없이 16진수 32자로 표시가 됨

 

원래 인터넷에서 사용하기 위한 암호화 메시지 인증 코드 알고리즘으로 설계되었지만 보안 전문가가 상용 기성 컴퓨터에서 MD5 충돌을 쉽게 생성할 수 있는 기술을 시연했기 때문에 MD5 해싱은 더 이상 암호화체크섬으로 사용하기에 신뢰도가 떨어짐 -> 현재 주로 데이터 무결성을 확인하고 의도하지 않은 데이터 손상을 감지하기 위한 비암호화 체크섬 이외의 용도로 밖에 사용 안 함

*

 

접근방법

이번문제는 결국 id값을 admin으로 맞춰지면 클리어되기때문에 pw가 md5함수로 변환된다해도 굳이 신경쓸부분이 아닌 것 같습니다. 그 이유는 id값에 admin을 넣어주고 그 이하는 주석처리를 해주어도 id값이 admin이라는 조건을 충족시키고 pw는 주석처리되어서 실행이 되지 않기 때문입니다

id='admin'-- ' and pw=md5('')";

위 방식대로 해주면 주석부분을 제외한 admin만 true값이 되는 것을 확인할 수 있습니다

cf) -- 주석기능은 뒤에 공백을 붙여줘야됨 -> 공백 url인코딩값인 %20

    # 주석으로 해결할 수 있음 -> url인코딩값=%23

'Site > LOS' 카테고리의 다른 글

darkelf  (0) 2022.03.31
wolfman  (0) 2022.03.31
ORC  (0) 2022.03.31
GOBLIN  (0) 2022.03.29
gremlin  (0) 2022.03.29