SlowTurtle_

천천히 그러나 끝까지 완주

728x90

wargame 24

[Dreamhack] file-csp-1

[Dreamhack] file-csp-1 소스를 을 때 결론적으로 보면 a== ‘error’ and b == ‘error’ and c == ‘c’ and d != ‘error’가 되면 FALG를 얻을 수 있다. 1을 보낸 뒤 소스를 보았다. 어떤 함수의 SHA값을 하나 알 수 있었다. test에서 초기에 script-src ‘unsafe-inline’이 적혀있는데 CSP를 공부했을 때 script-src는 스크립트 관련된 권한 집합을 제어하는 것으로 알고 있었다. 그리고 unsafe-inline은 inline script를 허용한다는 뜻이다. 그렇다면 script-src를 보내보았다. 그랬더니 아무것도 출력되지 않았고 콘솔에서 위 사진을 볼 수 있었다. 4개 함수의 SHA 값인데 뭐가 무엇인지 아직 모른..

[Dreamhack] crawling

[Dreamhack] crawling check_global과 damin_page를 보면 address는 127.0.0.1인지 체크하고 있으므로 address는 127.0.0.1이어야 한다. 가장 밑을 보면 포트는 3333이니 127.0.0.1:3333을 보내보자. 여기서 참고할 점은 PHP는 http://Wrapper를 지원한다. 즉, http://url~와 같은 형태로 넘겨주면 외부 도메인에 있는 리소스를 가져오는 것이다. 소스 코드에서 본 것처럼 check_global을 우회하지 못하여 Can you access my admin page~? 문장이 출력되었다. 127.0.0.1:3333을 외부 ip인 것처럼 다른 url로 변경하여 요청하여 check_global을 우회해보자. url 단축을 이용했다..

[Dreamhack] login-1

[Dreamhack] login-1 소스 코드가 길어서 필요한 부분만 가져와봤다. guest를 0, admin을 1 와 같이 userLevel로 구별하고 있다. /user/useridx useridx로 db에서 가져오는 정보를 볼 수 있다. 권한이 1일 때 /admin페이지를 확인할 수 있다. 이곳에 Flag가 있으니 권한 1을 가지고 있는 계정으로 /admin페이지를 확인하면 Flag값을 얻을 수 있다. register에서 가입할 수 있는데 가입하고 나면 backupcode를 준다. 그 backupcode는 100까지의 숫자 중 랜덤하게 부여한다. Brute Force공격을 막기 위해 sleep(1)을 걸었다. 비밀번호가 틀렸다. 그럼 가입을 해보자. slow/slow/slow로 가입해보니 Backup..

[Dreamhack] [wargame.kr] adm1nkyj

[Dreamhack] [wargame.kr] adm1nkyj 초기화면에서 소스코드를 보여준다. id를 150번 입력하면 초기화가 된다. 음 id와 pw, flag를 모두 GET 방식으로 보내줘야 진짜 flag 값을 획득할 수 있는 것 같다. 그럼 우선 id부터 알아보자. ?id=’ or 1=1 -- - Hello 2라는 결과를 출력하였다. 위에서 획득한 id가 2번째 컬럼인 것을 확인했다. 그럼 pw를 구해보자. pw의 컬럼을 확인하기 위해 아래와 같이 보냈다. ?id=%27%20union%20select%201%2C&pw=%2C2%2C3%2C4;%20--%20-​ 컬럼은 xPw4coaa1sslfe= 임을 확인했고 이것을 이용하여 pw를 구하면 ?id=%27%20union%20select%201%2C%2..

[Dreamhack] weblog-1

[Dreamhack] weblog-1 (이번 글은 사진이 작을 수 있으니 클릭해서 확인하세요!) 초기 화면이다. 5문제를 풀어야 flag를 주는 것 같다. 우선 admin계정의 Pw를 찾기위해 access.txt을 열어봤다. 정렬은 되어 있지만 보기 너무 힘들어서 Excel로 공백을 기준으로 나눈 뒤 의미 없는 열을 지운 뒤 분석했다. 파일을 빠르게 내리면서 보니 초반과 다르게 의심스러운 부분이 있었다. 자세히 보면 1초마다 1개씩일 때도 있지만 많으면 1초에 4번씩 board.php에서 sort파라미터에 32,33,34~ 와 같이 SQL Injection 의심 쿼리를 확인할 수 있었다. 분명 admin과 pasword를 탈취하기 위한 쿼리문도 있을 것이니 더 내려봤다. (TABLE_NAME, COLUM..

[Dreamhack] Tomcat Manager

[Dreamhack] Tomcat Manager 초기 화면에 사진은 image.jsp?file=working.png을 보면 알 수 있었다. 우선 제공된 파일들을 보자. Dockerfile을 보면 파일들의 경로가 다 나와있다. image.jsp?file=을 이용하여 저 상대경로로 접근해보자. ROOT.war또한 안된다. 상대경로로 이것저것 다 해보다가 성공했다. 다른 이름으로 저장 받아서 ROOT1.war로 받았는데 확인할 게 없었다. tomcat-users.xml에 password가 secret이었는데 한 번 같은 방식으로 진행해봤다. 접속에 성공했고 tomcat-users1.xml로 다운받아 엑셀로 열어봤더니 아까와는 다르게 password를 획득할 수 있었다. 그럼 이걸 관리자페이지로 접근해야 하는 ..

[Dreamhack] File Vulnerability Advanced for linux

[Dreamhack] File Vulnerability Advanced for linux 필요한 코드만 가져와 봤다. @app.route('/file', methods=['GET']) def file(): path = request.args.get('path', None) if path: data = open('./files/' + path).read() return data return 'Error !' /file을 보자. path파라미터를 통해서 ./files/경로로 파일을 읽어온다. 그러나 path파라미터에서 아무런 필터링이 없기 때문에 Path Traversal 취약점이 발생한다. @app.route('/admin', methods=['GET']) @key_required def admin(): ..

[Dreamhack] Command Injection Advanced

[Dreamhack] Command Injection Advanced 필요한 코드만 가져와서 봤다. url파라미터를 통해서 입력값을 받고 http문자열로 시작하는지 검사한다. http로 시작한다면 shell_exec함수를 통해서 curl명령어를 실행하고 그렇지 않다면 http only를 출력한다. 입력받은 주소를 md5해싱한 후 그 결과를 파일 이름으로 저장하고 curl명령어의 결과를 파일내용에 cache 디렉토리에 저장한다. 1~3주차 때 만들어서 호스팅한 서버를 입력해봤다. cache 디렉터리 하위에 저장된 것을 볼 수 있다. 링크를 누르니 단순 html만 띄워지는 것을 알 수 있다. 음 실험은 여기까지하고 위 코드를 보면 escapeshellcmd함수로 shell 메타 문자를 사용할 수 없게 했다...

728x90