본문 바로가기
Web/Webhacking.kr

Webhacking.kr Challenge old-44 문제 풀이

by jh117jh 2024. 3. 26.
728x90

 

이번 문제는 이름을 적는 칸이 있고 이름을 입력 시 hello! (입력값)을 출력해 준다.

 

 

소스코드를 보면 

 

 

id값을 받아 5번째 자리까지만 system함수를 이용해 출력해 준다.

 

주석으로 나는 그냥 실행하기만 하면 된다는 글이 쓰여있는데

여기서 우리는 system함수를 이용해야 된다는 걸 알 수 있다.

 

바로 PHP code injection인데

PHP에서 exec() 함수나 eval() 함수, system함수를 사용한 경우 세미콜론(;)을 사용하여 다른 함수를 실행할 수 있다는 취약점이다.

 

system함수에서는 쉘명령어를 사용할 수 있는데

우선 flag값이 있는 곳이 어디인지 알아야 하므로 ls를 이용해 현재 디렉토리의 파일 목록을 출력해 봤다.

 

그러자 flag_29cbb98dafb4e471117fec409148e9386753569e와 index.php가 나왔다.

index.php는 현재 우리가 열고 있는 파일이고  flag_29cbb98dafb4e471117fec409148e9386753569e를 확인해봐야 할 것 같다.

 

 

 

해당 디렉토리로 이동하면 flag값이 나오는 걸 확인할 수 있다.

728x90