오늘은 Probgame이라는 사이트에서 워게임을 해 보도록 하겠다.
풀 문제는 Extract Function이라는 문제인데, 제목부터 php의 extract 취약점을 사용한다는 것을 알 수 있다.
extract 취약점은 링크 뒤에 코드를 더 붙여서(?) 변수값을 바꾸는(??) 간단한 공격 기법이다.
바로 시작하도록 하자.
Problem Link 클릭!
매우 간단한 php 코드가 나왔다.
우리가 주목해야 할 취약점 코드는 이 부분이다.
$CheckOne = 123123123123;
$CheckTwo = 0x2dbfadef;
extract($_GET);
if((int)$CheckOne === $CheckTwo){
echo $FLAG;
}
else{
echo "Hello zzzzz<br>";
}
여기서 if구문을 살펴보면, CheckOne 변수와 CheckTwo 변수가 같아지면 FLAG를 출력하라는 코드라는 것을 알 수 있다.
근데 CheckOne 변수는 10진수인것 같은데, CheckTwo는 16진수로 보인다.
10진수로 변환해 주자.
767536623이라고 한다.
이제 CheckOne 변수를 767536623로 바꿔주기만 하면 된다.
extract 취약점을 이용하여 바꾸어 보자.
링크 뒤에 ?CheckOne=767536623 라고 입력한다.
이제 페이지를 새로고침하면 바로 FLAG가 출력될 것이다.
extract 취약점을 이용하여 Probgame의 Extract Function 문제를 풀었다.