Natas Level 11 → Level 12
Username: natas12
URL: http://natas12.natas.labs.overthewire.org
소스코드를 보면 다음과 같다.
filename을 포스트로 받은 다음 파일이름을 랜덤한 값으로 바꾼다.
랜덤한 값으로 바꾸는 알고리즘은 다음과 같다.
확장자만 추출하고 upload/10글자의랜덤한파일이름.본래확장자
10글자의 랜덤한 이름은 숫자와 소문자조합이다.
파일사이즈가 1000보다 작을 때만 업로드한다.
<?php SYSTEM($_GET['cmd']) ?>
이런 내용을 가진 php파일을 만들고 업로드한다. 넣었는데 확장자가 jpg로 바뀐다.
파일업로드 공격이 가능하려면 다음의 조건이 필요하다.
1) 확장자 체크를 해야한다.
2) 경로가 노출되어야 한다.
3) 실행권한이 없어야한다.
여기선 비록 확장자를 jpg로 강제로 바꾸지만 이 값은 내가 인터셉트하여 다시 돌려주면 된다.
웹셀을 올리고 패킷을 캡처한다.
확장자를 php로 바꾼 뒤 Get 명령어를 이용해 natas13파일의 내용을 확인한다.
사이트를 방문하면 업로드된 경로를 알려준다. 해당 경로를 간다음 GET방식으로 명령어를 전달한다.
cat /etc/natas_webpass/natas13 을 인자로 주어 전달하면 답을 확인할 수 있다.
답은 jmLTY0qiPZBbaKc9341cqPQZBJv7MQbY 이다.
'보안 > Natas' 카테고리의 다른 글
Natas Level 14 - SQL인젝션 (3) | 2017.02.09 |
---|---|
Natas Level 13 - 웹셀, 시그니처 체크 (0) | 2017.02.09 |
Natas Level 11 - XOR (0) | 2017.02.08 |
Natas Level 10 - 커맨드 인젝션2 (0) | 2017.02.08 |
Natas Level 9 - 커맨드인젝션 (0) | 2017.02.08 |