때로는 무언가를 다운로드 할 때 링크가 파일에 대한 직접적인 링크가 아니라는 것을 알았습니다.
예를 들어 다음 은 PDF 파일을 다운로드하는 링크입니다.
파일에 대한 실제 링크 (예 : http : //*.PDF)를 파악 / 해킹하는 방법이 궁금합니다.
직접 링크를 표시하지 않는 그러한 유사한 기술의 이름은 무엇입니까? Wikipedia와 같은 참고 문헌은?
때로는 무언가를 다운로드 할 때 링크가 파일에 대한 직접적인 링크가 아니라는 것을 알았습니다.
예를 들어 다음 은 PDF 파일을 다운로드하는 링크입니다.
파일에 대한 실제 링크 (예 : http : //*.PDF)를 파악 / 해킹하는 방법이 궁금합니다.
직접 링크를 표시하지 않는 그러한 유사한 기술의 이름은 무엇입니까? Wikipedia와 같은 참고 문헌은?
답변:
예, 때때로 .
일반적으로 발생하는 두 가지가 있습니다. 귀하의 링크가 더 이상 작동하지 않으므로이 경우 실제 시나리오가 확실하지 않으므로 다른 링크에 대해 요약하겠습니다.
HTTP 리디렉션
이것이 당신이 보는 것입니다 Bit.ly
다른 서비스입니다. 그러면 HTTP 리디렉션 응답을 제공하는 것입니다. http://bit.ly/oH3410 을 방문 하면 실제 URL로 리디렉션됩니다. 때로는 한 URL이 다른 URL로 리디렉션됩니다. URL을 http://web-sniffer.net/에 꽂 거나 [curl][1] -I http://bit.ly/oH3410
새 위치를 가리키는 301을 반환하면이 문제가 발생합니다.
따라서 HTTP 리디렉션을 처리하려면 300에서 응답을 얻지 않을 때까지 HTTP HEAD 요청을 반복하면됩니다 (200을 얻는 것이 좋습니다). 루프에서 리디렉션되어 종료되지 않을 수 있습니다. CURL 또는 모든 HTTP 도구를 사용하여이를 수행 할 수 있습니다.
다운로더 페이지
이것이 대부분의 다운로드 사이트가 사용하는 것입니다. 다운로드 링크를 클릭하면 많은 광고가있는 페이지로 이동하여 "다운로드가 곧 시작됩니다"라고 표시됩니다. [ 예 ]. 이것들을 사용하면 URL에서 실제 직접 링크를 구문 분석 할 수는 있지만 사이트마다 다르며 대부분의 사이트에는 URL을 우회하는 것을 막기 위해 포함되지 않습니다. 이는 meta http-equiv="refresh"
헤더 의 태그 또는 JavaScript (가장 일반적) 를 통해 수행됩니다 . JS에는 일반적으로 헤더 폴 백이 있습니다.
그래도 해결책이 있습니다. 다운로드 페이지에서 소스를 보면 일반적으로<meta http-equiv="refresh">
<noscript>
해당 속성이 태그 (일반적으로 태그)가 URL
실제 다운로드를 가리 킵니다. 따라서 CURL (또는 다른 HTTP 도구)을 사용하여 페이지를 다운로드하고 구문 분석 한 후 해당 값을 가져 오십시오. 사이트가 실제로 불쾌 해지기를 원한다면 사이트를 제외시킬 수 있으므로 파일을 다운로드하려면 JavaScript가 필요합니다.
다운로드로 연결되는 JavaScript 블록이있을 수 있습니다. 난독 처리되었거나 다른 URL에서 연결되었을 수 있습니다. 마일리지는 파싱을 시도하는 것과 다를 수 있습니다. 페이지에 "직접 링크"가있을 수도 있습니다. 그것을 찾기 위해 몇 가지 기술을 시도 할 수 있지만 다시 JavaScript를 통해 혼란 스러울 수 있거나 모두 함께 누락 될 수 있습니다.
가능하지 않을 수 있습니다. 사이트는 파일에 도달하기 전에 수백 개의 리디렉션을 통해 사용자를 피드 할 수 있습니다.
또한 자바 스크립트를 사용하여 서버에 제공된 URL을 기반으로 링크를 제공 할 수 있습니다.
사이트를 스크립팅하고 특정 명령 (URL이 명령을 전달할 수 있음)을 받으면 리디렉션하지 않고 PDF 파일 (또는 다른 파일)을 반환 할 수 있습니다. 서버 측에 있으며 사이트 코딩 방법에 따라 다릅니다. 실제로 서버에서 해당 링크를 요청하지 않으면 파일을 얻는 방법을 알 수 없을 것입니다. 때로는 직접 URL을 알고 있어도 직접 링크에 액세스 할 수있는 권한이 없을 수 있습니다. 일부 사이트는 직접 링크가 작동하지 않도록 코딩되었습니다.
이러한 리디렉션 링크는 종종 세션 상태와 관련이 있습니다. 그들은 당신에게 링크를 제공하기 전에 세션 로그인을 기반으로 몇 가지 개인 정보 확인을 수행합니다-리소스에 대한 액세스 권한 없음 = 리소스에 대한 링크 액세스 권한 없음. 웹 루트 외부에있는 파일 / 자원에 대한 액세스를 제공하고 직접 URL을 통해 사용할 수있는 것이 아니라 앱이 요청자에게 다시 스트리밍하는 데 사용할 수 있습니다. 그러나 당신의 privs가 허락한다면.
두 가지 예가 여기 있습니다. 추가 URL 구문을 추가하는 'mkoenig'문자열을 기반으로 다른 URL로 리디렉션됩니다. 리디렉션은 서버 측 코딩에서 수행되므로 볼 수 없거나 최소한 안됩니다. 그런 다음 '웹 파일'로 이동하면 나열된 파일은 교사가 공개 한 파일 일뿐입니다. 그녀는 당신이 얻을 수없는 파일과 다른 파일을 가지고있을 수 있습니다. 그것은 반환되거나 반환되지 않는 것과 관련하여 서버 측 코딩에서도 처리됩니다.
서버를 해킹하거나 서버 측 소스 코드에 액세스하지 않으면 실제 링크를 얻을 수 있다고 생각하지 않으며, 가능한 경우에도 세션 개인이 서버에 액세스 권한을 부여하지 않으면 도움이되지 않을 수 있습니다 .
그렉
위와 같이 불가능합니다. 이와 같은 링크를위한 브라우저를 포함하려면 VM을 실행하거나 Sandboxie 사본을 가져 오는 것이 좋습니다.
편집하다
사용중인 운영 체제를 모르는 경우 여기에 일반적인 대답을 드리겠습니다.
VM은 가상 머신의 줄임말입니다. 기본적으로 컴퓨터 내부에서 실행되는 소프트웨어로 작성된 컴퓨터입니다. 가상 머신에는 자체 운영 체제 및 브라우저가 있습니다. 여전히 컴퓨터의 인터넷과 하드 다이빙을 사용하지만 OS의 관점과는 별개의 시스템입니다. 따라서 스크래치 종이처럼 편리합니다. VM 내부에서 발생하는 것은 실제 시스템에 영향을 미치지 않습니다.
Virtualbox 는 Windows를 사용하지 않는 한 VM을 위해 권장하는 소프트웨어이며 Virtual PC를 권장합니다.
Sandboxie 는 일종의 VM과 비슷하지만 특정 응용 프로그램 만 격리합니다. 브라우저 사본을 실행하도록 지시 할 수 있으며 브라우저에서 수행하는 모든 파일 또는 조치는 기본적으로 임시 폴더로 경로 재 지정됩니다. 따라서 바이러스를 다운로드하려고하면 나머지 시스템에서 격리 된 임시 폴더로 리디렉션됩니다. VM만큼 강력하지는 않지만 적은 CPU / 메모리를 사용하며 더 빠르고 편리합니다.
Sandboxie를 먼저 시도합니다. 더 작은 학습 곡선입니다.
이것의 결코 실제 링크를 알아낼 수있다.
서버는 일부 WWW 다시 쓰기 (예 : 아파치 서버의 경우)를 사용하여 파일 요청을 처리하므로 예를 들어 page로 www.example.com/13-this-site-has-nice-page-name.html
이동할 수 있지만 실제로는 다음과 같은 매개 변수를 사용하여 일부 PHP 파일에 액세스 할 수 있습니다.www.example.com/site_handler.php?UID=13
pdf 파일에 액세스하더라도 서버 자체에 리디렉션이있을 수 있습니다.
처리기를 사용하여 파일을 다운로드하는 경우 다운로드 처리기 인 페이지로 이동할 수 있으므로 좀 더 까다로울 수 있습니다. www.example.com?file_downloader.php?param1=7683¶m2=jld8ijn, etc...
.이 경우 액세스하려는 스크립트가 하나의 헤더 (예 : pdf 파일)), 그러나 실제로는 php 파일입니다.
결론적으로 서버와 스크립트가 어떻게 구성되어 있는지 알 수 없으므로 실제처럼 실제 주소를 알 수 없습니다.
웹 서버에 요청을 보내면 (링크 클릭) 서버는 여러 가지 다른 응답을 보낼 수 있습니다. 일반적인 예는 404 (페이지를 찾을 수 없음), 403 (금지됨) 또는 500 (서버 오류)입니다. 아마도 가장 일반적인 응답 코드는 200 (Ok)이지만 일반적으로보고 싶은 페이지가 동반되기 때문에 결코 보지 못할 것입니다.
여기에는 301과 302 코드가 있습니다. 코드 301과 302는 리디렉션 코드이며 브라우저에서 원하는 응답이 다른 위치로 이동했음을 알려줍니다. 그들 사이의 주요 차이점은 브라우저가 물건을 캐시하는 방법입니다. 301 코드는 "영구적으로 이동 함"을 의미하며, 다음에 원래 링크를 방문하려고하면 브라우저가 페이지가 이동하여 새 위치로 직접 이동했음을 기억할 수 있습니다. 302는 "다른 곳에서 발견됨"을 의미하며 브라우저가 일시적으로 만 사용해야하는 링크를 제공합니다.
링크를 확인하는 프로그램을 작성하는 것이 가능해야하며 30x 응답을 계속 받으면 응답이 200이 될 때까지 응답을 따릅니다.이 시점에서 컨텐츠를 다운로드하는 대신 링크를 표시해야합니다.
불행히도, 그것보다 더 복잡합니다. HTML 페이지는 다음과 같은 페이지 헤드 섹션의 메타 태그를 사용하여 새 위치로 리디렉션 할 수도 있습니다 <meta http-equiv="refresh" content="0;url=NEW PAGE URL" />
. 따라서 이러한 프로그램은 마지막 리디렉션에 도달하기 위해 html을 완전히 구문 분석해야합니다.
또한 페이지가 자바 스크립트를 사용하여 더 리디렉션 될 수 있으며 자바 스크립트가 난독 화 될 수 있습니다. 이제 우리의 가상 프로그램도 자바 스크립트를 이해해야합니다. 이 시점에서 우리는 모든 기능을 갖춘 웹 브라우저를 가지고 있습니다. 페이지를 실제로 화면에 렌더링하는 데 대한 약간의 세부 사항이 누락되었지만 프로그램에는 수반되는 모든 보안 문제를 포함하여 완전한 웹 브라우저에 필요한 거의 모든 것이 있습니다. 처음에 링크를 정상적으로 클릭했을 때보 다 더 이상 나아지지 않습니다.
Windows 가정 : Fiddler Web Debugging Proxy 설치 , 활성화하십시오. 그런 다음 시작 URL로 이동하여 Fiddler의 왼쪽 창에서 모든 리디렉션을 확인하십시오. 오른쪽 분할 창에서 "요청 헤더"및 "응답 헤더"를 표시하도록 탭을 변경하십시오. 나는 그것을 정확히 그 목적으로 성공적으로 사용했습니다.
반면 요청에 올바른 리퍼러가 없거나 다른 제한 사항이 누락되어 직접 찾아 보면 "최종"URL 만 동일한 방식으로 작동하지 않을 수 있습니다.
그러나 Fiddler에서 사용자 지정 헤더를 사용하여 사용자 지정 요청을 보낼 수도 있습니다. "Request Builder"탭을 참조하십시오.
링크가 사용자를 리디렉션하는 위치를 확인하려면 http://longurl.org/ 를 사용 하십시오 . 단축 된 URL에 특히 유용합니다. 스크립트 다운로드 등에는 사용되지 않습니다.
Firefox를 사용하는 RequestPolicy
경우 다른 도메인으로 리디렉션 될 때마다 일시 중지되고 권한을 요청 하는 애드온을 사용할 수 있습니다 . 다른 도메인으로 이동하지 않는 리디렉션을 찾으려면 작동하지 않지만 =) 모르는 다른 Firefox Addon이 있다고 확신합니다.
https://www.requestpolicy.com/
기본적으로 모든 도메인 간 이미지, 스크립트, CSS 및 리디렉션을 차단하므로 CDN (콘텐츠 배포 네트워크)을 사용하는 많은 사이트가 손상 될 수 있습니다. 따라서 새로운 웹 사이트를 방문 할 때마다 몇 가지 추가 단계를 수행해야하는 경우가 아니라면 리디렉션이 어디로 가고 있는지 항상 알고 싶다면 ebst 선택이 아닙니다.
(그동안) 리디렉션 추적에 도움이되는 훌륭한 온라인 도구가 있습니다.
그리고 Chrome을위한 멋진 확장 기능이 있습니다.
edit
내가 한 방법에 대한 마크 다운 소스를 보려면 클릭 하십시오.