• writeup

    Seccon 2019 – SPA

    Vue로 구성된 XSS 문제입니다.소스는 긴 편이지만, 취약한 부분이 보이지 않았기에문제에서 사용하는 jQuery 함수에 대해 검색해 보았고, 정답을 찾을 수 있었습니다. jQuery의 getJSON 함수는 인자로 전달되는 url에서 callback 파라미터가 ? 으로 지정되어 있을 때, ?을 jQuery34107409498085120296_1571575807022 와 같은 랜덤 문자열으로 치환하여 전송합니다.이는 jsonp 에 대응하기 위해서 존재하는 부분인데, 이러한 상황에서 jQuery 는 가져온 문자열을 스크립트로 해석하여 실행합니다.hash 를 통해, 서버에 전달되는…

  • writeup

    Seccon 2019 – fileserver

    플래그를 랜덤 이름의 디렉토리에 보관하고 있습니다.본 문제를 해결하기 위해서는, 먼저 %00을 이용하여 /tmp/flags/ 디렉토리를 리스팅해 폴더명을 확인하고, 정규식을 사용해 파일을 읽으면 됩니다. Index /tmp/flags Ruby의 Dir.glob 함수에서는, 인자로 전달된 문자열에 널 바이트가 포함되어 있으면, 널바이트를 포함하여 이전 문자를 모두 무시합니다.따라서 위와 같은 url을 호출하면 앞의 . 이 무시되므로, /tmp/flags 폴더를 리스팅 할 수 있게 됩니다. Read Flag Ruby의 Dir.glob 함수에서…

  • writeup

    Hitcon 2019 – bounty-pl33z

    hitcon 2019 에서 출제된 xss 문제로 알려진 풀이는 두가지입니다. Intended Solution 오렌지가 공개한 의도된 풀이로 --> 문자를 사용해 해결하는 방법입니다.다만 --> 를 문자열 직후에 넣는다면, -- 가 postfix 연산자로 해석되어 Invalid left-hand side expression in postfix operation 오류를 발생시키므로 crlf 등을 통해 개행 처리를 해 주어야 합니다.일반적인 화이트 스페이스는 필터링 되어 있지만, \u2028, \u2029 등을 통해 대체할 수 있습니다. 이외에…

  • writeup

    PwnThyBytes CTF – Baby sql is not baby anymore

    PHP의 session.upload_progress 에 관한 문제입니다.기본 상태에서 활성화 되어있는 session.upload_progress 옵션은, session_start 함수의 실행 없이 $_SESSION 변수가 설정될 수 있도록 합니다. 문제의 index.php 에서는 내부 변수들에 대해 필터링 과정을 거친 후, templates 폴더 내부의 스크립트를 참조하는 방식으로 구성됩니다. /templates/login.php 페이지 등은 최상단에서 isset($_SESSION) 구문으로 하여금, 페이지의 직접 참조를 방지하고 있습니다.index.php 페이지를 통해 참조될 때에는 session_start 로 인해 $_SESSION 가 설정된다는 점을…

  • writeup

    BSides Delhi CTF – Eval Me

    LD_PRELOAD + Imagick ffmpeg 을 통한 disable_functions bypass 문제입니다.자유롭게 PHP 코드 실행이 가능한 상태입니다. 대부분 필수 함수들이 필터링 되어 있지만putenv 사용이 가능하므로 LD_PRELOAD 에 모듈 탑재가 가능하고copy 함수를 사용해 컴파일된 모듈 파일을 복사할 수 있습니다. 위 코드를 통해 서버로 모듈을 업로드 하고 명령을 실행할 수 있습니다. file 함수를 사용해 결과를 확인할 수 있었습니다. 익스플로잇에 사용한 모듈의 소스코드는 다음과 같습니다.

  • writeup

    angstromCTF – Madlibbin

    python format string injection 문제이다. 강조된 문장에서 볼 수 있듯 args 변수에 request.args 를 대입하여 format 메소드의 인자로 이용하는데 request.args 부분은 조작이 불가능하지만, 대상 문자열은 마음대로 사용자의 입력대로 들어가므로 이를 이용해서, os.environ 을 읽어내면 해결되는 문제이다! 다만 format 함수의 대상이 되는 문자열의 중괄호 안에서 메소드 호출은 불가능하므로 메소드를 사용하지 않고 문제를 해결할 수 있어야 한다. os 모듈의 environ 속성에 환경변수가…

  • writeup

    angstromCTF – DOM Validator

    XSS 필터링 문제인데, <head> 태그에서 자바스크립트로 문서 내용을 해싱하여 비교 검증하는 특이한 방식을 사용했다. 시도하다 보니 필터링 로직이 복잡하여 짜여 있다는 것을 알게 되었는데, 본래 복잡해질수록 허점도 생기는 법 아니겠는가.. 여러가지 페이로드를 확인해보니 결국 먹히는 것이 나왔다. (3시간 정도 걸렸다)

  • writeup

    angstromCTF – no sequel 2

    이전 문제와 동일하다. 하지만 인증 우회에 그쳤던 것과 다르게, 이젠 실제 비밀번호를 요구한다. 정규식 쿼리를 이용하면 간단한데 길이를 먼저 확인하고 브루트 포싱을 해보면 금방 답이 나온다.

  • writeup

    angstromCTF – no sequel 1

    Express 로 구성된 서버에 소스가 주어진다. 상단에 monk instance 라고 적혀있는데, mongodb 를 사용했다는 것을 말하고 싶었으리라. 흔한 mongodb 취약점인데 위처럼 배열을 삽입해주면 not equal 비교를 통해 인증이 우회된다. 시도해보니 배열은 입력으로 받지 않는 모양이었지만 Content-Type을 수정하여 데이터를 json형태로 전송함으로써 인젝션에 성공하였다.