Webhacking.kr 30번 문제입니다.
(28번과 비슷한 문제로 멘토님의 도움을 받았습니다.)

먼저 사이트에 접속해보면 28번과 비슷한 파일업로드 문제입니다.
다른점은 소스코드를 제공해준다는 점입니다.
먼저 소스코드를 살펴보면

mysqli_connect()로 DB에 연결합니다.
연결된 chall30 이름의 DB에서 chall30_answer 테이블에서 flag를 조회하는데 값이 존재한다면
include /flag를 이용해 flag값을 가져온다고 합니다.
일단 이전 28번처럼 PHP에서 SQL에 대한 설정을 .htaccess 파일로 수정하여 해결해야 합니다.
해서 관련 레퍼런스를 찾아보니

기본 default값 설정이 위와 같은 지시문과 null값으로 지정이 되어 있다고 합니다.
여기서 한번더 생각해야하는 점은 host와 port를 마음대로 설정이 가능하다는 점입니다.
우리는 현재 서버 DB에 chall30이라는 테이블이 있을지 없을지 모릅니다.
혹은 문제사이트 서버DB중 flag라는 열에 값이 없을 수도 있습니다.
왜나면 소스코드가 아닌 페이지로 들어가보면 아무것도 출력되지 않기 때문입니다.

어떠한 정보도 얻을 수 없기에 DB에 테이블이 존재하는지,
존재한다면 flag라는 열의 값을 어떻게 입력해야 하는지에서 막힙니다.
해서 이부분을 멘토님의 도움을 받았습니다.
멘토님은 이문제에서 기본지시문이 host와 port를 설정할 수 있다는 점,
즉 연결이 될 DB를 공격자의 서버의 DB로 돌릴 수 있다는 점을 알려주셨습니다.
해서 개인서버 구축을 위해 구글클라우드를 활용했고

chall30이라는 DB를 만든뒤에 콘솔창을 열어 테이블을 만들어 줍니다.

외부에서 접속가능한 ID도 하나 만들어주면

개인서버에 DB구축이 완료되었습니다.
이제 PHP문서를 토대로 .htaccess를 작성해보면

host에는 구글클라우드의 공인IP를 작성한뒤 아까 만들어준 ID와 pw도 넣어주면 완료입니다.
이제 이파일을 업로드 해보면

정상적으로 업로드가 실행되었고 소스코드링크에서
?view source=1 을 지우고 index.php로 들어가보면

FLAG가 정상적으로 출력되었습니다.
찾은 FLAG를 제출해주면서

문제를 해결하였습니다!
'Wargame(Web) > Webhacking.kr Writeup' 카테고리의 다른 글
Webhacking Writeup old-02 문제 (0) | 2022.12.05 |
---|---|
Webhacking Writeup alien golf문제 (0) | 2022.11.30 |
Webhacking Writeup 28번 문제 (1) | 2022.10.13 |
Webhacking Writeup 35번 문제 (0) | 2022.09.26 |
Webhacking Writeup 25번 문제 (0) | 2022.09.26 |