전체 글

전체 글

    Challenge old 38 (100)

    Challenge old 38 (100)

    일단 admin 넣어보는 거다 그렇지 그렇지... 이렇게 나와야지 코드를 보니 admin.php 가 숨겨져 있었고 그곳엔 로그가 있었다 (찍힌 admin은 훼이크) 필터링을 피해 무사히 admin을 로그에 찍는 것이 문제다! 다시보니 로그인 인젝션이 아니라 로그 인젝션이다 ^^ %00, %0a, %09, \n, +, 다 안된다 흠.. 되게 예전에 배웠던 건데 input 대신 textarea로 수정하여 첫 줄 필터링을 막아보쟈 Login 버튼을 누르고 로그창을 확인해보자 이렇게 하는 것 말고도, 프록시툴로 잡아서 직접 개행문자인 "0D 0A"를 입력하여 개행으로 필터링을 피할 수도 있나보다~

    *Challenge old 37 (250)

    *Challenge old 37 (250)

    초기화면이다. 파일을 따로 선택하지 않고 제출 버튼을 누르면 아래와 같이 tmp 파일이 더 만들어진다 파일을 선택하고 넣으면(0125영단어...) 파일명이 목록에 추가된다 먼저 소스 코들 보자 view-source 개길다

    Challenge old 36 (200)

    Challenge old 36 (200)

    이건 전혀 감이 안와서 흠.. vi로 편집 중에 강종되고 코드가 사라졌다? 일단 언급된 index.php! 그대로당 "유닉스 환경에서 vi 편집 중 강제 종료가 되면 swap 파일이 생성된다" 는 지식을 몰랐다 ㅎ 파일이 다운로드 됐는데 헥사 에디터로 파일을 열어보니 마지막에 플래그가 있었다!

    Challenge old 33 (200)

    Challenge old 33 (200)

    코드는 간단하다 시키는 대로 해봤다 얌전히 Next를 눌러봤다 아 이렇게 나온다 이거지? lv2라고 친절하게 나와있다 이번에도 시키는대로 post 방식의 폼을 작성해준다 역시 Next가 뜨고 다음으로.. 이번엔, get 방식으로 내 IP를! 다음 코드! 이를 md5로 인크립트하고 get에 넣즈아 하고 호기롭게 넣었는데 안됐닼 알고보니 time()은 스크립트 시작부터 지금까지 흐른 시간이라거.. 그래서 현재 시간보다 더 나중 시간을 미리 복호화해놓고 기다렸는데 계속 안됐다... 알고보니 대문자라서; 소문자로 바꾸고 타이밍 맞춰 새로고침했더니 됐다! 여기서 10분은 쓴 것 같닿;; 다음은 또 md5? 먼저 post 부터 해주자 다음은 쿠키~ 마지막으로 imget 파라미터! Next가 생겼따 다음 페이지 이 ..

    Challenge old 32 (150)

    Challenge old 32 (150)

    메인화면엔 1부터 1000번대까지 랭크가 되어있고, 그 중 하나를 클릭하면 내가 이미 투표하였다는 얼럿이 뜬다 정작 누굴 클릭했는지 까먹은게 함정 어쨌든 다른 순위에 비해서 1등이 매우 화려하게 디자인 되어있는 걸로 봐서는 나를 1등으로 해야할 것 같다 일단, 쿠키값을 삭제하고 나를 추천해보자.. 한 번 투표하고 799등에 자리잡았다 다른 분들은 멋지게 코드를 작성하던데 나는 노가다를 하기로 했다 쿠키를 생성하지 않게 하고 49번 클릭한 상황이다 감격의 순간..

    [미완] Challenge old 31 (150)

    [미완] Challenge old 31 (150)

    rand()로 10000부터 10100 사이 숫자로 port에 저장하고 fsockopen()으로 소켓에 연결을 하는데.. 포트 번호가 안맞아서 Connection refused라고 뜨네요 먼저, $socket부분 먼저 보면 $socket = fsockopen($_GET['server'],$port,$errno,$errstr,3) or die("error : {$errstr}"); 함수의 파라미터가 순서대로 hostname, port, errno, errstr, timeout이고, 실패하면 에러 메시지를 출력하는 함수입니당 지금은 오류가 떠서 에러 메시지가 떴고, get 방식으로 server라는 파라미터명에 제 ip가 붙었어요 그럼 포트 번호에 맞게 설정을 해줘봅시다 포트 포워딩을 위해서, 제가 쓰는 sk..

    Challenge old 26 (100)

    Challenge old 26 (100)

    id가 admin이면 풀리지만, 필터링이 되어 있어서 admin 그대로 넣으면 안된다 그대신 admin을 URL 인코딩해서 넣어보자 이렇게 넣어봤더니 admin으로 자동 변환되어 no!가 그대로 떴다 그래서 한 번 더 인코딩을 해봤다

    Challenge old 25 (150)

    Challenge old 25 (150)

    메인 화면은 file=hello라서, hello 대신 flag를 넣어봤다 code에 있다고 한다.. 이번엔 index를 넣어보자 아무 것도 안 뜬다 FLAG is in the code라고 하니, PHP Wrapper를 사용해보자 Wrapper 종류는 여러가지가 있지만 이 문제에서는 필터를 사용한다 (이외는 다음 링크 참고: https://opentutorials.org/module/4291/26819) php://filter wrapper는 다양한 I/O stream을 다루는데 사용하는 wrapper로, 코드 내부를 열람할 수 있고 형식은 다음과 같다 ?pages=php://filter/convert.base64-encode/resource= 그럼 이를 문제에 적용해보면, pages 대신 file, re..

    [미완] Challenge old 21 (250)

    [미완] Challenge old 21 (250)

    BLIND SQL INJECTION id : pw : Result : form은 get 메소드로 되어 있네요

    Challenge old 20 (200)

    Challenge old 20 (200)

    뭐 알 수 없는 input 박스들이 있고 소스를 보면 다른 건 별거 없고, submit 버튼을 클릭하면 ck()가 작동된당 ck 함수는 다음과 같다 일단, 코드에 나 오는 id, cmt, captcha는 메인 화면에서 볼 수 있는 input 박스들의 이름이다 마지막 if문을 보면, captcha.value가 captcha_.value와 같지 않을 때 return 된다 그거랑 별개로 코드에 나와있는 value가 있는데, 넣어보면 아무 일도 일어나지 않는다. 그냥 쓸데 없는 건가 그리고 captcha 박스 옆의 값을 그대로 입력해보면, 느리다고 한다.. 지금 보니 time limit이 2초닼 그러니 이 값을 콘솔창에 2초 내에 넣어주자!

    Challenge old 19 (150)

    Challenge old 19 (150)

    메인 화면은 id를 제출하는 것 그대로 제출을 눌러보면 내가 admin이 아니라고 한다.. 그 권한을 얻는게 목표일 것 같다 input 박스는 최대 길이가 5밖에 안되어서 admin or 1=1 같은 장난을 못친다 이번엔 root로 login 해봤다 hello root라는 문구와 함께 logout 버튼이 뜬다 logout 버튼을 눌러보면 아무 일도 안 일어난다 소스를 보면 클릭 시 ?logout=1이 URL 뒤에 붙는다는데 아주 짧게 보이고 다시 없어진다 쿠키를 삭제해야 다시 돌아갈 수 있다 하지만, 어쨌든!! admin으로 로그인해야 하기 때문에 로그인 화면에서 admin을 어떻게 칠까 하다보니 get방식으로 id를 넘기는 방식으로 해결할 수 있을 것 같다 이름이 id니까 ?id=a%00dmin, 이런..

    Challenge old 15 (50)

    Challenge old 15 (50)

    들어가자마자 Access_Denied가 얼럿으로 뜬다 js 수정을 위해 burp suite로 잡아봤다! 참고로 Server Intercept 부분을 봐야 한다 뒤에 ?getFlag를 붙이라니 붙여봤다