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
'Web > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr Challenge old-48 문제 풀이 (0) | 2024.04.02 |
---|---|
Webhacking.kr Challenge old-40 문제 풀이 (0) | 2024.03.30 |
Webhacking.kr Challenge old-35 문제 풀이 (0) | 2024.03.24 |
Webhacking.kr Challenge RPG1 문제 풀이 (0) | 2024.03.22 |
Webhacking.kr Challenge old-50 문제 풀이 (0) | 2024.03.20 |