전체 글 41

[Fuzzing101] Exercise 8 - Adobe Reader

환경 설정qemu 설정sudo apt install ninja-build libc6-dev-i386cd ~/Downloads/AFLplusplus/qemu_mode/pip3 install mesonexport PATH="$HOME/.local/bin:$PATH"CPU_TARGET=i386 ./build_qemu_support.shcd ../sudo make installafl-fuzz가 최신버전인데다 현재 우분투가 구 버전이어서 새롭게 설정해야 했다.기존 방법과 다른 점은 meson이 필요하고 make install을 AFLplusplus에서 한 번만 실행해주면 된다.에러 메시지가 뜨는데 무시해도 상관없었다.샘플 데이터데이터의 경우 github에 보니까 https://github.com/pdf-assoc..

보안/fuzzing 2026.05.19

[Fuzzing101] Exercise 7 - VLC Media Player

환경 설정환경설정을 해줘야 한다.공식 페이지를 보니까 아래와 같은 패키지를 설치해야 한다.sudo apt-get install git g++ make libtool automake autopoint pkg-config flex bison lua5.2그리고 configure를 실행해보면 필요한 라이브러리가 없다고 하는데 -dev 버전으로 설치해주면 된다.또한 컴파일하다보면 많은 에러가 발생하는데 afl-fuzz를 최신버전으로 설치했더니 문제가 많았다.gemini와 함께 고쳤다.샘플 데이터입력으로 Fuzzing101에서 주는 .wmv 파일을 사용한다.사전사전으로 Fuzzing101에서 주는 것을 사용한다.asf 사전을 주는데 입력으로 wmv 주길래 조금 찾아보니 형식은 같은데 쓰이는 곳이 다르다고 한다.퍼징..

보안/fuzzing 2026.05.16

[Fuzzing101] Exercise 6 - GIMP

