본문 바로가기
반응형

워게임/natas21

[natas - WEB hacking] level19 -> leve20 [natas - WEB hacking] level19 -> leve20 [ 풀이과정 ] 페이지에 접속하자마자 'You are logged in as a regular user. Login as an admin to retrieve credentials for natas21.'라는 문구가 있었고 '일반 사용자로 접속했기 때문에 natas21을 인증할 수 있는 관리자로 로그인하라'는 뜻이였다.. 페이지에는 username을 보내는 폼과 전송버튼이 있었다... 이 문제를 풀기 위해서는 debug를 이용해야한다... 우선 url창에 debug=true&name=admin과 같이 값을 줘서 결과를 확인해봤고 세션값을 받아오기전에 myread()와 mywrite()가 실행되기 때문에 여러번 새로고침을 해줘야한다.... 2017. 10. 8.
[natas - WEB hacking] level18 -> leve19 [natas - WEB hacking] level18 -> leve19 [ 풀이과정 ] 해당 문제에서는 php에 대한 소스코드가 공개되지 않는다.'This page uses mostly the same code as the previous level, but session IDs are no longer sequential...'라는 문구가 보이는데 해석해보면 '이 페이지는 이전 레벨과 거의 동일한 코드를 사용하지만 세션 ID는 더 이상 순차적이지 않습니다 ...'라는 뜻이다.. admin으로 로그인 한후에 개발자도구에 Network를 확인해보니 cookie 헤더에 PHPSESSID=3633312d61646d696e라고 세션 아이디가 나와있었고 문구에 나와있는것처럼 이전 문제처럼 세션ID가 순차적이지 않.. 2017. 10. 8.
[natas - WEB hacking] level17 -> leve18 [natas - WEB hacking] level17 -> leve18 [ 풀이과정 ] 페이지에 접속하니 'Please login with your admin account to retrieve credentials for natas19.'라는 문구가 보였다..구글 번역기를 통해서 알아보니 'natas19를 알기 위해서는 admin으로 로그인하라'는 내용이였다.username과 password를 아무거나 입력해서 login을 시도하니 'You are logged in as a regular user. Login as an admin to retrieve credentials for natas19.'라는 문구가 떳다..'일반 사용자로 로그인 했으니 natas19에 대한 자격 증명이 되는 관리자로 로그인하라.. 2017. 10. 8.
[natas - WEB hacking] level16 -> leve17 [natas - WEB hacking] level16 -> leve17 [ 풀이과정 ] 페이지를 접속해보니 username을 입력할수 있는 폼과 버튼이 있었다.확인해보기 위해서 아무거나 입력해보니 아무내용도 출력이 되지 않았다... 페이지 소스를 확인해보니 해당 검색 결과를 출력해주는 코드가 주석 처리 되어있었다.. 결과를 출력 해주는 echo 구문이 주석처리 되어있기 때문에 여기서는 time based SQL injection을 해야한다.SQL에서 sleep()을 이용하면 되는데 해당 sleep() 명령이 실행 됬다는걸 판단하기 위해서time 모듈을 사용해 sleep() 실행시간을 구해서 판단했다. time.time()을 이용해서 끝나는 시간에서 시작 시간을 빼주고 sleep() 시간을 구해줬다. ti.. 2017. 10. 8.
[natas - WEB hacking] level15 -> leve16 [natas - WEB hacking] level15 -> leve16 [ 풀이과정 ] 페이지에 접속해보니 해당 관련된 문자를 검색하는 폼과 버튼이 있었고 해당 결과를 출력해주는 output이 있었다.위쪽에는 '보안상의 이유로 특정문자를 더 많이 필터링 한다'는 문구가 있었다. 페이지 소스를 보니 preg_match() 함수를 이용해서 [;|&`\'"] 문자들을 필터링 하고 있었다.해당 문자들이 필터링 되고 있기 때문에 passthru("grep -i \"$key\" dictionary.txt");에서 한줄에 여러 명령어를 실행 시키는 방법은 막혔다.. 리눅스에서 ` 대신 사용할 수 있는게 $()이다.$() 안에 grep을 실행 시켜서 해당 실행 내용이 참이라면 뒤에 dictionary.txt는 실행이 .. 2017. 10. 8.
[natas - WEB hacking] level14 -> leve15 [natas - WEB hacking] level14 -> leve15 [ 풀이과정 ] 웹페이지에 접속하자마자 username을 입력할수 있는 폼과 check existence라고 적힌 전송 버튼이 하나 나온다.check existence를 구글 번역기에서 돌려보니 '존재 확인'이라는 뜻으로 나오므로 해당 username이 존재하는지 확인하는거란걸 추측할 수 있다.아무거나 입력해서 전송을 해보니 'This user doesn't exist.'라는 '이 사용자는 존재하지 않는다'는 문구가 나왔다. 코드를 분석해보니 username 폼에 값을 입력하고 전송 버튼을 누르게되면 존재하지않는다면 'This user doesn't exist.'라는 문구가 나오고 존재한다면 'This user exist.'라는 문구.. 2017. 10. 8.
[natas - WEB hacking] level13 -> leve14 [natas - WEB hacking] level13 -> leve14 [ 풀이과정 ] 이 문제는 username과 password를 입력할수 있는 폼이 하나씩 주어지고 전송 버튼이 있다. 코드를 살펴보면 MySQL DB로 연결을 해서 select 쿼리를 이용에 where 조건을 이용해 해당 아이디와 패스워드를 검색하는 쿼리를 사용하고 있다.넘겨줄 수있는 변수가 두개나 있고 SQL 쿼리를 이용하고 있다고 하면 SQL injection을 이용해서 문제를 풀어보는게 가능하다..그리고 여기서는 SQL 쿼리에서 문자값을 받는데 싱글 쿼터가 아닌 더블쿼터를 사용하고 있다는 점도 확인했다. 코드를 분석해보면 mysqlquery()에 대한 실행결과가 한줄 이상만 있다면 natas15의 패스워드를 알려주는게 보인다.... 2017. 10. 8.
[natas - WEB hacking] level12 -> leve13 [natas - WEB hacking] level12 -> leve13 [ 풀이과정 ] 이 문제도 페이지를 접속하니 natas12와 비슷하게 생긴 파일 업로드 페이지가 나왔다..'For security reasons, we now only accept image files!'라는 문구가 있어서구글 번역기를 돌려보니 '보안상의 이유로 이미지 파일만 허용한다'고 나와있었다. jpg 파일을 업로드 해보니 업로드가 될때가 있고 안될때가 있었다.. 우선 소스 코드를 분석해보기 위해서 코드를 보니까 natas12에서 봤던 코드와 거의 유사한 형태였다.. else if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) { echo "File is not an imag.. 2017. 10. 8.