본문 바로가기

보안공부

(92)
SolveMe URL filtering 풀이 오늘은 URL filtering 문제를 풀어보자. 이 문제에서는 다음과 같은 코드를 주었다. 우리는 GET 메소드를 통해 do_you_want_flag로 yes라는 값을 보내야 하기에 /?do_you_want_flag=yes 라는 페이로드와 함께 올려야 하는데 하지만 필터에 의해 다음과 같이 필터된다.하지만, 먼저 필터에 들어가기 전에 다음과 같은 코드를 확인할 수 있을것이다.$url_query = parse_url($url, PHP_URL_QUERY); 이 함수(parse_url)에는 취약점이 있다.이 취약점에 대한 자세한 정보는 http://skysec.top/2017/12/15/parse-url%E5%87%BD%E6%95%B0%E5%B0%8F%E8%AE%B0/ 에서 확인할 수 있다. 따라서 /를 하..
webhacking.kr 47번 문제 풀이 오늘은 47번 문제를 풀어보자. 문제를 읽어보니 메일 헤더 인젝션을 통해 플래그를 얻는것 같다. 이 문제에서 제공해준 코드를 읽어보니 다음과 같았다. 받아온 값에 From: 을 붙혀 아무런 필터 없이 그대로 메일을 전송하는 것이다.이렇게 된다면 참조자(cc)를 넣었을때도 메일이 정상적으로 발송된다는 결과가 나온다.따라서 데이터 교환을 수정하여 참조자(cc)를 추가하여 전송해보자. 원래는 다음과 같이 값이 넘어간다. 하지만 이제 저 값에 Cc를 추가해서 보내보자. 위와 같이 전송하니 답이 나왔다. WEBHACKING.KR 47번 문제 클리어!
webhacking.kr 33번 문제 풀이 오늘은 33번 문제를 풀어보자. 문제를 열자마자 다음과 같은 화면이 반겨준다. 제공해준 코드를 확인해보니 GET메소드을 통해 넘겨받은 get이 hehe이면 다음으로 넘겨주는것 같다. 그래서 문제가 코드가 요구하는대로 했더니 문제는 해결되었다. 2단계 문제가 나왔다. 주어진 코드를 확인했더니 이번에는 post 메소드를 통해 post에 hehe를, post2에 hehe2를 담아서 보내라 한다. JS로 가상의 폼을 만들어 전송할 수 있지만 귀찮으니까 HTML 수정을 감이해 보내보자. 위처럼 코드를 작성하여 Submit 버튼을 누르니 풀렸다. Next를 눌렀더니 3단계가 나왔다. 제공해준 코드를 확인해보니 get 메소드를 통해 myip에 내 아이피 주소를 담아 전송해주면 되는것 같다. 따라서 요구대로 해줬더니 ..
webhacking.kr 32번 문제 풀이 오늘은 32번 문제를 풀어보자. 처음 들어갔을 때 내 이름이 없었다.그래서 아래로 내려보니 Join 버튼이 있었다. 이 버튼을 누르니 내 닉네임이 팝업창으로 뜨며 랭킹에 이름이 올라갔다. 그리고 랭킹에 올라간 내 이름을 누르니 0에서 1로 올라갔다. 그래서 뭔가 100 채우면 인증될것 같아서 한번 더 눌러보았더니 다음과 같은 팝업이 뜨며 값이 올라가지 않았다. 혹시나 하는 마음에 쿠키값을 확인했더니 못보던 값을 찾았다. 그래서 이 못보던 값을 삭제해주고 다시 눌러주니 값이 증가했다. 두번 해보고 찍어서 3인거에요 읍읍 코드를 확인해보니 hit값에 있는 닉네임의 값의 숫자를 올려주는 모양이다.그래서 vote_check값을 제거한 후 /challenge/codeing/code5.html?hit=jeongjy..
webhacking.kr 27번 문제 풀이 오늘은 27번 문제를 풀어보자. 이 페이지의 코드를 확인해 봤을떄 필터를 한번 거친 후 넘겨받은 no를 db 쿼리문에 바로 넣어 처리하는 것 같았다.
xcz.kr 20번 문제 풀이 오늘은 xcz.kr의 보너스 문제인 20번을 풀어보자. 이 사진이 바이너리인가 보다. 다운받아보자. 딱히 수상한게 없어서 이것저것 뒤져보던 중 플래그를 찾았다. XCZ.KR 20번 문제 클리어!
webhacking.kr 38번 문제 풀이 오늘은 38번 문제를 풀어보자. 흠 Admin이라는게 참 탐나보여 눌러보니 로그를 확인하는곳으로 추정되는 페이지로 이동되었다. 저 페이지의 코드를 둘러보던 중 admin이 힌트라는 주석을 찾았다. 그래서 나는 무턱대고 admin을 입력했다. 당연히 될리가 없다. 그래서 아무 글자나 치고 테스트해보니 로그에는 IP:내용 의 형태로 입력되는것 같다. 그리고 admin의 앞과 뒤에 문자가 있으면 필터링하지 않는것 같다. 그러면 admin이라는 단어를 만들어주기 위해서는 admin\n이 되어야 할 것이라고 예상했다. 이렇게 치고 Admin을 눌러 들어가니 놀랍게도 문제가 해결되었다. WEBHACKING.KR 38번 문제 클리어!
webhacking.kr 42번 문제 풀이 오늘은 42번 문제를 풀어보자.저 압축파일 주세요~싫어욧! 그래서 test.txt를 눌렀더니 test.txt는 정상적으로 불러온다. 그런데 어찌 링크가 수상하다. =가 있는걸 봐서 Base64임이 분명하다. BINGO! 따라서 test.zip을 받으려면 Base64로 인코딩하여 요청해야한다고 생각했다. 인코딩으로 나온 결과값을 보냈더니 test.zip파일을 받을 수 있었다. 하지만 이 파일에는 비밀번호가 걸려있었는데, 이 문제의 index에 주석으로 힌트가 있었는데... 이 파일의 비밀번호는 숫자로만 이루어져있습니다? 그럼 상용 브루트포스 프로그램을 사용해봅시다.돌린지 얼마 되지 않아 비밀번호가 852라는 결과를 안겨줍니다. 이 값으로 압축되어있던 readme를 풀었고, 그 안에는 링크가 하나 있었다. ..