>  기사  >  웹 프론트엔드  >  HTML을 사용하여 IP_HTML/Xhtml_Web 페이지 생성을 제한하는 투표 웹 사이트 부정 행위 구현

HTML을 사용하여 IP_HTML/Xhtml_Web 페이지 생성을 제한하는 투표 웹 사이트 부정 행위 구현

WBOY
WBOY원래의
2016-05-16 16:36:421528검색

IP를 제한하는 투표 웹사이트 부정 행위와 관련하여 이 방법은 원격 IP를 모니터링하기 위해 투표 웹사이트의 일부 허점을 이용합니다. HTTP는 TCP 위의 7번째 계층이므로 불가능합니다. 최근에 실제 IP 주소를 위조한 사람이 투표 소프트웨어가 필요했습니다. 최근에 이 투표 웹사이트를 조사해 보니 이 투표 웹사이트에는 인증 코드가 있고 각 IP는 하나의 투표로 제한되어 있는 것 같습니다. 먼저 인증 코드를 연구했습니다.

이 투표 웹사이트의 인증 코드는 처음에는 매우 간단하며 표준 위치에 표준 4자리 숫자가 있어 식별하기 쉽습니다. 나중에는 숫자가 꼭 같지는 않고 글자도 있고, 위치도 반드시 위 아래가 아닌 정도로 바뀌었습니다. 이제 인증코드 인식은 소프트웨어 뿐만 아니라, 컴퓨터에서도 어렵습니다. 수동 인식. 산과 강에는 나갈 길이 없지만, 어두운 버드나무와 밝은 꽃이 있는 또 다른 마을이 있습니다. 자세한 내용은 다음 단락을 참조하세요!

지속적인 분석과 연구 끝에 그의 인증 코드에 허점이 있음을 발견했습니다. 이 인증 코드는 직접 식별하거나 확인할 필요가 없습니다. 왜냐하면 그는 투표 옵션 페이지에만 있었기 때문입니다. 검증 코드가 비어 있는지 확인하는 js 코드는 클라이언트에서 실행됩니다. 일반적으로 이러한 종류의 JS 검증은 0입니다. 투표 웹사이트로서는 이러한 인증 방식만 사용합니다. 이런 방식으로 투표 처리 동적 페이지에서는 인증 코드가 비어 있는지 여부를 확인하지 않으며 이는 정말 좋지 않으며 보안에 큰 위험을 초래합니다. 웹사이트의.

인증코드 문제와 관련해 크래킹 방법에 대해 알아봤습니다. 투표 시 인증코드 파일에 직접 접근하지 않는 한, 그 동적 페이지에서는 인증코드 여부를 확인하지 않기 때문에 인증코드가 비어 있게 됩니다. 게시할 때 인증 코드 매개변수를 비워두기만 하면 됩니다.

또 다른 문제는 투표 웹사이트가 IP를 확인하고 한 번의 투표만 허용하도록 제한한다는 것입니다. 이는 프록시를 사용하거나 지속적으로 연결을 끊고 전화를 걸어야 가능합니다. 정말 다른 좋은 방법이 생각나지 않더군요. 나중에 이 친구가 이 웹사이트에서 아주 빨리 투표할 수 있는 프로그램을 찾았는데, 이 프로그램의 IP 솔루션이 너무 궁금해서 친구에게 분석을 부탁했습니다.

우선 이 투표 소프트웨어를 패킷 캡처로 공부했습니다. 준비가 된 후 투표 프로그램을 열고 "새로 고침! 소프트웨어 충돌 메시지가 표시됩니다. 하하, 그러면 일부 프로그램을 종료하겠습니다." 종료했는데도 패킷 캡처 프로그램이 하나만 남아서 계속 충돌이 발생하더군요. ㅎㅎ 알고보니 이 프로그램은 실제로 누군가가 자신의 소프트웨어를 분석할 수도 있다는 사실을 알고 있었고, 프로세스명까지 순회하여 의심스러운 프로그램이 있는지 확인까지 했습니다. .. 그것을 분석하거나 패킷을 캡처하는 프로그램이 있으면 실행을 거부했습니다. 하하, 현재 그가 제한하는 소프트웨어에는 쉬운 언어 프로그래밍 소프트웨어와 WSockExpert_Cn 패킷 캡처 소프트웨어가 포함되어 있는 것으로 알고 있습니다. ㅎㅎ, Yi Language를 끄고 WSockExpert_Cn 이름을 변경하고 소프트웨어 자체 보안 테스트를 성공적으로 통과하여 성공적으로 실행했습니다.

