728x90
screwim을 사용하여 PHP 파일을 보호하고 이를 테스트하는 방법
screwim 확장 모듈 확인
cd /usr/share/nginx/html
vim getModules.php
<?php
// 실행 환경 확인 (CLI인지 아닌지)
$is_cli = (php_sapi_name() == 'cli');
// 모든 로드된 PHP 모듈을 가져옴
$loaded_modules = get_loaded_extensions();
// 모듈 리스트 출력
if ($is_cli) {
// CLI 환경일 경우
echo "Loaded PHP Modules:\n";
foreach ($loaded_modules as $module) {
echo "- " . $module . "\n"; // CLI 환경 줄바꿈
}
} else {
// HTML 환경일 경우
echo "Loaded PHP Modules:<br>";
foreach ($loaded_modules as $module) {
echo "- " . htmlspecialchars($module) . "<br>"; // HTML 환경 줄바꿈
}
}
?>
로드된 PHP 모듈 확인
- 웹 브라우저(HTML)
http://localhost/getModules.php
- curl 명령
curl http://localhost/getModules.php
CLI
- php 명령어
php getModules.php
php -m
head length와 key byte 확인
screwim -v
$ screwim -v
HEADER LENGTH : 14
KEY BYTE : 6c2cf730d3f533dbc4118a03e
KEY STRING : 24361, 56743, 3168, 30110, 75432
728x90
1. db_config.php
vim db_config.php
<?php
$db_password = "FuBao";
?>
2. screwim으로 암호화
screwim db_config.php
PHP 원본 소스와 암호화된 소스를 비교
더보기
---
원본 PHP 코드(db_config.php)
hexdump -C db_config.php
00000000 3c 3f 70 68 70 20 24 64 62 5f 70 61 73 73 77 6f |<?php $db_passwo|
00000010 72 64 3d 22 46 75 42 61 6f 22 3b 20 0a |rd="FuBao"; .|
0000001d
암호화된 PHP 코드(db_config.php.screw)
hexdump -C db_config.php.screw
00000000 45 31 32 23 33 48 58 48 35 46 4c 53 24 39 e7 09 |E12#3HXH5FLS$9..|
00000010 20 ee 91 f7 49 cf 58 da 16 34 10 29 b3 26 bd 90 | ...I.X..4.).&..|
00000020 91 75 d0 ca 7a b8 2a f4 f3 36 2d 5e 73 5d be ab |.u..z.*..6-^s]..|
00000030 d5 96 5b |..[|
00000033
---
3. test.php
vim test.php
<?php
// ScrewIM 보호 설정을 켜고 끄는 함수 정의
function enable_screwim($enable = true) {
ini_set("screwim.enable", $enable ? "1" : "0");
}
// ScrewIM을 활성화하여 암호화된 파일 포함
enable_screwim(true);
require_once("db_config.php.screw");
enable_screwim(false);
// 데이터베이스 비밀번호 확인
if (isset($db_password)) {
echo "DB Password: " . htmlspecialchars($db_password, ENT_QUOTES, 'UTF-8') . "\n";
} else {
echo "Error: DB password is not set.\n";
}
?>
웹 브라우저 확인
http://localhost/test.php
curl 명령으로 확인
$ curl http://localhost/test.php
DB Password: FuBao
728x90
'리눅스' 카테고리의 다른 글
[draft] 리눅스에서 SSH 액세스 권한 부여하기 (0) | 2024.09.11 |
---|---|
[draft] rsync 스크립트 (0) | 2024.09.11 |
[draft] CentOS 7에서 www-data 계정을 생성하는 방법 (0) | 2024.09.10 |
[draft] 우분투에 ipmitool을 설치하고 사용하는 방법 (0) | 2024.09.06 |
[draft] Ceph를 설치하는 방법 (0) | 2024.09.03 |