IP를 제한하는 투표 웹사이트 부정 행위와 관련하여 이 방법은 원격 IP를 모니터링하기 위해 투표 웹사이트의 일부 허점을 이용합니다. HTTP는 TCP 위의 7번째 계층이므로 불가능합니다. 최근에 실제 IP 주소를 위조한 사람이 투표 소프트웨어가 필요했습니다. 최근에 이 투표 웹사이트를 조사해 보니 이 투표 웹사이트에는 인증 코드가 있고 각 IP는 하나의 투표로 제한되어 있는 것 같습니다. 먼저 인증 코드를 연구했습니다.
이 투표 웹사이트의 인증 코드는 처음에는 매우 간단하며, 표준 위치에 표준 4개의 숫자가 있어서 식별하기 쉽습니다. 나중에는 자릿수가 꼭 확실하지도 않고, 문자도 있고, 위치도 반드시 위아래가 아닌 정도로 바뀌었습니다. 이제는 인증코드 인식이 소프트웨어적으로도 어려울 뿐만 아니라, 수동 식별용. 산과 강에는 나갈 길이 없지만, 어두운 버드나무와 밝은 꽃이 있는 또 다른 마을이 있습니다. 자세한 내용은 다음 단락을 참조하세요!
지속적인 분석과 연구 끝에 그의 인증 코드에 허점이 있음을 발견했습니다. 이 인증 코드는 더 이상 코드를 식별하거나 확인할 필요가 없습니다. 투표 옵션 페이지에서는 확인 코드가 비어 있는지 확인하는 js 코드를 설정하기 때문에 직접 우회했습니다. js 코드는 클라이언트에서 실행되므로 일반적으로 이러한 종류의 JS 확인은 0입니다. 투표 웹사이트로서 이것만 사용하고 있습니다. 투표 처리 동적 페이지에서 인증 코드가 비어 있는지 확인하지 않는 확인 방법은 실제로 보기에 좋지 않으며 웹 사이트의 보안에 큰 위험을 가져옵니다.
인증코드 문제와 관련하여 크래킹 방법에 대해 알아봤습니다. 투표 시 인증코드 파일에 직접 접근하지 않는 한, 동적 페이지에서는 인증코드가 비어 있는지 확인하지 않기 때문입니다. 인증 코드가 비어 있으므로 게시할 때 인증 코드 매개변수가 비어 있어야 합니다.
그리고 또 다른 문제는 이 투표 웹사이트가 IP를 확인하고 한 번의 투표만 허용하도록 제한한다는 것입니다. 이는 프록시를 사용하거나 지속적으로 연결을 끊고 전화를 걸어야만 가능합니다. 정말 다른 좋은 방법이 생각나지 않더군요. 나중에 이 친구가 이 웹사이트에서 아주 빨리 투표할 수 있는 프로그램을 찾았는데, 이 프로그램의 IP 솔루션이 너무 궁금해서 친구에게 분석을 부탁했습니다.
우선 이 투표 소프트웨어를 패킷 캡쳐로 공부했습니다. 준비가 된 후 투표 프로그램을 열었고 "새로 고침! 프롬프트 소프트웨어 충돌이 발생했습니다. 하하, 그럼 종료한 후 일부를 끌 것입니다." 모든 프로그램을 다 하다가 패킷 캡처 프로그램이 하나만 남아서 충돌이 발생하더군요. ㅎㅎ 사실 이 프로그램은 누군가 자신의 소프트웨어를 분석할 수도 있다는 사실을 알고 있었던 것으로 밝혀졌습니다. 프로그램이 있으면 분석하고, 패킷이 캡처되면 실행을 거부합니다. 하하, 현재 그가 제한하는 소프트웨어에는 쉬운 언어 프로그래밍 소프트웨어와 WSockExpert_Cn 패킷 캡처 소프트웨어가 포함되어 있는 것으로 알고 있습니다. 하하, Yi Language를 끄고 WSockExpert_Cn 이름을 변경하고 소프트웨어 자체 보안 테스트를 성공적으로 통과하여 성공적으로 실행했습니다.
다음은 내가 사용하는 동안 그가 투표한 데이터 패킷입니다:
POST /vote/view.php?sid=33act=vote HTTP/1.1 Accept: */* Referer: http://www.qdnfy.gov.cn/vote/vote.php Content-Type: application/x-www-form-urlencoded X-Forwarded-For: 218.20.218.200 CLIENT_IP: 218.20.218.200 VIA: 218.20.218.200 REMOTE_ADDR: 218.20.218.200 Accept-Language: zh-cn Accept-Encoding: text User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506) Host: www.qdnfy.gov.cn Cookie: PHPSESSID=pldjnb6scereodjm5niqb9q990 Content-Length: 49 Connection: Close
-Forwarded-For 이 http 헤더 매개변수와 IP, 하하, 이 항목을 찾았습니다. 매개변수에 대한 배경지식이 있을 겁니다. 하하, Baidu에서 검색해 봅시다.
다음은 바이두에서 설명하는 글입니다. 잘 설명되어 있으니 한 번 보세요.
IP를 위조하기 위해 HTTP 헤더의 X-Forwarded-For 필드 위조 X-Forwarded-For의 원리를 연구한 것은 이번이 처음입니다. Forwarded-For: 클라이언트, 즉 HTTP 요청자의 실제 IP를 나타내는 약어 XFF 헤더입니다. 이 항목은 HTTP 프록시 또는 로드 밸런싱 서버를 전달할 때만 추가됩니다.
RFC에 정의된 표준 요청 헤더 정보가 아닙니다. 이 항목에 대한 자세한 소개는 Squid 캐시 프록시 서버 개발 문서에서 확인할 수 있습니다.
표준 형식은 다음과 같습니다.
헤더 정보는 여러 개 있을 수 있으며, 첫 번째 항목은 실제 클라이언트 IP이고 나머지는 쉼표로 구분됩니다. 통과한 프록시 또는 로드 밸런싱 IP 주소는 여러 개를 통과한 후에 나타납니다.
wiki의 X-Forwarded-For 설명 http://en.wikipedia.org/wiki/X-Forwarded-For 분석:
클라이언트 IP를 위조하려고 하므로 먼저 클라이언트 IP 주소를 일반적으로 얻는 방법을 살펴보세요(예: PHP 사용). 이 코드는 대부분의 웹사이트에서 이 코드를 사용할 수 있습니다.
$user_IP = ($_SERVER["HTTP_VIA"]) ? //是否使用了代理 $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; //获取失败则从REMOTE_ADDR获取 $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; ?>
먼저 HTTP_VIA 헤더가 있는지 확인합니다. HTTP_VIA 헤더는 프록시 서버가 사용되는지 여부를 나타냅니다. 그렇지 않은 경우 REMOTE_ADDR 필드에서 클라이언트의 IP 주소를 가져옵니다. X-Forwarded 필드에서 클라이언트 IP 주소 -클라이언트 IP를 얻으려면 Baidu 코드에서 오는 프로그래머가 많을 것입니다. ASP는
그럼 테스트해 보겠습니다.
서버 코드://输出HTTP_X_FORWARDED_FOR
echo "HTTP_X_FORWARDED_FOR:".$_SERVER["HTTP_X_FORWARDED_FOR"];
//输出REMOTE_ADDR echo "REMOTE_ADDR:". $_SERVER["REMOTE_ADDR"];
?>
얻어진 클라이언트 IP 주소가 실제 주소와 다른 것을 확인할 수 있습니다.
따라서 웹사이트가 X-Forwarded-For에서 클라이언트 IP 주소를 결정하는 경우 이 논리적 허점을 사용하여 투표를 늘릴 수 있습니다.
IP 주소를 제한하는 투표 웹사이트 부정 행위의 HTML 구현과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!