문제
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 |
파이썬을 통해서 원하는 값을 도출하도록 프로그래밍을 하여 ‘=’을 포함한 값을 출력받는다.
273d27은 ASCII code로 ‘=’ 을 의미한다.
2584670을 제출한 결과 성공적으로 SQL Injection을 성공할 수 있으며 찾은 Flag를 제출시 통과할 수 있다.
'Hacking > wargame.kr' 카테고리의 다른 글
[wargame.kr] Question 10. md5_compare (0) | 2021.06.28 |
---|---|
[wargame.kr] Question 9. DB is really GOOD (0) | 2021.06.28 |
[wargame.kr] Question 7. strcmp (0) | 2021.06.24 |
[wargame.kr] Question 6. Fly me to the moon (0) | 2021.06.24 |
[wargame.kr] Question 5. WTF_CODE (0) | 2021.06.23 |