<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>연습 또 연습.</title>
    <link>https://training-1.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 16 Apr 2026 10:12:04 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>범고래_1</managingEditor>
    <item>
      <title>쉘코딩 (shellcoding) - (3)</title>
      <link>https://training-1.tistory.com/265</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉘코딩 하는 여러 방법&lt;span&gt;&amp;nbsp;&lt;/span&gt;소개 시리즈 (3)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉘코드 작성 후 바이너리로 만들고 실행할 때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/flag 읽는 쉘코드&lt;/p&gt;
&lt;pre id=&quot;code_1654690197087&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// shellcode.S
#include &amp;lt;sys/syscall.h&amp;gt;
.intel_syntax noprefix
.global _start

.text
_start:

    /* open(file='/flag', oflag=0, mode=0) */
    /* push '/flag\x00' */
    push 0x67
    push 0x616c662f
    mov ebx, esp
    xor ecx, ecx
    xor edx, edx
    /* call open() */
    push SYS_open /* 5 */
    pop eax
    int 0x80

    /* read(fd='eax', buf='esp', nbytes=32) */
    mov ebx, eax
    mov ecx, esp
    push 0x30
    pop edx
    /* call read() */
    push 3 /* 3 */
    pop eax
    int 0x80
    
    /* write(fd=1, buf='esp', n=32) */
    push 1
    pop ebx
    mov ecx, esp
    push 0x30
    pop edx
    /* call write() */
    push SYS_write /* 4 */
    pop eax
    int 0x80&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드 (x86)&lt;/p&gt;
&lt;pre id=&quot;code_1654690256723&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gcc -c -o shellcode.o shellcode.S -m32
ld -m elf_i386 -o shellcode shellcode.o&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행&lt;/p&gt;
&lt;pre id=&quot;code_1654690267606&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./shellcode&lt;/code&gt;&lt;/pre&gt;</description>
      <category>pwnable/Shellcoding</category>
      <author>범고래_1</author>
      <guid isPermaLink="true">https://training-1.tistory.com/265</guid>
      <comments>https://training-1.tistory.com/265#entry265comment</comments>
      <pubDate>Wed, 8 Jun 2022 21:11:10 +0900</pubDate>
    </item>
    <item>
      <title>libssl install (libcrypto)</title>
      <link>https://training-1.tistory.com/264</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;x86&lt;/p&gt;
&lt;pre id=&quot;code_1653374797547&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libssl-dev:i386&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x86-64&lt;/p&gt;
&lt;pre id=&quot;code_1653374812690&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt update
sudo apt install libssl-dev&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Linux</category>
      <author>범고래_1</author>
      <guid isPermaLink="true">https://training-1.tistory.com/264</guid>
      <comments>https://training-1.tistory.com/264#entry264comment</comments>
      <pubDate>Tue, 24 May 2022 15:46:54 +0900</pubDate>
    </item>
    <item>
      <title>CLI에서 chrome driver 사용하기</title>
      <link>https://training-1.tistory.com/263</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Ubuntu&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652780130554&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt install chromium-chromedriver&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mac&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652780155190&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew tap homebrew/cask &amp;amp;&amp;amp; brew cask install chromedriver&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Reference&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/53330322/is-chrome-installation-needed-or-only-chromedriver-when-using-selenium/62449076#62449076&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/53330322/is-chrome-installation-needed-or-only-chromedriver-when-using-selenium/62449076#62449076&lt;/a&gt;&lt;/p&gt;</description>
      <category>기타</category>
      <author>범고래_1</author>
      <guid isPermaLink="true">https://training-1.tistory.com/263</guid>
      <comments>https://training-1.tistory.com/263#entry263comment</comments>
      <pubDate>Tue, 17 May 2022 18:36:08 +0900</pubDate>
    </item>
    <item>
      <title>쉘코딩 (shellcoding) - (2)</title>
      <link>https://training-1.tistory.com/262</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉘코딩 하는 여러 방법 소개 시리즈 (2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어셈 코딩하고 opcode만 뽑내는 법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 예시는 execve(&quot;/bin/sh&quot;, [&quot;/bin/sh&quot;, 0], 0)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 쉘코딩&lt;/p&gt;
