Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
recollapse — 블랙박스 정규표현식 퍼징 도구로, 입력 검증을 우회하고 정규화를 발견하며 웹 애플리케이션의 WAF를 회피하는 페이로드를 생성합니다. | Kitploit
도구/GitHubGitHub/0xacb/recollapse
Payload GenerationWAF BypassWeb SecurityFuzzing
GitHub0xacb/recollapse

recollapse

블랙박스 정규표현식 퍼징 도구로, 입력 검증을 우회하고 정규화를 발견하며 웹 애플리케이션의 WAF를 회피하는 페이로드를 생성합니다.

저장소 보기
1.4k1501년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

REcollapse

REcollapse는 블랙박스 정규 표현식 퍼징을 도와주는 도구로, 웹 애플리케이션의 유효성 검사를 우회하고 정규화를 발견하는 데 사용됩니다.

또한 WAF 및 취약한 취약점 완화 조치를 우회하는 데 도움이 될 수 있습니다. 자세한 내용은 REcollapse 블로그 게시물을 확인하세요.

이 도구의 목표는 테스트를 위한 페이로드를 생성하는 것입니다. 실제 퍼징은 Burp (intruder), Caido (automate), ffuf 등과 같은 다른 도구를 사용하여 수행해야 합니다.


설치

요구 사항: Python 3

pip3 install recollapse 또는 python3 setup.py install 또는 pip3 install .

Docker

docker build -t recollapse . 또는 docker pull 0xacb/recollapse


사용법

root@kitploit:~
$ recollapse -h
usage: recollapse [-h] [-m MODES] [-e {1,2,3,4}] [-r RANGE] [-s SIZE] [-f FILE] [-an] [-mn MAXNORM] [-mt MAXTRUNC] [-nt] [-tt] [-ct]
                  [--html] [--version]
                  [input]

REcollapse는 블랙박스 정규 표현식 퍼징을 도와주는 도구로, 웹 애플리케이션의 유효성 검사를 우회하고 정규화를 발견하는 데 사용됩니다

positional arguments:
  input                 원래 입력

options:
  -h, --help            이 도움말 메시지를 표시하고 종료합니다
  -m, --modes, -p, --positions MODES
                        변형 모드. 예: 1,2,3,4,5,6,7 (기본값). 1: 시작, 2: 구분자, 3: 정규화, 4:
                        종료, 5: 정규식 메타문자, 6: 대소문자 변환, 7: 바이트 잘라내기
  -e, --encoding {1,2,3,4}
                        1: URL 인코딩 형식 (기본값), 2: 유니코드 형식, 3: 원시 형식, 4: 이중 URL 인코딩 형식
  -r, --range RANGE     퍼징을 위한 바이트 범위. 예: 0,0xff (기본값)
  -s, --size SIZE       퍼징 바이트 수 (기본값: 1)
  -f, --file FILE       파일에서 입력 읽기
  -an, --alphanum       퍼징 범위에 영숫자 바이트 포함
  -mn, --maxnorm MAXNORM
                        최대 정규화 수 (기본값: 3)
  -mt, --maxtrunc MAXTRUNC
                        최대 잘라내기 수 (기본값: 3)
  -nt, --normtable      정규화 테이블 출력
  -tt, --trunctable     잘라내기 테이블 출력
  -ct, --casetable      대소문자 테이블 출력
  --html                HTML 형식으로 테이블 출력
  --version             recollapse 버전 표시

옵션 자세한 설명

입력 예시로 this_is.an_example을 고려해 보겠습니다.

모드

  1. 입력의 시작 부분 퍼징: $this_is.an_example
  2. 특수 문자 앞뒤 퍼징: this$_$is$.$an$_$example
  3. 정규화 위치 퍼징: 정규화 테이블에 따라 가능한 모든 바이트를 대체합니다.
  4. 입력의 끝 부분 퍼징: this_is.an_example$
  5. 정규식 메타문자 퍼징: 가능한 모든 정규식 메타문자 .^$*+-?()[]{}\|를 대체합니다.
  6. 대소문자 변환 퍼징: 대소문자 테이블에 따라 가능한 모든 바이트를 대체합니다.
  7. 바이트 잘라내기 퍼징: 잘라내기 테이블에 따라 가능한 모든 바이트를 대체합니다.

