문제

 

- md5() 취약점에 관련한 문제로 보인다.


- Start

Start


- get source

get source

 

- 패스워드가 $ps mysql_real_escape_string($_POST['ps']); 을 통해 필터링 되는 것을 확인

 

- 패스워드는 md5($ps, true); 함수를 통해 MD5해시 값으로 변환되어 SQL쿼리문이 된다.

 

- 이때, 파라미터'true'가 설정된 md5함수는 SQL문에서 사용될 때, SQL Injection 공격에 취약하게 된다.

- 파라미터'true'는 raw_output=true 라는 의미로 16진수 문자열대신 바이너리 형태로 해시 값를 반환하게 된다.

- 따라서 SQL쿼리가 참이 되도록 하는 바이너리 형태의 md5값의 입력 문자를 찾으면 문제를 해결할 수 있다.

 

- 구글링을 통해 'DyrhGOYP0vxI2DtH8y' 의 MD5 해시 값 '6c0e97fda5c225276f522735b381a25b' 를 찾을 수 있었다.

- 해시 값의 중간에 276f522735은 바이너리 형태일 때 ' o R ' 5  라는 문자열로 나타낼 수 있다.

 

- 패스워드 값으로 DyrhGOYP0vxI2DtH8y 를 제출했을 때의 쿼리는 다음과 같다.

  select * from admin_password where password=' ...'oR'5... '

 

- where절에 대해 참이 되는 쿼리문이므로 SQL Injection 공격 성공


 

'워게임 > Wargame.kr' 카테고리의 다른 글

Wargame - DB is really GOOD  (0) 2021.06.20
Wargame.kr - md5_compare  (0) 2021.06.08
Wargame.kr - strcmp  (0) 2021.05.30
Wargame.kr - WTF_CODE  (0) 2021.05.27
Wargame.kr - flee button  (0) 2021.05.23
복사했습니다!