다음은 제가 사용하면서 투표한 데이터 패키지입니다.

XML/HTML 코드클립보드에 콘텐츠 복사
  1. POST /vote/view.php?sid=33 행위=투표 HTTP/1.1
  2. 수락: */*
  3. 추천인: http://www.qdnfy.gov.cn/vote/vote.php
  4. 콘텐츠 유형: application/x-www-form-urlencoded
  5. X-Forwarded-For: 218.20.218.200
  6. CLIENT_IP: 218.20.218.200
  7. VIA: 218.20.218.200
  8. REMOTE_ADDR: 218.20.218.200
  9. 수용 언어: zh-cn
  10. 인코딩 허용: 텍스트
  11. 사용자 에이전트: Mozilla/4.0(호환; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)
  12. 주최: www.qdnfy.gov.cn
  13. 쿠키: PHPSESSID=pldjnb6scereodjm5niqb9q990
  14. 내용 길이: 49
  15. 연결: 닫기

  -Forwarded-For 이 http 헤더 매개변수와 IP가 뒤따르는 것을 발견했습니다. 하하, 이 매개변수에는 배경이 있을 것입니다. 알고 보니 전혀 몰랐습니다. 하하, 서둘러 Baidu에서 검색해 보세요.

다음은 바이두에서 설명하는 글입니다. 잘 설명되어 있으니 한 번 보세요.
IP를 위조하기 위해 HTTP 헤더의 X-Forwarded-For 필드 위조 X-Forwarded-For의 원리를 연구한 것은 이번이 처음입니다. Forwarded-For: 클라이언트, 즉 HTTP 요청자의 실제 IP를 나타내는 약어 XFF 헤더입니다. 이 항목은 HTTP 프록시 또는 로드 밸런싱 서버를 전달할 때만 추가됩니다.

RFC에 정의된 표준 요청 헤더 정보가 아닙니다. 이 항목에 대한 자세한 소개는 Squid 캐시 프록시 서버 개발 문서에서 확인할 수 있습니다.

 표준 형식은 다음과 같습니다.

X-Forwarded-For: 클라이언트1, 프록시1, 프록시2

표준 형식에서 볼 수 있듯이 쉼표로 구분된 여러 개의 X-Forwarded-For 헤더가 있을 수 있습니다. 첫 번째 항목은 실제 클라이언트 IP이고 나머지는 통과한 프록시 또는 로드 밸런싱 IP입니다. 여러 개의 주소를 전달하면 여러 개가 나타납니다.

위키의 X-Forwarded-For 설명 http://en.wikipedia.org/wiki/X-Forwarded-For 분석:

클라이언트 IP를 위조하려고 하므로 먼저 클라이언트 IP 주소를 얻는 방법(PHP를 예로 들어)을 살펴보겠습니다. 이 코드는 대부분의 웹사이트에서 이 코드를 사용할 수 있습니다.

XML/HTML 코드클립보드에 콘텐츠 복사
  1. $user_IP = ($_SERVER["HTTP_VIA"]) ? //프록시 사용 여부
  2. $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]
  3. //취득에 실패하면 REMOTE_ADDR에서 가져옵니다.
  4. $사용자_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]
  5. ?>

먼저 HTTP_VIA 헤더가 존재하는지 확인합니다. HTTP_VIA 헤더는 프록시 서버가 사용되는지 여부를 나타냅니다. 존재하지 않으면 REMOTE_ADDR 필드에서 클라이언트 IP 주소를 가져옵니다. .. 멤버들의 코드는 모두 바이두에서 나온 프로그램이 많은 것으로 추정됩니다.

그럼 테스트해보겠습니다

 서버 코드:

XML/HTML 코드클립보드에 콘텐츠 복사
  1. //출력 HTTP_X_FORWARDED_FOR
  2. echo "HTTP_X_FORWARDED_FOR:".$_SERVER["HTTP_X_FORWARDED_FOR"]
  3. //REMOTE_ADDR echo "REMOTE_ADDR:"을 출력합니다.
  4. ?>

획득한 클라이언트 IP 주소가 다른 것을 확인할 수 있습니다. REMOTE_ADDR이 실제 주소입니다.

따라서 웹사이트가 X-Forwarded-For에서 클라이언트 IP 주소를 결정하는 경우 이 논리적 허점을 사용하여 투표를 늘릴 수 있습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.