&lt;pre id=&quot;code_1648205293988&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// gcc -m32 -c -o shellcode.o shellcode.S
#include &amp;lt;sys/syscall.h&amp;gt;

#define STRING  &quot;/bin/sh&quot;
#define STRLEN  7
#define ARGV0   (STRLEN+1)
#define ENVP    (ARGV0+4)

.intel_syntax noprefix
.text

.globl main
.type  main, @function

main:
  jmp     calladdr

popladdr:
  pop    esi                    /* esi points to STRING */
  mov    [ARGV0+esi],esi        /* set up argv[0] pointer to pathname */
  xor    eax,eax                /* get a 32-bit zero value */
  mov    [STRLEN + esi],al      /* null-terminate our string */
  mov    [ENVP + esi], eax      /* set up null envp */

  mov    al,SYS_execve          /* syscall number */
  mov    ebx,esi                /* arg 1: string pathname */
  lea    ecx,[ARGV0 + esi]      /* arg 2: argv */
  lea    edx,[ENVP + esi]       /* arg 3: envp */
  int    0x80                   /* execve(&quot;/bin/sh&quot;, [&quot;/bin/sh&quot;, NULL], [NULL]) */

  xor    ebx,ebx                /* arg 1: 0 */
  mov    eax,ebx
  inc    eax                    /* exit(0) */
  /* mov+inc to avoid null byte */
  int    0x80                   /* invoke syscall */

calladdr:
  call    popladdr
  .string STRING&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;objcopy 사용해서 shellcode.bin으로 opcode 뽑기&lt;/p&gt;
&lt;pre id=&quot;code_1648205408727&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash
gcc -m32 -c -o shellcode.o shellcode.S
objcopy -S -O binary -j .text shellcode.o shellcode.bin
rm -rf shellcode.o&lt;/code&gt;&lt;/pre&gt;</description>
      <category>pwnable/Shellcoding</category>
      <author>범고래_1</author>
      <guid isPermaLink="true">https://training-1.tistory.com/262</guid>
      <comments>https://training-1.tistory.com/262#entry262comment</comments>
      <pubDate>Fri, 25 Mar 2022 19:52:48 +0900</pubDate>
    </item>
    <item>
      <title>쉘코딩 (shellcoding) - (1)</title>
      <link>https://training-1.tistory.com/261</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉘코딩 하는 여러 방법 소개 시리즈 (1)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어셈 코딩하고 해당 코드를 실행하는 방법 소개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 예시는 argv[1] 문자열을 뒤집는 쉘코드&lt;/p&gt;
&lt;pre id=&quot;code_1648204230753&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# main.s
# gcc -nostdlib main.s -m32
.intel_syntax noprefix
.global _start

.text
_start:
	push ebp
	mov ebp, esp

	# if (argc &amp;lt; 2) exit;
	cmp DWORD PTR [ebp+4], 2
	jl exit

	# length of argv[1] : esi
	mov esi, 0x0 # i = 0
loop:
	mov eax, DWORD PTR [ebp+0xc]
	add eax, esi
	add esi, 1
	cmp BYTE PTR[eax], 0
	jne loop
	sub esi, 1

# while (true) i--; if(i &amp;lt;= -1) break; write(1, &amp;amp;argv[1][i], 1)
write_one_char:
	mov eax, DWORD PTR [ebp+0xc]
	sub esi, 1
	cmp esi, -1
	jle exit
	add eax, esi

	# write(1, eax, 1)
	mov edx, 1
	mov ecx, eax
	mov ebx, 1
	mov eax, 4
	int 0x80 # write
	jmp write_one_char

# exit(0)
exit:
	mov ebx, 0x0
	mov eax, 0x1
	int 0x80 # exit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행&lt;/p&gt;