인코딩

  1. application/x-www-form-urlencoded 또는 쿼리/본문 매개변수에 사용할 URL 인코딩 형식: %22this_is.an_example
  2. application/json에 사용할 유니코드 형식: \u0022this_is.an_example
  3. multipart/form-data에 사용할 원시 형식: "this_is.an_example
  4. 이중 URL 인코딩 형식

범위

퍼징을 위한 바이트 범위 지정: -r 1-127. -an 옵션을 제공하지 않으면 영숫자 문자가 제외됩니다.

크기

모드 1, 2, 4에 대한 퍼징 크기를 지정합니다. 기본 접근 방식은 한 바이트에 대해 가능한 모든 값을 퍼징하는 것입니다. 크기를 늘리면 더 많은 리소스를 소비하고 훨씬 더 많은 입력을 생성하지만, 새로운 우회를 찾을 수 있습니다.

파일

입력은 위치 인수, stdin 또는 -f 옵션을 통한 파일로 제공할 수 있습니다.

영숫자

기본적으로 영숫자 문자는 출력 생성에서 제외되며, 이는 일반적으로 응답 측면에서 흥미롭지 않습니다. -an 옵션을 사용하여 허용할 수 있습니다.

최대 정규화 수

모든 정규화 라이브러리가 동일한 동작을 하는 것은 아닙니다. 기본적으로 각 입력 인덱스에 대해 세 가지 정규화 가능성이 생성되며, 이는 일반적으로 충분합니다. 더 깊이 들어가려면 -mn 옵션을 사용하세요.

테이블

-nt 옵션을 사용하여 정규화 테이블을 표시하고, -ct 옵션을 사용하여 대소문자 테이블을 표시하며, -tt 옵션을 사용하여 잘라내기 테이블을 표시합니다. 또한 --html 옵션을 사용하여 테이블을 HTML 형식으로 출력할 수 있습니다.

root@kitploit:~
$ recollapse -nt --html > normalization_table.html
$ recollapse -tt --html > truncation_table.html
$ recollapse -ct --html > case_table.html

예제

명령줄 도구로 REcollapse 사용:

root@kitploit:~
$ recollapse -e 1 -m 1,2,4 -r 10-11 https://legit.example.com
%0ahttps://legit.example.com
%0bhttps://legit.example.com
https%0a://legit.example.com
https%0b://legit.example.com
...

$ echo "[email protected]" | recollapse 
%[email protected]
%[email protected]
...

$ echo "<svg/onload=alert(1)>" | recollapse | ffuf -w - -u "https://example.com/?param=FUZZ" -mc 200,403,500

라이브러리로 REcollapse 사용:

root@kitploit:~
from recollapse import Recollapse

recollapse = Recollapse(modes=Recollapse.DEFAULT_MODES,
                        encoding=Recollapse.ENCODING_RAW)
variants = recollapse.generate("<script")
for variant in variants:
    print(variant)

자료

이 기술은 원래 BSidesLisbon 2022에서 발표되었습니다.

블로그 게시물: https://0xacb.com/2022/11/21/recollapse/

슬라이드:

  • nahamcon_2022_eu_till_recollapse.pdf
  • bsideslisbon_2022_till_recollapse.pdf

동영상:

  • NahamCon 2022 EU
  • BSidesLisbon 2022

테이블:

  • 정규화 테이블: https://0xacb.com/normalization_table
  • 대소문자 테이블: https://0xacb.com/case_table
  • 잘라내기 테이블: https://0xacb.com/truncation_table

감사

  • @regala_
  • @0xz3z4d45
  • @jllis
  • @samwcyo
  • @yassineaboukir
  • @0xteknogeek
  • @vgpinho
  • @ryancbarnett
  • BBAC

그리고

  • @ethiack 팀
  • @0xdisturbance 팀
  • @hacker0x01 팀

⚠ 법적 고지 ⚠

이 프로젝트는 교육적이고 윤리적인 테스트 목적으로만 제작되었습니다. 사전 상호 동의 없이 이 도구를 사용하여 대상을 공격하는 것은 불법입니다. 개발자는 어떠한 책임도 지지 않으며, 이 도구로 인한 오용이나 피해에 대해 책임을 지지 않습니다.

도구 다운로드