
일반적인 유형의 취약점에 대한 취약한 코드가 포함된 예제 C 프로그램입니다. 퍼징 개념을 보여주는 데 사용할 수 있습니다.
참고: 파일 이름이 imgRead.c에서 dvcp.c로 변경되었습니다. 동영상을 보고 있다면 imgRead.c가 보이겠지만 GitHub 저장소에는 dvcp.c가 있습니다. 올바른 파일 이름을 사용하세요.
내 YouTube 채널: https://www.youtube.com/user/MrHardik05/featured?view_as=subscriber
이것은 무엇인가?
이것은 제가 일반적인 유형의 취약점을 설명하기 위해 작성한 간단한 C 프로그램입니다:
이 C 프로그램에는 위의 모든 취약점에 대한 취약한 코드가 포함되어 있으며, AFL, libafl, libfuzzer, hongfuzz, winafl, jackalope 또는 원하는 다른 퍼저를 사용하여 퍼징할 수 있습니다.
컴파일 방법
명령 프롬프트에 "make"라고 입력하기만 하면 됩니다. Makefile이 함께 포함되어 있습니다.
AFL용 입력을 생성하는 방법?
다음과 같이 샘플 입력 파일을 생성하기만 하면 나머지는 AFL이 처리합니다:
echo "IMG" >input/1.txt
AFL은 자동으로 새로운 테스트 케이스를 생성하고 위에서 언급한 대부분의 취약점을 발견합니다. 이것이 AFL의 매력입니다 :)
AFL로 퍼징하는 방법?
1. 먼저 다음 명령어로 이 프로그램을 컴파일하세요:
afl-gcc -g -fsanitize=address dvcp.c -o dvcp
2. 다음 명령어를 실행하세요:
afl-fuzz -i input -o output -m none -- ./dvcp @@
honggfuzz로 퍼징하는 방법
1. 먼저 다음 명령어로 이 프로그램을 컴파일하세요:
hfuzz-gcc -g -fsanitize=address dvcp.c -o dvcp
2. 다음 명령어를 실행하세요:
hongfuzz -i input -- ./dvcp ___FILE___
libfuzzer로 퍼징하는 방법
C 코드를 수정해야 합니다. 업데이트된 코드는 여기에서 받을 수 있습니다: https://github.com/hardik05/Damn_Vulnerable_C_Program/blob/master/dvcp_libfuzzer.c
1. 다음 명령어로 프로그램을 컴파일하세요:
clang -fsanitize=fuzzer,address,undefined -g dvcp_libfuzzer.c -o dvcp_libfuzzer
2. 퍼징하려면 다음 명령어를 실행하세요:
./dvcp_libfuzzer
비디오 튜토리얼은 여기에서 볼 수 있습니다:
전체 퍼징 재생목록:
아래는 개별 영상입니다:
리눅스
LibAFL
[libAFL로 퍼징하기]시스템에 libAFL을 설치하는 방법과 다양한 구성 요소는 무엇인가? -> https://www.youtube.com/watch?v=ztGfxbvcrms
[libAFL로 퍼징하기]libAFL ForkSever 소개, libAFL forkserver 퍼저 실행하기. -> https://www.youtube.com/watch?v=Ed1anYoGTyA
[libAFL로 퍼징하기]libAFL forkserver 퍼저로 Damn Vulnerable C Program 퍼징하기 -> https://www.youtube.com/watch?v=ad_4zroiS_g
[libAFL로 퍼징하기] libAFL forkserver 퍼저와 함께 공유 메모리 모드 사용하기 -> https://www.youtube.com/watch?v=GXD_qkISyfY
AFL++
[AFL++로 퍼징하기] AFL++ 설치 및 간단한 C 프로그램 퍼징하기 -> https://www.youtube.com/watch?v=9wRVo0kYSlc
[AFL++로 퍼징하기] 리눅스에서 소스 코드가 없는 바이너리를 persistent 모드로 퍼징하는 방법 -> https://www.youtube.com/watch?v=LGPJdEO02p4
AFL
[AFL로 퍼징하기] Ubuntu에 AFL을 설치하는 방법-> https://www.youtube.com/watch?v=r7ucv2kN4j4
[AFL로 퍼징하기] AFL로 간단한 C 프로그램 퍼징하기 -> https://www.youtube.com/watch?v=NiGC1jxFx78&t=66s
[AFL로 퍼징하기] AFL로 다양한 유형의 취약점 찾기 -> https://www.youtube.com/watch?v=m1RkShHzx_8&t=151s
[AFL로 퍼징하기] crashwalk로 크래시를 분류하고 GDB로 근본 원인 찾기 -> https://www.youtube.com/watch?v=5R2gPkCXZkM
[AFL로 퍼징하기] Qemu 모드에서 소스 코드가 없는 바이너리를 AFL로 퍼징하기.-> https://www.youtube.com/watch?v=np3sLLFQs6I
Honggfuzz
[honggfuzz로 퍼징하기] HongFuzz로 간단한 C 프로그램 퍼징하기 -> https://www.youtube.com/watch?v=6OBXJtEe-d8
[honggfuzz로 퍼징하기] Hongfuzz,checksec(pwntools),ASAN -> https://www.youtube.com/watch?v=Lr8pLQRTHac
Libfuzzer
[libfuzzer로 퍼징하기] LibFuzzer를 사용하여 간단한 C 프로그램을 퍼징하는 방법 -> https://www.youtube.com/watch?v=hFva8kJQwnc&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp
[libfuzzer,AFL로 퍼징하기] AFL을 사용하여 libfuzzer 하니스 프로그램을 퍼징하는 방법 -> https://www.youtube.com/watch?v=HfEqm3TrfwM&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp&index=2
OpenSSL 취약점 CVE-2022-3602 및 CVE-2022-3786을 재현하고 libfuzzer를 사용하는 방법 -> https://www.youtube.com/watch?v=vhTuXph1dtY
Radamsa
[Radamsa로 퍼징하기] Radamsa로 간단한 C 프로그램 퍼징하기 -> https://youtu.be/1FRsXVNpynQ
윈도우
WinAFL
[WinAFL로 퍼징하기] WinAFL로 간단한 C 프로그램 퍼징하기 -> https://www.youtube.com/watch?v=Va_Wtxf3DMc
[WinAFL로 퍼징하기] 퍼징 함수란 무엇이며, 모든 것이 제대로 작동하는지 확인하는 방법은? -> https://www.youtube.com/watch?v=HLORLsNnPzo
winafl로 퍼징할 더 많은 윈도우 하니스가 필요합니다
물론이죠, 여기를 확인하세요 -> https://github.com/hardik05/winafl-harness
winafl 기본 뮤테이터와는 다른 무언가를 시도해보고 싶습니다..
네, 이것을 시도해볼 수 있습니다 -> https://github.com/hardik05/winafl-powermopt
제가 만들면서 더 많은 것을 업로드하겠습니다.
Google의 OSS-Fuzz
OSS-Fuzz 작동 방식: 오픈 소스 프로젝트를 위한 퍼즈 테스트 가이드 -> https://www.youtube.com/watch?v=OBxCDsJ-0aM
왜 이것을 만들었나요?
다양한 유형의 취약점을 이해하는 것은 신입자와 경험자 모두에게 많은 시간이 걸립니다. 저도 이 문제를 직접 겪었고 배운 것을 공유하기로 결정했습니다.
이것에서 무언가를 배웠다면 감사 인사를 보내주세요. 그것이 제가 필요한 전부입니다. 또한 개선하거나 수정하고 싶은 것이 있다면 PR을 환영합니다!
작성자는?
이메일: 트위터에서 DM 보내주세요 :)
피드백?
제안과 의견은 언제나 환영합니다. 문제를 발견하거나 수정 사항 또는 새로운 기능이 있다면 풀 리퀘스트를 보내주세요.