문제 페이지에 접속을 해보면 아래와 같이 ?server=123.248.181.123 으로 자신의 IP에 10000~10100 포트 중에 하나의 포트로 socket 통신을 시도한다는 것을 알 수 있다. nc(netcat)을 이용해서 10000부터 10100 포트를 열어두고 다시 요청하면 패스워드 값을 받을 수 있다. open.sh#!/bin/bash# do9dark for x in $(seq 10000 10100)do nc -lvp $x &donecs 패스워드 값을 받고 난 다음에 앞에서 열어둔 포트를 닫아준다. kill.sh#!/bin/bash# do9dark i=29309for ((x=0;x
문제 페이지를 보면 hint로 소스 파일이 있고 파일을 업로드할 수 있다. 소스 파일을 보면 mysql 접속 부분이 생략되어 있고 mysql_fetch_array(mysql_query("select password from challenge_30_answer) 를 통해 데이터를 가져오면 패스워드가 출력이 된다. 하지만, 누군가가 설정을 해둬서 upload 디렉터리로 이동해보니 패스워드가 출력이 되어서 쉽게 풀 수 있었다. + 추가 직접 설정을 해서 문제를 풀어보기 위해서 .htaccess 파일의 내용을 비운 상태로 업로드해보니 패스워드가 출력되지 않았다.패스워드가 출력될 수 있는 조건을 만들어주기 위해서 자신의 데이터베이스 서버에 정보를 삽입해준다.데이터베이스명: challenge_30_table테이블명..
hint로 주어진 것들을 살펴보면 c29_tb 테이블에 password 컬럼이 존재하고, 파일 업로드 시 파일명에 .(dot)이 있을 경우 공백으로 치환된다. 처음에 먼저 do9dark.jpg 파일을 만들어서 업로드 해보면 위와 같이 Done, time, ip, file 문자가 표시가 된다. 다시 한번 같은 파일로 업로드 해보면 "파일이 존재합니다." 문자가 표시되어 이름을 do9.jpg로 변경해서 올려보면 위와 같이 이번에는 time, ip, file 에 대한 값들이 출력되는 것을 볼 수 있다. 그리고 파일명은 앞에서 말한 것과 같이 .(dot)이 공백으로 치환되어 표시가 된다. 그리고 파일명을 변경해서 올려보면 time, ip, file에 대한 값이 순서대로 추가로 표시가 되는 것을 알 수 있다. 그..