&lt;pre id=&quot;code_1648205196729&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ ./a.out&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>pwnable/Shellcoding</category>
      <author>범고래_1</author>
      <guid isPermaLink="true">https://training-1.tistory.com/261</guid>
      <comments>https://training-1.tistory.com/261#entry261comment</comments>
      <pubDate>Fri, 25 Mar 2022 19:47:08 +0900</pubDate>
    </item>
    <item>
      <title>AFL++ LTO mode</title>
      <link>https://training-1.tistory.com/260</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;AFL++에서 고오급 기능인 LTO 모드를 지원한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;a style=&quot;color: #666666;&quot; href=&quot;https://github.com/AFLplusplus/AFLplusplus/blob/stable/instrumentation/README.lto.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;에 따르면 LTO 모드를 사용하면 더 빠른 속도와 높은 커버리지를 가진다고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;LTO 모드를 사용하기 위해서는 llvm 11 버전 이상을 사용해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;LTO 모드를 사용할 수 없으면 LLVM 모드를 사용하고, 이것도 불가능하면 GCC_PLUGIN 모드를 사용하고...&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;이런 식으로 점차 내려가게 된다. (&lt;u&gt;&lt;a style=&quot;color: #666666;&quot; href=&quot;https://github.com/AFLplusplus/AFLplusplus/blob/stable/docs/fuzzing_in_depth.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/AFLplusplus/AFLplusplus/blob/stable/docs/fuzzing_in_depth.md&lt;/a&gt;&lt;/u&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;stable 버전인 13버전을 설치하고 LTO 모드를 사용해보자.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;LLVM Install&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;다음 내용을 /etc/apt/sources.list.d에 적당히 추가해준다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;20.04(focal), 21.04(hirsute) 적당히 알맞게...&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1648885184253&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Focal (20.04) LTS - Last update : Fri, 28 Jan 2022 19:42:23 UTC / Revision: 20220128052849+ea05ee90596c
deb http://apt.llvm.org/focal/ llvm-toolchain-focal main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main
# 12
deb http://apt.llvm.org/focal/ llvm-toolchain-focal-12 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-12 main
# 13
deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main

-------------------------------------------------

Hirsute (21.04) - Last update : Fri, 28 Jan 2022 22:19:17 UTC / Revision: 20220128083604+c2a961e414e0
deb http://apt.llvm.org/hirsute/ llvm-toolchain-hirsute main
deb-src http://apt.llvm.org/hirsute/ llvm-toolchain-hirsute main
# 12
deb http://apt.llvm.org/hirsute/ llvm-toolchain-hirsute-12 main
deb-src http://apt.llvm.org/hirsute/ llvm-toolchain-hirsute-12 main
# 13
deb http://apt.llvm.org/hirsute/ llvm-toolchain-hirsute-13 main
deb-src http://apt.llvm.org/hirsute/ llvm-toolchain-hirsute-13 main&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Archive Signature&lt;/p&gt;
&lt;pre id=&quot;code_1644380020654&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1643459777764&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt update

# LLVM
apt install libllvm-13-ocaml-dev libllvm13 llvm-13 llvm-13-dev llvm-13-doc llvm-13-examples llvm-13-runtime
# Clang and co
apt install clang-13 clang-tools-13 clang-13-doc libclang-common-13-dev libclang-13-dev libclang1-13 clang-format-13 python3-clang-13 clangd-13 clang-tidy-13
# libfuzzer
apt install libfuzzer-13-dev
# lldb
apt install lldb-13
# lld (linker)
apt install lld-13&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1643459852025&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apt install -y clang-13 clang-tools-13 libc++1-13 libc++-13-dev \
    libc++abi1-13 libc++abi-13-dev libclang1-13 libclang-13-dev \
    libclang-common-13-dev libclang-cpp13 libclang-cpp13-dev liblld-13 \
    liblld-13-dev liblldb-13 liblldb-13-dev libllvm13 libomp-13-dev \
    libomp5-13 lld-13 lldb-13 llvm-13 llvm-13-dev llvm-13-runtime llvm-13-tools&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 확인&lt;/p&gt;
