2025년 10월 29일 수요일

stackoverflow 나올만한 url 예시

 ### 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 "테스트 요청이 완료되었습니다. 서버 로그를 확인하세요."


댓글 없음: