Wargame/The Lord of the SQLI

LoS.Rubiya.kr - cobolt write up

9ucc1 2020. 7. 8. 21:08
반응형

문제 첫 화면에 늘 그랬듯이 php 소스코드가 보인다. 

이 소스코드를 분석해보자면

기본적인 공격가능한 문자를 막고있고, query문을 통해 입력받은 id와 pw를 통해 MySQL DB에서 정보를 가져온다. 

 

또, DB에서 가져온 id값이 admin이면 solve("cobolt") 함수를 실행해주고 있다. 

 

그런데 pw를 받는 코드를 자세히 보면 md5() 함수를 통해 암호화하고있다. 

즉, 이번문제에선 pw를 사용하지 않고 풀 수 있다는 것이다.

 

id 파라미터를 넘길 때 값을 

admin'%23

으로 넘겨주면, id 변수엔 'admin'이란 문자가 담기게 되고, '(싱글쿼터)를 사용함으로써

query문의 싱글쿼터가 닫히게 되고(SQL injection의 기본적인 escape 방식),

id 변수에 들어갈 값은 여기(싱글쿼터 위치)까지라는 것을 말한다.

그리고 뒤 %23(#)은 php 주석이므로 query 문의 뒷 내용을 주석처리 시켜준다. 

 

URL 뒤에 저 값을 포함하여 넘겨주면

https://los.rubiya.kr/chall/cobolt_b876ab5595253427d3bc34f1cd8f30db.php?id=admin' %23

 

cobolt clear!

반응형