<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>HeyOn</title>
    <link>https://typemiss.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 7 Apr 2026 22:10:34 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Lifer</managingEditor>
    <item>
      <title>[Pwnable] libc 주어졌을 때 바이너리에 링킹 &amp;amp; 디버깅 (when LD_PRELOAD making segmenation fault)</title>
      <link>https://typemiss.tistory.com/2</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 보통 문제에서 elf, libc 가 주어짐&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 익스하는 os 의 libc 버전과 문제에서 준 libc 버전이 안맞아서 LD_PRELOAD 걸어도 segmentation fault 뜨는 경우 있음&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1. 주어진 libc 에 대응되는 custom loader 가 추가로 필요&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 문제에서 ld 도 주는 경우 있음&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 안주면?... 주어진 libc 에 대응되는 os version 에서 로더만 추출해서 같이 사용하면 되지 않을까..&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- &lt;a href=&quot;https://github.com/matrix1001/welpwn/tree/master/PwnContext/libs/ld.so&quot;&gt;https://github.com/matrix1001/welpwn/tree/master/PwnContext/libs/ld.so&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1597540945620&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;object&quot; data-og-title=&quot;matrix1001/welpwn&quot; data-og-description=&quot; CTF pwn framework. Contribute to matrix1001/welpwn development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/matrix1001/welpwn/tree/master/PwnContext/libs/ld.so&quot; data-og-url=&quot;https://github.com/matrix1001/welpwn&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RIhWx/hyG9ukFvlp/zVyl4nbEscfdyCtbKaFoIK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://github.com/matrix1001/welpwn/tree/master/PwnContext/libs/ld.so&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/matrix1001/welpwn/tree/master/PwnContext/libs/ld.so&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RIhWx/hyG9ukFvlp/zVyl4nbEscfdyCtbKaFoIK/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;matrix1001/welpwn&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt; CTF pwn framework. Contribute to matrix1001/welpwn 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 style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 각 libc 버전에 따른 로더 파일들을 위의 링크에서 발견할 수 있었다. ld-&quot;md5 of libc&quot;.so.2 형식으로 로더 파일들의 리스트가 존재한다. 문제에서 로더가 주어지지 않는 경우 libc의 md5 를 확인하고 알맞는 로더를 해당 링크에서 다운로드 하자 (테스트는 안해봄)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2. custom libc, loader 를 바이너리가 사용하게끔 패치&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/NixOS/patchelf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/NixOS/patchelf&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;NixOS/patchelf&quot; data-og-description=&quot;A small utility to modify the dynamic linker and RPATH of ELF executables - NixOS/patchelf&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/NixOS/patchelf&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cBKkaM/hyGZWAtlye/2V3Obg50mQbTtKTa9QeEK1/img.png?width=322&amp;amp;height=322&amp;amp;face=0_0_322_322&quot; data-og-url=&quot;https://github.com/NixOS/patchelf&quot;&gt;&lt;a href=&quot;https://github.com/NixOS/patchelf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/NixOS/patchelf&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cBKkaM/hyGZWAtlye/2V3Obg50mQbTtKTa9QeEK1/img.png?width=322&amp;amp;height=322&amp;amp;face=0_0_322_322');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;NixOS/patchelf&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;A small utility to modify the dynamic linker and RPATH of ELF executables - NixOS/patchelf&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 style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;patchelf 라는 툴을 이용해 바이너리자체를 수정 --&amp;gt; 링킹을 새로걸어버리면 됨&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yM53S/btqGbO7kyuK/mt2dx6x87aItSWU3jT9tA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yM53S/btqGbO7kyuK/mt2dx6x87aItSWU3jT9tA1/img.png&quot; data-alt=&quot;interpreter 설정, libc 교체&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yM53S/btqGbO7kyuK/mt2dx6x87aItSWU3jT9tA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyM53S%2FbtqGbO7kyuK%2Fmt2dx6x87aItSWU3jT9tA1%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;interpreter 설정, libc 교체&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;--&amp;gt; 이제 실행 가능&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;3. 디버깅&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 그냥 실행시 libc 에 디버깅 심볼이 없어 메인아레나 주소 못 가져오고 peda의 parseheap, heapinfo 등이 안먹힘&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGVQcF/btqGbNN96MN/cer1FTNKTWr3DvWgnX7HXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGVQcF/btqGbNN96MN/cer1FTNKTWr3DvWgnX7HXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGVQcF/btqGbNN96MN/cer1FTNKTWr3DvWgnX7HXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGVQcF%2FbtqGbNN96MN%2Fcer1FTNKTWr3DvWgnX7HXk%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: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- gdb 에서&lt;b&gt; set verbose on&amp;nbsp;&lt;/b&gt;치고 실행시키면 심볼 로딩 안됐다는 것을 볼 수 있음&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djfk60/btqGbOfbtTM/Sb01Vxmn6G6kRbKoNeHoak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djfk60/btqGbOfbtTM/Sb01Vxmn6G6kRbKoNeHoak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djfk60/btqGbOfbtTM/Sb01Vxmn6G6kRbKoNeHoak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdjfk60%2FbtqGbOfbtTM%2FSb01Vxmn6G6kRbKoNeHoak%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: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 우리에게 필요한건 libc6-dbg 패키지라 각 버전에 맞는 패키지를 인터넷에 검색해서 다운받으면 됨.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 그러나 가끔씩 안나오는 버전들이 있음 (&lt;b&gt;obsolete)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;http://old-releases.ubuntu.com/ubuntu/pool/main/g/glibc/&quot;&gt;http://old-releases.ubuntu.com/ubuntu/pool/main/g/glibc/&lt;/a&gt; 여기서 찾아주면 됨.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;ex) libc6-dbg_2.29-0ubuntu2_amd64.deb&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- dpkg -x ./&lt;span style=&quot;color: #333333;&quot;&gt;libc6-dbg_2.29-0ubuntu2_amd64.deb ./&amp;lt;output_folder&amp;gt; 명령어로 적당한 곳에 압축풀기&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 압축풀면 폴더가 겁나 많은데 &amp;lt;output dir&amp;gt;/usr/lib/debug/lib/x86_64-linux-gnu 에 가면 디버깅 심볼 파일들이 있음&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 다른 폴더들 쓸 때 없고 &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;x86_64-linux-gnu 이것만 있으면 됨&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- gdb 상에서 set debug-file-directory &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;output dir&amp;gt;/&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;usr/lib/debug/lib/x86_6&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;4-linux-gnu 로 하고 run 하면 심볼로딩되고 디버깅시 main_arena 주소 불러옴&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSMq41/btqGevk0kif/Li7nqjtyxpiEA2R6URp5M0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSMq41/btqGevk0kif/Li7nqjtyxpiEA2R6URp5M0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSMq41/btqGevk0kif/Li7nqjtyxpiEA2R6URp5M0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSMq41%2FbtqGevk0kif%2FLi7nqjtyxpiEA2R6URp5M0%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;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/bSHpJu/btqGdAm1HuI/Ez6dDtJ2B4DUaqtrK4LfuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSHpJu/btqGdAm1HuI/Ez6dDtJ2B4DUaqtrK4LfuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSHpJu/btqGdAm1HuI/Ez6dDtJ2B4DUaqtrK4LfuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSHpJu%2FbtqGdAm1HuI%2FEz6dDtJ2B4DUaqtrK4LfuK%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: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;--&amp;gt; 힙분석 하면 됨&lt;/span&gt;&lt;/p&gt;</description>
      <category>pwnable</category>
      <category>Debug</category>
      <category>glibc-2.29</category>
      <category>Heap</category>
      <category>LD</category>
      <category>LIBC</category>
      <category>patchelf</category>
      <category>peda</category>
      <category>pwnable</category>
      <author>Lifer</author>
      <guid isPermaLink="true">https://typemiss.tistory.com/2</guid>
      <comments>https://typemiss.tistory.com/2#entry2comment</comments>
      <pubDate>Sun, 2 Aug 2020 10:58:49 +0900</pubDate>
    </item>
  </channel>
</rss>