문제분석 & 풀이페이지에 접속하면 테이블이 나온다. test.txt 파일을 다운로드 해보니, 정상적으로 다운로드 됐다. 이번에는 flag.docx를 다운로드를 했다. access denied가 뜬다. 아마, flag.docx를 다운받는게 목표인 것 같다. 개발자도구로 코드를 확인해보면, test.txt 파일을 다운로드 받는 과정에서 down 파라미터로 요청하고 있다. 전송하는 값을 보면, 마지막에 =이 붙어있다. 추측하자면, base64 인코딩이 된 값이다. 값을 base64 디코딩하면 test.txt 가 나온다. 예상대로 base64로 인코딩된 값임을 확인할 수 있다. 그렇다면 test.txt 파일을 다운받기위해 test.txt 를 base64 인코딩하여 down 파라미터로 요청했으니, flag.do..
1. 문제분석 & 풀이문제에 접속하면 파일을 업로드 할 수 있게 되어있다. 소스를 분석해보자.1. 업로드한 파일의 이름을 $fn에 저장한다. (3번줄)2. $fn을 여러번의 문자열 치환과정을 거친다. (4~7번줄)3. $cp에 임시파일경로를 저장한다. (9번줄)4. 임시로 저장된 파일을 ./{$upload_dir}/{$fn} 경로에 복사한다. (10번줄)5. ./{$upload_dir}/{$fn} 파일을 열어서 flag값을 쓴다. (11~13번줄) 결론적으로 flag를 얻는것이 목표고 flag를 얻기위해서는 "./{$upload_dir}" 가 무엇인지 알아내서 flag 파일의 경로를 알아내야한다. 그러나 주어진 소스에는 {$upload_dir} 가 무엇인지 나오지 않아서 정상적인 방법으로 알아낼 수는 없..
문제에 접속하니 소스가 따로 주어져있지는 않고 로그인창만 뜬다. 이미 guest라는 계정으로 모든 값이 다 적혀있어서 그대로 로그인을 해봤다. no,id,pw 파라미터를 통해 값이 전송되며 guest 로 로그인이 성공했다는 표시가 뜨고 이후 몇 초 뒤에 자동으로 로그아웃이 됐다. 로그인창을 다시 봐보니 pw가 5자리가 적혀있고 아마도 guest의 pw는 guest이지 않을까 싶어서 값을 지우고 guest로 입력하여 로그인을 다시해봤다. 로그인이 성공했고 guest의 pw가 guest라는 사실이 확정됐다. DB에 no=1, id='guest' , pw='guest' 라는 데이터가 저장되어있을 것이고 아마 이번 문제는 blind sqli를 통해 admin의 계정으로 로그인하는 문제인 것 같다. select..
문제풀이빈칸과 코드가 주어진다. ○ 코드 분석1) id에서 \\를 공백으로 ' 를 '' 로 replace3) id에서 15자리만 split4) SQL 쿼리를 실행해고 결과를 가져와 $result에 저장5) result[0]이 1이면 문제 해결 목표는 result[0] == 1 조건을 충족하는 것이다. SQL 쿼리를 보면, select 문 결과는 항상 1이다. 즉, where문 조건만 DB에 저장된 데이터와 일치하면된다. where 문에서 and 기준 뒷부분을 보면 id='~~ 로 되어있는데 앞에만 ' 가 있을 뿐이고 뒤에는 ' 가 없다. 따라서 id로 ' 를 넣어서 쿼리문이 정상적으로 끝맺음이 되도록 완성해야한다. (안 넣으면 쿼리 에러 발생) 그러나 ' 를 '' 로 치환하기 때문에 일반적인 방법으로 ..
문제에 접속하니 log injection 이라는 제목과 함께 간단한 로그인 창이 구현되어있다. guest 라는 이름으로 로그인을 해봤지만 아무 반응이 없었다. 개발자도구를 이용해 소스를 확인해보니 admin 페이지가 admin.php 라는 사실을 알 수 있었다. admin.php에 접속해보니 IP:[입력한 값] 의 형태로 내가 로그인을 시도했던 기록이 남아있고 "admin"이라는 이름으로 기록을 남겨야한다는 미션이 주어져있다. 결론적으로 처음에 admin으로 로그인을 해서 admin.php에 기록을 남기면 문제가 해결되는 것 같다. 바로 index.php로 돌아가서 admin으로 로그인을 시도해봤지만 admin이 아니라고 뜨면서 거부된다. 단순히 admin으로 입력해서는 해결이 안되고 독특한 inject..
문제분석 & 풀이페이지에 접속하면 위와 같은 문구가 뜬다. 대충 해석을 하면 index.php를 vi 에디터로 작업을 하던 도중에 날아가버렸고 이것을 복구해달라는 내용이다. 이번문제는 사전지식만 있으면 간단한 문제인 것 같다. vi 에디터의 경우 작업중에 갑자기 전원이 꺼져버려도 파일이 완전 날라가지 않고 작업하던 파일이 swap 임시파일로 저장된다! 따라서 index.php.swp 파일이 존재할 것이다! (swap 파일의 확장자는 swp) 확인해보자. 확인해보니 찾을 수 없다고 뜬다. 경로가 잘못됐나 생각했지만 그것은 아니였고 원래 swp 파일은 기본적으로 숨김파일로 저장된다는 사실을 알아냈다. 숨김파일을 의미하는 .을 맨 앞에 붙여서 확인해보자. index.php.swp 파일이 다운로드가 됐다. 이제..