이틀 전, 나는 사내 버전의 Enterprise Search Engine에서 작업하고 있었고 일부 사이트는 사이트 컨텐츠에 연결할 수 있음을 발견했습니다. .
나는 그것을 이상하게 보았고 데이터베이스 ID의 자동 번호 지정 규칙에 따라 연결되어 있음이 밝혀졌습니다 ~~
나는 여가 시간에 다음을 수행했습니다. 향후 ASP 프로그램의 모든 사람들에게 도움이되기를 바랍니다!
<%
'// 지정된 숫자의 임의 수를 생성합니다
'// 15 가지 스타일과 함께 제공되는 Guidy로 작성된 ixuer_rnd_str 함수를 사용할 수도 있으며 MD5를 의사를 가용 할 수 있습니다 !!
functionrndstr (strlong)
dimtempstr
무작위 화
Dowhilelen (rndstr) <strlong
tempstr = cstr (chr ((57-48)*rnd+48))
rndstr = rndstr & tempstr
고리
rndstr = rndstr
최종 기능 장애
%>
다음은 request.form의 예제로 양식 양식에 제출 된 매개 변수입니다. 전달 해야하는 매개 변수 doaction의 원래 값은 데이터베이스에서 읽은 ID입니다.
<formname = iformaction = "abc.asp"method = "post">
<inputname = doactionType = "hidden"value = "<%= rndstr (10)%> <%= rs ("id ")%> <%= rndstr (10)%>">
</form>
알아채다:
위의 DOACTION의 값이 변경되었으며 페이지가 새로 고침 될 때마다 얻은 값이 다릅니다 ~~
아래는 ABC.asp 페이지입니다
먼저 doaction의 가치를 얻으십시오
doaction = trim (request.form ( "doaction"))
아래에는 isnumeric 등과 같은 검증을 직접 추가 할 수 있습니다.
그런 다음 doaction의 가치를 분류합시다
Dimlastid
doaction = mid (doaction, 11)
lastid = mid (doaction, 1, len (doaction) -10)
중간 함수에 익숙하다면 위의 내용은 추측하기 쉽습니다. 간단하지 않습니까?
실제 예는 다음과 같습니다.
데이터베이스에서 원래 doaction (필드 유형은 자동으로 번호가 매겨 됨)에 의해 전달되는 ID의 값 : 34
설명 :
11 중간 (doaction, 11)에서 여러 랜덤 문자 + 1을 생성합니다.
10에서 10에서 mid (doaction, 1, len (doaction) -10)에서 지정된 숫자에 의해 생성 된 랜덤 문자 숫자의 수입니다!
Dimlastid
doaction = 361435494348151287527 - 위장한 후 ID 값 (숫자로 확인할 수 있음)
doaction = mid (doaction, 11)
lastid = mid (doaction, 1, len (doaction) -10)
fordid = 34
나는 실험을했고 무작위로 생성 된 글자와 숫자로 사용하면 MD5와 유사한 값으로 완전히 가짜가 될 수 있습니다!
조건은 하나 뿐이며 임의 문자의 비트 수를 지정해야합니다!
하하, 이제 모든 사람이 response의 마지막 값을 출력 할 수 있습니다. write가 데이터베이스의 ID인지 다시 확인할 수 있습니까?