모의해킹/Dreamhack (65) 썸네일형 리스트형 out of money [WEB LEVLE1] admin을 입력하니 admin이름으로 코인을 거래하는 페이지로 이동이 된다. flag을 구매하기 위해서는 드핵코인이 필요하다. 소스코드를 보면 드핵코인(DHH)가 1000 이상 있으면 flag을 구매할 수 있다. 문제 풀이 : 무담보 대출로 1000을 받는다. -> 드핵코인 1000을 담보로 넘기고 드멍코인을 2000까지 받는다. -> 그다음 드멍코인을 드핵코인으로 바꾸고 드핵코인 대출 1000을 갚는다. -> 드핵코인 1000이 남아 flag을 구매할 수 있다. type confusion [WEB LEVEL1] type confusion 취약점은 객체의 인스턴스가 타입을 혼동하여 생기는 취약점이다. 문제의 소스코드를 확인해 보자. json_decode($POST ['json'] 은 POST 방식으로 json 데이터를 받아서 저장한다. php소스에서 == 가 같은 비교문은 느슨한 비교를 한다. 개발자 모드를 통해 js 파일을 확인했을 때, submit 함수에서 JSON.stringify() 함수로 자바스크립트의 값을 JSON문자열로 변환시켜 준다. JSON.stringfy({key: key}) 값을 JSON 문자열로 반환을 해주고, PHP에서 해당 값을 json_decode를 해준다. PHP 소스에서 if(json -> key == key)에서 key값을 true을 만들면 flag 값을 얻을 수 있다. 즉, js.. NoSQL-CouchDB [WEB LEVEL1] CouchDB : 문서기반의 데이터베이스이다. 키와 값이 하나의 쌍을 이루는 데이터를 저장하며, JSON 객체 형탱인 도쿠먼트를 저장한다. HTTP 기반의 서버로 동작하며 REST API형식으로 HTTP메소드를 사용해 요청을 받고 처리한다. 로그인페이지에서 uid와 upw 를 입력을 해서 flag값을 없는거 같다. 소스코드를 보면 /auth에서 인증과정을 거칠때, upw값이 같으면 flag값을 출력해주는 코드이다. 즉, 계정정보를 알아야지 풀리는 문제이다. uid에 "admin" 을 넣고 upw에 "aaa" 넣었을 때의 페이로드이다. import requests url = 'http://host3.dreamhack.games:11764/auth' data = { "uid":"_all_docs" } req.. File Vulnerability Advanced for linux [WEB LEVEL1] 파일 다운로드 취약점을 이용해 푸는 문제이다. 소스코드를 보면 /admin페이지에 가서 cmd를 실행시킨다.(Access denined 문구 나옴) /file페이지에서는 경로를 출력시킨다.(파일 다운로드 취약점) /admin 페이지에서 실행을 시키기 위해서는 API_KEY값이 필요하다. 환경변수파일에 API_KEY가 보통은 있다고 한다. /admin 페이지에서 cmd를 실행시키기 위한 API_KEY값을 확인한다. 현재 실행중인 프로세스의 환경변수를 확인하기 위해 /proc/slef/environ 경로로 이동했다. 검색을 통해 찾았음,,, * /proc/PID/environ - 프로세스의 환경변수 * /proc/self - 자신의 /proc/PID로 이동 어떤 작업을 했는지 확인을 했을때, API_KEY .. Apache htaccess [WEB LEVEL1] 파일 업로드 취약점을 이용해 권한을 획득하는 문제이다. 여기서 알아야할 것은 제목 부분에 나온 htaccess 이다. *htaccess : 디렉토리별로 설정을 변경할 수 있다. 설정 지시어가 있는 파일을 특정 문서 디렉토리에 두면, 그 디렉토리와 모든 하위디렉토리에 지시어를 적용한다. Allowoverride none 으로 설정되어 있으면 htaccess 설정파일을 사용할 수 없다. https://httpd.apache.org/docs/2.4/ko/howto/htaccess.html 참고 deniedExts 변수를 보면 php관련 확장자는 허용이 안된다. .htaccess 파일에 php 파일이 .test 확장자로도 실행이되게 지시문을 작성해준다. fly me to the moon [WEB LEVEL1] Javascript로 만들어진 게임인가..? Score 가 31337 정도가 되어야 문제가 풀리는 문제인 거 같다.(Score을 조작하는 문제) javascript 코드를 보면 eval 함수를 사용해 난독화가 되어있다. 그러면 난독화를 풀기 위한 툴을 찾아보자 해당 사이트에 난독화된 코드를 넣어 주면 난독화가 풀린다.(간단한 난독화는 풀린다.) getScore에서 socre 값을 0x8518x7 으로 반환하고 , 0x8518x7는 0x08618x6을 반환하기 때문에 최종적으로 socre값은 0x08618x6 부분이기에 값을 31337로 변경을 해준다. 해당 socre 값이 31337를 넘었기에 flag값이 출력이 된다. Command Injection Advanced Command Injection 취약점 문제이다. * 해당 문제를 풀기 위한 알고 있어야 할 것 escapeshellcmd와 curl 명령어 URL 주소를 입력해보자. https://www.google.com 주소를 입력을 했을 때, 해당 주소의 응답 값을 가져오는 거 같다. 첫 번째로 http가 포함이 되었는지 확인을 한 다음 shell_exec 명령어를 사용해 해당 URL 주소의 결과 값을 html엔티티로 결과를 보여주고 해당 URL 주소를 md5으로 암호화해 cache_file에 저장해 출력해 준다. 여기서 취약점으로 볼 수 있는 곳은 escapeshellcmd 함수에서 \ 문자가 추가되지 않아 curl 명령어의 "-o" 옵션을 사용해 임의의 디렉터리 파일을 생성할 수 있다. dreamhack에서 .. simple_sqli_chatgpt [WEB LEVEL1] chatGPT을 사용해 푸는 문제는 처음 본다. userlevel에 번호를 넣어 로그인하는 건가..? 소스 코드를 보면 userid 가 'admin'이고 userlevel 이 0 이 되어야 flag값이 출력이 된다. chatGPT을 이용을 안해도 소스코드를 보면 풀 수 있는 문제이다. 사용했던 쿼리문은 0' and userid='admin' --이다. 이전 1 2 3 4 5 6 7 ··· 9 다음