본문 바로가기
Hacking/wargame.kr

[wargame.kr] Question 8. md5 password

by 알거음슴 2021. 6. 28.

문제

md5(‘value’, true);

 

 

풀이

문제 접근 시 password 입력폼과 소스코드를 볼 수 있는 get source 두개의 항목이 확인된다 get source를 통해 소스코드를 확인해보자.

 

php mysql로 구성된 소스코드를 분석하여 다음과 같은 결과를 얻을 수 있었다.

 1) mysql_real_escape_string() 함수로 인해 SQL Injection 공격은 어렵다.

 2) admin_password password 값과 일치하면 Flag값을 출력받는다.

 3) input 값은 md5($ps, true) 함수를 통해 md5 hash값으로 처리된다.

 

이때 호출된 md5() 함수의 경우 md5(변수, true) 값으로 구성되어 있을 경우 16자리 binary형태로 출력되며 이때 ‘=’ 을 포함한 구문을 찾아낼 경우 SQL Injection 을 적용할 수 있다.

select * from admin_password where password='".md5($ps,true)."'
select * from admin_password where password='asd’=’qwe'
select * from admin_password where True

 

파이썬을 통해서 원하는 값을 도출하도록 프로그래밍을 하여 ‘=’을 포함한 값을 출력받는다.

273d27ASCII code‘=’ 을 의미한다.

 

2584670을 제출한 결과 성공적으로 SQL Injection을 성공할 수 있으며 찾은 Flag를 제출시 통과할 수 있다.