환경 설정rm ./install/lib/gimp/2.0/plug-ins/*빌드한 뒤에 위의 명령어로 플러그인을 지우고 퍼징을 한다.샘플 데이터Exercise 5/SampleInput.xcf를 사용하라고 한다.사전xml의 문법을 저장해놓은 파일을 퍼저에 준다. 이러면 탐색을 더 잘한다고 한다.https://github.com/AFLplusplus/AFLplusplus/blob/stable/dictionaries/xml.dict위에 있는 사전을 사용한다.지속 모드이번엔 지속 모드를 사용하라고 한다.단일 fork에서 여러 번 실행을 하도록 해서 실행마다 fork를 할 때보다 속도가 빨라진다.app.c에서 file_open_from_command_line 실행하는 부분을 아래와 같이 바꾸었다. ..

보안/fuzzing 2026.05.12

[Fuzzing101] Exercise 5 - LibXML2

환경 설정샘플 데이터Exercise 5/SampleInput.xml를 사용하라고 한다.샘플로 실행해보기$HOME/fuzzing_libxml2/install/bin/xmllint ./pi.xml아래와 같이 나온다.사전xml의 문법을 저장해놓은 파일을 퍼저에 준다. 이러면 탐색을 더 잘한다고 한다.https://github.com/AFLplusplus/AFLplusplus/blob/stable/dictionaries/xml.dict위에 있는 사전을 사용한다.퍼징저번이랑 같이 ASAN을 사용한다.CVE-2017-9048을 찾아야 하고 xmlSnprintfElementContent 함수에서 스택에서 오버플로우가 발생한다고 한다.10시간은 돌린 것 같은데 나오지 않았다.구글링해서 찾았다.s=$(printf "%-..

보안/fuzzing 2026.05.09

[Fuzzing101] Exercise 4 - LibTIFF

환경 설정샘플 데이터libtiff 안에 test 폴더에 샘플 데이터가 있다.샘플로 실행해보기$HOME/fuzzing_tcpdump/install/bin/tiffinfo -D -j -c -r -s -w ./test/images/logluv-3c-16b.tiff코드 커버리지를 향상시키기 위해 모든 플래그를 활성화한다.아래와 같이 나온다.TIFF Directory at offset 0x10 (16) Image Width: 1 Image Length: 1 Bits/Sample: 16 Sample Format: signed integer Compression Scheme: SGILog Photometric Interpretation: CIE Log2(L) (u',v') Samples/Pixel: 3 ..

보안/fuzzing 2026.05.06

[Fuzzing101] Exercise 3 - TCPdump

환경 설정이거 github 가보니까 버전을 4.9.1로 해야할 것 같아서 4.9.1로 했다.libpcap도 따로 깔아줘야 한다.configure: error: neither %llx nor %Lx nor %qx worked on a 64-bit integer위와 같은 에러가 자꾸 뜨던데 tcpdump의 ./configure를 실행할 때 아래 flag를 추가하니 되었다.CFLAGS="-Wno-error=implicit-function-declaration -Wno-error=implicit-int"샘플 데이터tcpdump 안에 test 폴더에 샘플 데이터가 있다.샘플로 실행해보기$HOME/fuzzing_tcpdump/install/sbin/tcpdump -vvvvXX -ee -nn -r ./tests/ge..

보안/fuzzing 2026.05.05

[Fuzzing101] Exercise 2 - libexif

환경 설정https://github.com/libexif/libexif/tree/libexif-0_6_14-release해당 링크에 들어가 설치하면 된다.퍼징 대상이 라이브러리여서 인터페이스도 필요하다.libexif를 만든 사람이 exif라는 인터페이스를 만들어뒀으니 이걸 사용한다.https://github.com/libexif/exif/tree/exif-0_6_15-releasewget tar -xzvf libexif-0_6_14-release.tar.gzwget tar -xzvf exif-0_6_15-release.tar.gzsudo apt-get install autopoint libtool gettext libpopt-devcd libexif-libexif-0_6_14-release/autorec..

보안/fuzzing 2026.05.03

[Fuzzing101] Exercise 1 - Xpdf

환경 설정https://github.com/antonio-morales/Fuzzing101/tree/main/Exercise 1Exercise 1에 있는 것대로 환경설정을 하면 된다.다만 afl-fuzzer의 버전이 바뀌면서 llvm18을 다운해야 한다.pdf를 다운해보면 3개 중 helloworld.pdf 하나만 있었다.퍼징퍼징 대상은 pdftotext다. 예시 파일로 pdftotext를 실행해보면 pdf의 내용이 text로 변환되어서 저장된다.fuzz@ubuntu:~/fuzzing_xpdf/out/default/crashes$ cat oHello, world!퍼징을 해보니까 크래시가 하나 떴다.근데 재귀가 아니라 다른 크래시였다. 아마 pdf가 하나만 있었던 것이 문제인 것 같다.해당 크래시는 조금 ..

보안/fuzzing 2026.04.29

조화수열

위키피디아에서는 아래와 같이 정의하고 있다.수학에서 조화수열는 등차수열의 역수를 취하여 형성되는 수열이다.조화수열의 일반항은 $\frac{1}{a+kd}$와 같다. 프로그래밍 문제에서 이 수열 내림의 합을 구하는 문제가 나오기도 한다. 이때 그 합은 아래와 같이 표현가능하다.$$\sum_{i=1}^{n}{\lfloor \frac{n}{i} \rfloor}$$여기서 이 수열을 그냥 1부터 n까지 구하게 된다면 시간복잡도가 n이다. 이때 10000/1001의 내림과 10000/1111의 내림이 9로 동일한 것을 알 수 있다. 이 성질을 이용하면 시간 복잡도가 sqrt(n)이 된다.그렇다면 n/i의 내림과 n/j의 내림이 같으면서 가장 큰 j를 찾고 n/i의 내림과 그 범위 (j-i+1)를 곱하면 되고 이 것..

수학/이산수학 2025.06.17