&lt;pre id=&quot;code_1643460065012&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;which llvm-config
llvm-config --version&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PATH 설정&lt;/p&gt;
&lt;pre id=&quot;code_1643459895467&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export PATH=/usr/lib/llvm-13/bin:$PATH&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gcc plugin 설치&lt;/p&gt;
&lt;pre id=&quot;code_1643460910256&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt install -y gcc-$(gcc --version|head -n1|sed 's/.* //'|sed 's/\..*//')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/.* //'|sed 's/\..*//')-dev&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;AFL Build&lt;/h2&gt;
&lt;pre id=&quot;code_1643460123043&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apt install rustc cargo&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1643460011887&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone https://github.com/AFLplusplus/AFLplusplus
cd AFLplusplus
make source-only -j$(nproc)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;make 옵션에 관한 상세한 사항은 &lt;u&gt;&lt;a style=&quot;color: #666666;&quot; href=&quot;https://aflplus.plus/building/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;&lt;/u&gt;서 참고.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;qemu 모드를 쓰는게 아니면 source-only로 make해도 충분한 듯 하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;make distrib은 모든 기능 빌드.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666;&quot;&gt;afl 관련 명령어를 편하게 쓰기 위해 path 추가. (굳이 make install 안 하고 이렇게 쓴다.)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1643460304088&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export PATH=$PATH:/home/alkyne/AFLplusplus&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Build Target Binary&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 타겟 바이너리를 빌드할 때 afl-clang-lto, afl-clang-lto++로 빌드 하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1643458641248&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CC=afl-clang-lto CXX=afl-clang-lto++ LD=afl-ld-lto RANLIB=llvm-ranlib AR=llvm-ar ./configure --disable-shared --enable-lto
make -j$(nproc)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(만약 오류가 나면 AFL_LLVM_MAP_ADDR 값을 바꿔주거나 unset하자.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드하면 이런식으로 mode : LLVM-LTO-PCGUARD가 찍히게 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LuDcW/btrr5VxjEwO/XjTaE29lQcgkgwzrfnQlgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LuDcW/btrr5VxjEwO/XjTaE29lQcgkgwzrfnQlgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LuDcW/btrr5VxjEwO/XjTaE29lQcgkgwzrfnQlgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLuDcW%2Fbtrr5VxjEwO%2FXjTaE29lQcgkgwzrfnQlgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2880&quot; height=&quot;1640&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Fuzzing&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fuzzing 하는 방법은 똑같다.&lt;/p&gt;
&lt;pre id=&quot;code_1643460363862&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;afl-fuzz -m none -t 200 -i ../input -o ../output -M Main_vim -- ../../src/vim -u NONE -i NONE -n -X -Z -e -s -S @@ -c &quot;:qa!&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;References :&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://github.com/AFLplusplus/AFLplusplus/blob/stable/instrumentation/README.lto.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/AFLplusplus/AFLplusplus/blob/stable/instrumentation/README.lto.md&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://cpuu.postype.com/post/11671863&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://cpuu.postype.com/post/11671863&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://apt.llvm.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://apt.llvm.org/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;&lt;a href=&quot;https://aflplus.plus/building/&quot;&gt;https://aflplus.plus/building/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Acknowledgement&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Special thanks to pwnstar.&lt;/p&gt;</description>
      <category>pwnable/Fuzzing</category>
      <author>범고래_1</author>
      <guid isPermaLink="true">https://training-1.tistory.com/260</guid>
      <comments>https://training-1.tistory.com/260#entry260comment</comments>
      <pubDate>Sat, 29 Jan 2022 21:46:10 +0900</pubDate>
    </item>
    <item>
      <title>Valgrind</title>
      <link>https://training-1.tistory.com/259</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ASAN과 더불어 메모리 릭이나 access violation 확인할 때 유용하다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Install&lt;/h2&gt;
&lt;pre id=&quot;code_1643254389164&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone git://sourceware.org/git/valgrind.git
cd valgrind
./autogen.sh
./configure
make&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Binary build&lt;/h2&gt;
&lt;pre id=&quot;code_1643255879218&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CFLAGS=&quot;-g&quot; CXXFLAGS=&quot;-g&quot; LDFLAGS=&quot;-g&quot; ./configure
make&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Run&lt;/h2&gt;
&lt;pre id=&quot;code_1643255947918&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./vg-in-place -s ./executable&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>pwnable</category>
      <author>범고래_1</author>
      <guid isPermaLink="true">https://training-1.tistory.com/259</guid>
      <comments>https://training-1.tistory.com/259#entry259comment</comments>
      <pubDate>Thu, 27 Jan 2022 12:59:32 +0900</pubDate>
    </item>
    <item>
      <title>AFL++</title>
      <link>https://training-1.tistory.com/258</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://twitter.com/aflplusplus/status/1486278871318159364&quot;&gt;https://twitter.com/aflplusplus/status/1486278871318159364&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AFL++ 4.00c 버전이 나왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 AFL 2.52b, 2.57b 버전보다 훨훨훨씬 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무엇보다도 속도가 매우 빠르다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Install&lt;/h2&gt;
&lt;pre id=&quot;code_1643250056733&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone https://github.com/AFLplusplus/AFLplusplus
cd AFLplusplus
make&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;afl-gcc,afl-g++, afl-clang, afl-clang-fast, afl-clang-fast++ 등등....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전부 afl-cc를 가리키고 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;772&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVdsg7/btrrKxZqBQ3/Vk8ZYBesLiPjs4BSATyuB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVdsg7/btrrKxZqBQ3/Vk8ZYBesLiPjs4BSATyuB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVdsg7/btrrKxZqBQ3/Vk8ZYBesLiPjs4BSATyuB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVdsg7%2FbtrrKxZqBQ3%2FVk8ZYBesLiPjs4BSATyuB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;623&quot; height=&quot;355&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;772&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CC랑 CXX 설정시 전부 이걸로 하면 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Build&lt;/h2&gt;
&lt;pre id=&quot;code_1643250603531&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CC=[AFLplusplus_DIR]/afl-cc CXX=[AFLplusplus_DIR]/afl-cc ./configure
make&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;ASAN&lt;/h2&gt;
&lt;pre id=&quot;code_1643250632592&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export AFL_USE_ASAN=1
CC=[AFLplusplus_DIR]/afl-cc CXX=[AFLplusplus_DIR]/afl-cc CFLAGS=&quot;-fsanitize=address -g&quot; CXXFLAGS=&quot;-fsanitize=address -g&quot; LDFLAGS=&quot;-fsanitize=address -g&quot; ./configure
make&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;환경변수 PATH 설정해놓으면 afl-whatsup, afl-cmin, afl-fuzz 등 툴 쓰기 편하다.&lt;/p&gt;
&lt;pre id=&quot;code_1643250804242&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export PATH=$PATH:/home/alkyne/AFLplusplus&lt;/code&gt;&lt;/pre&gt;</description>
      <category>pwnable</category>
      <author>범고래_1</author>
      <guid isPermaLink="true">https://training-1.tistory.com/258</guid>
      <comments>https://training-1.tistory.com/258#entry258comment</comments>
      <pubDate>Thu, 27 Jan 2022 11:33:42 +0900</pubDate>
    </item>
    <item>
      <title>AFL Parallel fuzzing</title>
      <link>https://training-1.tistory.com/257</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AFL은 단일 코어로 돌기 때문에, 멀티 코어로 퍼징하려면 각 코어마다 노드를 실행시켜야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 개의 main 노드와 여러 개의 secondary 노드로 구성하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 노드는 주기적으로 싱크 디렉토리를 스캔하며, 재밌어 보이는 테스트 케이스를 자기 퍼저로 가져와 퍼징한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;퍼포먼스 이유로 main 노드만이 큐를 싱크 시키며, secondary 노드들은 main 노드로 부터 싱크를 받아온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한번의 main 노드가 도는 동안 secondary 노드는&amp;nbsp;여려번의 cycle을 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 큐에 있는 모든 input이 퍼징될 때까지 반복하는 것이 하나의 cycle이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Main node&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-M 옵션으로 main 노드 실행&lt;/p&gt;
&lt;pre id=&quot;code_1642995374388&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;afl-fuzz -i input -o output -M Main_fuzzer -- ./src/vim -u NONE -i NONE -n -X -Z -e -m -s -S @@ -c &quot;:qa!&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Secondary Node&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-S 옵션으로 secondary 노드 여러개 실행&lt;/p&gt;
&lt;pre id=&quot;code_1642995405065&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;afl-fuzz -i input -o output -S fuzzer01 -- ./src/vim -u NONE -i NONE -n -X -Z -e -m -s -S @@ -c &quot;:qa!&quot;
afl-fuzz -i input -o output -S fuzzer02 -- ./src/vim -u NONE -i NONE -n -X -Z -e -m -s -S @@ -c &quot;:qa!&quot;
afl-fuzz -i input -o output -S fuzzer03 -- ./src/vim -u NONE -i NONE -n -X -Z -e -m -s -S @@ -c &quot;:qa!&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 총 4개 코어로 퍼징을 하게 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Monitor&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;퍼저들이 잘 돌아가고 있는지 afl-whatsup으로 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새 path를 찾지 못 하면 퍼징을 멈추면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1642995864004&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;afl-whatsup [-s] output&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크래시 몽땅 확인&lt;/p&gt;
&lt;pre id=&quot;code_1643349510626&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/sh

for file in ~/fuzzing/fuzzing/output/Main_vim/crashes/*; do
echo $file &amp;gt;&amp;gt; resMain
timeout 4 ~/fuzzing/vim-asan/src -u NONE -i NONE -n -X -Z -e -m -s -S $file -c &quot;:qa!&quot; 2&amp;gt;&amp;gt; resMain
done

for file in ~/fuzzing/fuzzing/output/fuzzer01/crashes/*; do
echo $file &amp;gt;&amp;gt; res1
timeout 4 ~/fuzzing/vim-asan/src -u NONE -i NONE -n -X -Z -e -m -s -S $file -c &quot;:qa!&quot; 2&amp;gt;&amp;gt; res1
done

for file in ~/fuzzing/fuzzing/output/fuzzer02/crashes/*; do
echo $file &amp;gt;&amp;gt; res2
timeout 4 ~/fuzzing/vim-asan/src -u NONE -i NONE -n -X -Z -e -m -s -S $file -c &quot;:qa!&quot; 2&amp;gt;&amp;gt; res2
done

for file in ~/fuzzing/fuzzing/output/fuzzer03/crashes/*; do
echo $file &amp;gt;&amp;gt; res3
timeout 4 ~/fuzzing/vim-asan/src -u NONE -i NONE -n -X -Z -e -m -s -S $file -c &quot;:qa!&quot; 2&amp;gt;&amp;gt; res3
done

for file in ~/fuzzing/fuzzing/output/fuzzer04/crashes/*; do
echo $file &amp;gt;&amp;gt; res4
timeout 4 ~/fuzzing/vim-asan/src -u NONE -i NONE -n -X -Z -e -m -s -S $file -c &quot;:qa!&quot; 2&amp;gt;&amp;gt; res4
done

for file in ~/fuzzing/fuzzing/output/fuzzer05/crashes/*; do
echo $file &amp;gt;&amp;gt; res5
timeout 4 ~/fuzzing/vim-asan/src -u NONE -i NONE -n -X -Z -e -m -s -S $file -c &quot;:qa!&quot; 2&amp;gt;&amp;gt; res5
done

for file in ~/fuzzing/fuzzing/output/fuzzer06/crashes/*; do
echo $file &amp;gt;&amp;gt; res6
timeout 4 ~/fuzzing/vim-asan/src -u NONE -i NONE -n -X -Z -e -m -s -S $file -c &quot;:qa!&quot; 2&amp;gt;&amp;gt; res6
done

for file in ~/fuzzing/fuzzing/output/fuzzer07/crashes/*; do
echo $file &amp;gt;&amp;gt; res7
timeout 4 ~/fuzzing/vim-asan/src -u NONE -i NONE -n -X -Z -e -m -s -S $file -c &quot;:qa!&quot; 2&amp;gt;&amp;gt; res7
done&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;References :&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://d0ngr0thy.tistory.com/127&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://d0ngr0thy.tistory.com/127&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aflplus.plus/docs/parallel_fuzzing/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://aflplus.plus/docs/parallel_fuzzing/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/AFLplusplus/AFLplusplus/blob/stable/docs/fuzzing_in_depth.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/AFLplusplus/AFLplusplus/blob/stable/docs/fuzzing_in_depth.md&lt;/a&gt;&lt;/p&gt;</description>
      <category>pwnable/Fuzzing</category>
      <author>범고래_1</author>
      <guid isPermaLink="true">https://training-1.tistory.com/257</guid>
      <comments>https://training-1.tistory.com/257#entry257comment</comments>
      <pubDate>Mon, 24 Jan 2022 12:44:36 +0900</pubDate>
    </item>
    <item>
      <title>AFL Fuzzing</title>
      <link>https://training-1.tistory.com/256</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Install AFL&lt;/h2&gt;
&lt;pre id=&quot;code_1642959739783&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wget http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz
tar -xvf afl-latest.tgz
cd afl-2.52b
make

# for afl-clang-fast and afl-clang-fast++
cd llvm_mode
make

# or
sudo apt install afl++&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;From git&lt;/h2&gt;
&lt;pre id=&quot;code_1643193988936&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone https://github.com/google/AFL
cd AFL
make
cd llvm_mode
make&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Build target binary with afl-gcc&lt;/h2&gt;
&lt;pre id=&quot;code_1642959730889&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CC=[AFL_DIR]/afl-2.52b/afl-gcc CXX=[AFL_DIR]/afl-2.52b/afl-g++ ./configure&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;ASAN&lt;/h2&gt;
&lt;pre id=&quot;code_1642959724179&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export AFL_USE_ASAN=1

CC=[AFL_DIR]/afl-2.52b/afl-clang-fast CXX=[AFL_DIR]/afl-2.52b/afl-clang-fast++ CFLAGS=&quot;-fsanitize=address -g&quot; CXXFLAGS=&quot;-fsanitize=address -g&quot; LDFLAGS=&quot;-fsanitize=address -g&quot; ./configure

export PATH=/usr/lib/llvm-10/bin:$PATH&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Fuzzing&lt;/h2&gt;
&lt;pre id=&quot;code_1643093586148&quot; class=&quot;sas&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;afl-fuzz -i input -o output -- ./src/vim -u NONE -i NONE -n -X -Z -e -m -s -S @@ -c &quot;:qa!&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;stdin fuzzing은 -f 옵션으로 파일 지정하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;-m none 옵션을 주면 메모리 제한 해제&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Reproduce and check crashes&lt;/h2&gt;
&lt;pre id=&quot;code_1642959710798&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for file in output/crashes/*;do
echo Input: $file &amp;gt;&amp;gt; crash.log
./vim -u NONE -i NONE -S $file -c :qa! 2&amp;gt;&amp;gt; crash.log
done&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;</description>
      <category>pwnable/Fuzzing</category>
      <author>범고래_1</author>
      <guid isPermaLink="true">https://training-1.tistory.com/256</guid>
      <comments>https://training-1.tistory.com/256#entry256comment</comments>
      <pubDate>Mon, 24 Jan 2022 02:42:42 +0900</pubDate>
    </item>
  </channel>
</rss>