모바일 포렌식 개요

https://youtu.be/qpadWn-HfN0?si=CyE61FGUJJ6Yvwvm


모바일 포렌식

  • 모바일 기기(안드로이드, iOS 등)를 조사하는 디지털 포렌식
  • 모바일 기기에 저장되어 있는 통화 기록, 문자 메시지, 위치정보, 앱 사용 기록 등의 데이터 추출 및 분석
구분 피처폰 스마트폰
운영체제 Symbian, Android(최신 기종) Android, iOS, Windows Mobile, Blackberry OS 등
주요 데이터 통화 기록, 문자 메시지, 사진, 연락처, 일정 등 통화 기록, 문자 메시지, 사진, 연락처, 일정 이메일, 위치 정보, 애플리케이션 사용 기록 등

 

 

모바일 포렌식의 특징

  • 사용자가 모바일 기기를 사용하면서 생성된 데이터가 시간 정보와 함께 저장됨
    • 프라이버시 관련 데이터가 많이 존재 (사용자가 독점적으로 사용하는 기기이기 때문)
    • 사용자 행위 분석(전화, 메신저, 웹 브라우저 검색, 사진 촬영 등)에 용이
  • 데이터 수집 및 분석을 위해 해결해야 할 이슈가 많음
    • 민감 정보를 다루기 때문
    • 하드웨어/소프트웨어 암호화, 안티 포렌식 기법 (공장 초기화, 와이핑, 안전한 삭제 등)
  • 기종별로 저장되는 데이터의 위치와 종류가 다름
    • 제조사, 하드웨어, 기능의 다양성 + 짧은 제품 개발 주기 → 다수의 모델
    • 같은 제조사여도 칩셋의 종류에 따라 데이터의 종류나 위치가 다를 수 있음
    • 모델별 저장되는 데이터 종류와 저장 위치를 식별할 필요 있음
  • 데이터 동기화, "기기" 중심 → "계정" 중심 서비스 제공
    • 클라우드 저장소, 메신저 (클라우드에 있는 한 계정에서 다양한 디지털 기기의 데이터 한꺼번에 수집하는 상황도 추후 발생하게 될 것)
    • IoT 시대, "구심점"
      • 스마트폰으로 연결, 매개체 역할

 

모바일 데이터 종류

  • 시스템 정보
    • 기기 모델 및 버전 정보
    • 네트워크 연결 정보
    • 다운로드 및 설치된 앱 목록
    • 사용자 계정 정보
  • 사용자 데이터
    • 연락처
    • 통화 기록
    • 문자 메시지 기록
  • 텍스트 포맷
    • 텍스트 형태로 저장된 데이터
    • *.log, *.xml, *.cfg 등 다양한 형태의 포맷(확장자)으로 데이터가 존재함
    • 주요 데이터: 기기 정보, 시스템 로그, 애플리케이션 설정 정보 등
  • 데이터베이스
    • SQLite 등의 데이터베이스 파일로 저장된 데이터
    • 대부분의 애플리케이션 사용기록이 데이터베이스로 기록됨
  • 멀티미디어
    • 사진, 동영상, 문서 

 

모바일 저장장치

  • 플래시 메모리(Flash Memory)
    • 모바일 디바이스 데이터 저장을 위해 플래시 메모리 사용
    • 종류
      • eMMC(embedded MultiMedia Card) → 저가형 모델 
      • UFS(Universal Flash Storage) → 플래그쉽 모델 (최근 출시되는 스마트폰은 대부분 이걸 사용)
    • eMMC vs UFS
      • UFS 2.1 기준 eMMC와 비교하여 약 2배 빠른 속도와 낮은 소비 전력

 

모바일 운영체제

  • 안드로이드(Android)
    • 구글(Google)에서 개발한 임베디드 운영체제
      • 리눅스(Linux) 커널에서 동작하며, C/C++ 라이브러리가 포함되어 있음
    • 개방형 플랫폼으로 다양한 기기에서 구동 가능
      • 스마트폰, 태블릿 PC, 스마트 워치, 네비게이션, 스마트 TV, AI 스피커 등
  • iOS
    • 애플(Apple)에서 개발한 유닉스 기반의 모바일 운영체제
    • 애플의 여러 제품에 사용되었지만 현재는 iPhone만 사용
      • iPad: 2019년에 iPadOS로 분리
      • Apple TV: 2015년에 tvOS로 분리

 

모바일 데이터 수집

수집에 필요한 절차들

  • 통신 차단
    • 포렌식 조사를 하기 위해 압수한 경우에는 통신 차단을 해야 함
      • 모바일 기기는 무선 네트워크에 연결되어 원격으로 증거물 훼손 및 조작 가능
    • 차단 방법
      1. 전파 차단 장비 활용
        • Faraday Bag을 이용하여 통신 차
      2. 비행기 모드 (Airplane Mode)
        • 통신을 차단하는 내장된 기능을 사용하는 방식
        • 데이터 수집 시 주로 사용되는 통신 차단 방법
  • 침수 대응
    • 스마트폰이 침수되면 전원을 켜지 않는 것이 중요
    • 습기 제거
      • Paraben사의 Save-A-Phone
      • 가방에 소금과 같이 두어 습기 제거
      • 실리카겔
    • 3~5일 건조 후 전원 공급 → 데이터 수집 및 분석 수행

 

 

https://www.samsungsds.com/kr/insights/competitive-advantages-by-it-modernization.html

 

IT 현대화를 통한 경쟁 우위 확보 전략 및 사례 분석 | 인사이트리포트 | 삼성SDS

이 글에서는 IT 인프라, 애플리케이션, 그리고 서비스의 현대화를 통해 기업이 어떻게 더 신속하고 안정적인 서비스를 제공할 수 있는지, 그리고 마이크로서비스, 서버리스 아키텍처, 데브옵스

www.samsungsds.com


IT 현대화(IT Modernization)

기업의 노후화된 IT 자원을 최신 버전으로 업그레이드하거나 새로운 시스템을 도입하는 것

  • IT 환경이 시스템을 직접 운영하는 '온프레미스'→제3자 서비스 프로바이더로부터 데이터 리소스를 제공받는 '클라우드'로 이동
    • 신속한 규모 확장/글로벌 가용성 보장
    • 클라우드 서비스의 형태: IaaS(Infrastructure as a Service), PaaS(Platform as a Service), SaaS(Software as a Service) 등
  • 온프레미스 기반에서 운영하던 모놀리식 애플리케이션을 클라우드 환경의 마이크로서비스 아키텍처로 대체하는 것이 IT 현대화에 해당
  • 레거시 시스템 폐기하고 신규 시스템 도입하는 것/최신 기술로 레거시 시스템 보완하는 것 모두 IT 현대화
  • 바람직한 IT 현대화란?
    • 기업의 중요 자산을 좀 더 저렴한 비용으로 신속 서비스할 수 있도록.
    • 레거시 시스템의 기능과 데이터를 바탕으로 플랫폼 인프라, 아키텍처, 기능 구조에 최신 기술 적용해 새 프로세스와 서비스 제공하는 것

 

IT 현대화 위한 주요 기술

  1. 마이크로서비스 아키텍처 
    • 시스템 내 기능 간 의존성 감소 
    • 기존의 모놀리식 아키텍처는 하나의 애플리케이션에 모든 기능이 들어가는 개발 방식임.
      • 장점: 개발과 배포가 하나의 패키지로 관리됨
      • 단점: 서비스 규모가 커져 기능이 추가될수록 개발과 배포에 어려움이 발생
    •  마이크로서비스 아키텍처는 애플리케이션을 작은 서비스 단위 집합으로 구성하고 각 서비스가 느슨하게 연결되도록 설계
      • 작은 단위로 나누어진 서비스끼리 네트워크 API 통신을 하며 상호 의존성이 낮음
      • 서비스 단위로 탄력적이고 선택적인 확장, 독립적 배포 가능
  2. 서버리스(Serverless) 기반 운영 모델
    • 운영 환경의 간소화
    • 모놀리식 아키텍처는 확장의 기본 단위가 전체 서비스/마이크로서비스 아키텍처는 확장의 단위가 하나의 큰 서비스가 아닌 하위의 작은 서비스
    • 마이크로서비스 아키텍처는 SaaS, 서버리스에 더 적절
      • 마이크로서비스가 효과적으로 운영되는 서버리스 환경은 기업에 운영 관리 간소화, 비용 절감, 유연한 확장성과 가용성 보장
  3. 데브옵스(DevOps) 자동화 배포 방식
    • 서비스 제공의 가속화
    • 데브옵스는 소프트웨어의 개발과 운영을 통합하여 보다 신속하고 안정적으로 고품질의 제품을 제공하는 방법론
    • 마이크로서비스 아키텍처를 통해 나누어진 서비스의 개발 및 배포를 자동화할 뿐 아니라 빠르고 안정적으로 제공할 수 있도록 해 신속하고 효율적인 소프트웨어 프로세스 갖출 수 있게 함

 

IT 현대화에 대한 접근 방식

레거시 시스템을 분석하고 비즈니스 요구사항을 파악한 뒤 IT 현대화를 통해 얻을 수 있는 수익과 비용, 복잡성과 종속성 탈피 등의 가치를 설정하고 실행해야 함. 

  1. Rehost 방식
    • 온프레미스로 운영하던 애플리케이션을 클라우드 환경으로 옮기는 것
    • 소스코드를 그대로 유지하며 클라우드 리소스 사용할 수 있는 방법
    • 가장 기본적인 형태의 온프레미스 애플리케이션 현대화 방안
    • 적은 비용, 낮은 위험부담, 가용성 증가
    • 주로 IaaS로 이동
  2. Refactor 방식
    • 레거시 시스템의 기능만으로 고객 요구사항에 대응하기 힘들 경우 기능을 추가하거나 성능 개선하는 방법
    • 포괄적으로는 레거시 시스템의 재사용을 의미하기도 함
    • 애플리케이션 아키텍처를 마이크로서비스로 바꾸는 구조적인 변화, 기능의 서버리스화, 컨테이너화와 같은 사례
  3. Replace 방식
    • 새로운 시스템으로 교체하는 방법
    • 요구사항에 맞게 시스템의 기능과 구성 요소를 새로 작성하거나 새 제품으로 바꾸는 것
    • 기존 시스템으로 제공할 수 없는 기능과 더 많은 요구사항 해결하기 위해 사용 가능한 방법임
    • 큰 비용과 위험 부담을 수반

문제 설명

admin이라는 ID로 로그인하는 문제


서버 생성해서 접속했더니

 

모티브가 트위터인 듯

로그인 버튼/회원가입 버튼이 각각 있다.

Sign in
Sign Up

 

회원가입 창이 있으니 임의의 ID PW로 회원가입을 먼저 해 본다. 

회원가입 후 로그인까지 해 보니, 

이렇게 나름 SNS처럼 뜬다. 

hello world 쳐서 Tmeet 해 보니까

대충 이렇게...

여기서 힌트를 얻을 건 없어 보임.

우측 상단 Find People/Settings/Helps 다 눌러 봐도 Not yet이라고 함. 

 

문제에서 요구하고 있는 게 admin으로 로그인하는 거니까, admin이라는 회원 정보가 이미 존재하는지 회원가입을 시도해 보겠다. 

이미 존재하는 ID. 그렇다면 패스워드를 알아내서 로그인을 해야 한다.

 

<head>
 <style>
  body {background-color:#eef;}
  table td {text-align:center; background-color:#dde;}
  .ex {text-align:left; color:#99a; font-size:9pt;}
 </style>
 <script>
  function chk(f){
   if(f.id.value.length<4){alert("chk id"); return false;}
   if(f.ps.value.length<7){alert("chk ps"); return false;}
   return true;
  }
 </script>
</head>
<body>
<center>
 <img src="./tmitter.png">
 <form onsubmit="return chk(this);" method="post">
  <table>
   <tr><td>ID</td><td><input type="text" name="id" maxlength="32"></td><td class="ex">at least 4char</td></tr>
   <tr><td>PS</td><td><input type="password" name="ps" maxlength="32"></td><td class="ex">at least 7char</td></tr>
   <tr><td colspan=2><input type="submit" value="join"></td></tr>
  </table>
 </form>
</body>
<!-- hint : you need join with admin -->

소스코드를 열어 봐도 감이 안 와서 구글링의 힘을 조금 빌렸다. 

mysql에서 id의 데이터 타입은 고정 문자열이라 더 큰 문자열 입력하면 뒤에 문자열 잘려서 입력됨.

→ admin + 공백 26글자 + 아무 문자 1개 넣어 주면 해당 문자가 잘린 채 admin으로 저장됨.

이렇게 하려면 총 33글자인데..

소스코드에서 maxlength가 32로 제한되어 있음

 

이를 관리자 도구에서 33으로 수정해 준 뒤

 

위에서 말한대로

admin                           a 로 회원가입을 해 보겠다. 

 

회원가입에 성공함

로그인을 시도해 보니,

이렇게 admin 계정으로 뜬다! 

사실 내가 자꾸 공백 칸 한 개씩 빼먹어서 그냥 admin a로 로그인 되길래... 애먹었는데 공백 개수 다시 점검하고 했더니 잘 된당

풀이 성공~

'SWUFORCE > 워게임 풀이' 카테고리의 다른 글

[wargame.kr] md5 password (web)  (0) 2024.10.01
[wargame.kr] type confusion (web)  (2) 2024.10.01
[wargame.kr] strcmp (web)  (0) 2024.09.24
[Dreamhack] Broken Password (misc)  (0) 2024.08.27
[Dreamhack] rev-basic-0 (reversing)  (0) 2024.08.27

문제 설명

strcmp 함수를 우회할 수 있다면, 플래그가 표시됩니다.


 

서버 생성 후 접속. 

<?php
    require("./lib.php"); // for FLAG

    $password = sha1(md5(rand().rand().rand()).rand());

    if (isset($_GET['view-source'])) {
        show_source(__FILE__);
        exit();
    }else if(isset($_POST['password'])){
        sleep(1); // do not brute force!
        if (strcmp($_POST['password'], $password) == 0) {
            echo "Congratulations! Flag is <b>" . $FLAG ."</b>";
            exit();
        } else {
            echo "Wrong password..";
        }
    }

?>
<br />
<br />
<form method="POST">
    password : <input type="text" name="password" /> <input type="submit" value="chk">
</form>
<br />
<a href="?view-source">view-source</a>

페이지의 view-source 누르면 이렇게 소스코드를 보여 준다. 

문제 설명에서 strcmp 함수를 우회하라고 했으니까 strcmp가 있는 라인을 주의 깊게 봤다. 

 

	if (strcmp($_POST['password'], $password) == 0) {
            echo "Congratulations! Flag is <b>" . $FLAG ."</b>";

여기 코드에서도, strcmp를 사용해 입력받은 password와,

코드 시작부에서 지정하고 있는 패스워드 값 ($password = sha1(md5(rand().rand().rand()).rand()); 을 통해 랜덤 숫자로 해시화된 비밀번호)를 비교하여 두 문자열이 일치할 시 플래그를 나타낸다는 것을 알 수 있다.

 

코드 자체는 엄청 간단하다.

다만 패스워드가 임의 생성되는 거라 내가 단순히 서버에 password 입력해서 풀 수 있는 건 아님...

랜덤 난수를 버퍼 스위트 같은 걸로 입력해도 한나절 걸릴 듯

정말 코드 속 취약점을 이용해서 풀이해야 한다. 

 

일단 strcmp 함수는 매개변수로 들어온 두 개의 문자열을 비교하여 문자열이 완전히 일치하면 0을 반환하는 함수이다.

그리고 문자열 두 개가 아니라, 문자열과 배열을 비교하면 두 값이 같지 않더라도 0을 출력하게 된다.

소스코드에서 내가 입력하는 password를 배열 형식의 password[]로 변경해 주면 문제가 해결될 것 같다!

이렇게 수정하여 name을 배열로 만들어 버렸다. 

 

 

password 입력 칸에 임의로 '123'을 입력해 본다. 

문제 해결 완료~

'SWUFORCE > 워게임 풀이' 카테고리의 다른 글

[wargame.kr] type confusion (web)  (2) 2024.10.01
[wargame.kr] tmitter (web)  (0) 2024.09.24
[Dreamhack] Broken Password (misc)  (0) 2024.08.27
[Dreamhack] rev-basic-0 (reversing)  (0) 2024.08.27
[Dreamhack] file-special-bit (misc)  (0) 2024.08.20

https://www.igloo.co.kr/security-information/%ec%a7%80%ea%b8%88-%ea%bc%ad-%ec%95%8c%ec%95%84%ec%95%bc-%ed%95%a0-%eb%b3%b4%ec%95%88-%ec%b4%88%ec%9e%90%eb%8f%99%ed%99%94%eb%a1%9c-%ea%b0%80%eb%8a%94-%ea%b8%b8/

 

지금 꼭 알아야 할 보안 ‘초자동화’로 가는 길

과거 ‘산업혁명’이라고 일컬어졌던 사회 구조의 큰 변화에는 ‘기술의 진보가 인간의 노동력을 대체한다’는 공통점이 있었다. 제임스 와트가 발명한 증기기관이, 전기 동력의 보편화가, 컴

www.igloo.co.kr


 

자동화

  • 사이버 공격이 점점 더 정교해지고 발생하는 데이터 양이 폭발적으로 증가함에 따라, 이에 효율적 대응을 위한 자동화 기술이 그 어느 때보다 필요해짐
  • AI를 악용한 고도화된 사이버 공격과 함께 내부자 위협에 의한 정보 유출 사고가 급격히 증가하는 추세
  • 날로 증가하는 보안 위협과 그에 비해 현저히 부족한 보안 전문가의 수. → 자동화의 필요성

 

1. SOAR(Security Orchestration, Automation and Response)

  • 보안 운영·위협 대응 자동화 솔루션
  • 여러 보안 도구와 기술을 하나의 통합된 플랫폼에서 관리할 수 있도록 지원하면서 일원화된 침해 대응 프로세스를 구현하고 보안 환경 전반에 걸친 자동화를 가능케 함.
    • 이렇게 조성된 환경을 토대로 공격 유형별 최적의 대응 방안을 매뉴얼화한 '플레이북(Playbook)'을 활용해 탐지된 공격에 대한 자동 분석 및 대응을 수행
  • 크게 오케스트레이션과 자동화로 나뉨

보안 오케스트레이션

  • 다양한 보안 솔루션, 도구, 기술들을 결합하고 연동하는 것
  • IT 환경의 복잡화로 공격자가 겨냥할 수 있는 공격 표면이 늘어남. 무분별한 보안 솔루션 도입은 프로세스의 복잡성만 증대시킴 → 오케스트레이션(조율)의 필요성

SPiDER SOAR

  • 이글루코퍼레이션에서 제작한, 보안 위협 대응 프로세스를 자동화해 보안 운영의 효율성을 높이는 보안 운영·위협 대응 자동화 솔루션
  • 조직들은 해당 솔루션에 보안 정보 및 이벤트 관리(SIEM) 솔루션, 머신러닝(ML) 기반 보안관제 시스템, 자산 정보 및 취약점 관리 솔루션 등 여러 이기종 보안 솔루션을 손쉽게 연동해 최적의 침해 대응 프로세스 자동화를 구현 가능
  • 플레이북을 기반 자동 대응이 위협 탐지부터 대응까지의 과정 및 시간을 단축

기존 정보 처리 프로세스와 SOAR 프로세스 비교

 

 

2. 자동화를 넘어, 초자동화로

초자동화

  • 가트너가 지난 2022년 주요 전략 트렌드 중 하나로 제시함.
  • AI, 머신러닝, RPA, 로코드·노코드 등 여러 기술, 도구, 또는 플랫폼을 조화롭게 사용해 최대한 많은 비즈니스 및 IT 프로세스를 신속하게 식별, 검증, 자동화하는 하나의 비즈니스 중심적 접근 방식
  • 여러 기술을 결합하여 가능한 모든 작업을 자동화하고, 전체 비즈니스 운영을 최적화하는 전사적 접근법
  • 자동화와의 차이
    • 자동화: 주로 특정 작업을 자동 처리하는 데 초점
    • 초자동화: 인간의 개입 없이 다양한 자동화 기술을 조합해 보다 넓고 통합된 자동화를 구현하는 데 초점

 

보안 초자동화

  • SOAR를 통해 구현할 수 있을 것
    • SOAR는 전반적인 보안 프로세스와 기준, 절차를 혁신하여 한층 더 성숙하고 효율적인 보안 운영을 실현하는 데 목표를 두는데 이는 초자동화의 목표와 결이 같음.

 

문제 설명


리눅스 터미널을 통해 접속해 보니까 이렇다.

내가 어떤 패스워드를 입력해야 하는 것 같은데, 아직까진 힌트가 아무 것도 없으니 문제 파일부터 살펴본다. 

 

prod라는 이름의 파일이 있는데, 파일 형식을 도무지 모르겠다. 

노트패드나 리눅스 텍스트편집기에서 열어도 다 깨진 텍스트로 나옴.

그래서 IDA에 집어넣었다!

어셈블리어 상태로는 너무 방대하다.

바로 디컴파일 해줬음. 

 

int __fastcall main(int argc, const char **argv, const char **envp)
{
  int fd; // [rsp+Ch] [rbp-44h]
  _QWORD *v5; // [rsp+10h] [rbp-40h] BYREF
  __int64 v6; // [rsp+18h] [rbp-38h] BYREF
  char s2[40]; // [rsp+20h] [rbp-30h] BYREF
  unsigned __int64 v8; // [rsp+48h] [rbp-8h]

  v8 = __readfsqword(0x28u);
  proc_init(argc, argv, envp);
  fd = open("/dev/urandom", 0);
  read(fd, password, 8uLL);
  close(fd);
  puts("can u guess me?");
  sleep(0);
  read_input(s2, 32LL);
  if ( !strncmp(password, s2, 8uLL) )
  {
    system("cat flag");
  }
  else
  {
    puts("wrong... :p");
    puts("can you try another path? maybe impossible");
    printf("> ");
    read_input(&v5, 8LL);
    printf("> ");
    read_input(&v6, 8LL);
    *v5 = v6;
    puts("wish your happy sleep");
  }
  return 0;
}

터미널에서 실행하면 "can u guess me?" 라는 문자열이 출력되고,

그 이후에 사용자가 입력한 값이 password와 일치할 시 cat flag를 해서 플래그를 보여준다는 걸

if ( !strncmp(password, s2, 8uLL) )
  {
    system("cat flag");
  }

이 대목을 통해 알 수 있다. 

 

strncmp를 클릭해 내용을 보면

int strncmp(const char *s1, const char *s2, size_t n)
{
  return strncmp(s1, s2, n);
}

이러함. 

 

그리고 "/dev/urandom"을 통해 랜덤한 수를 골라내는 걸로 보아 password에 변수로 난수가 들어간다는 듯...

 

도무지 모르겠어서 strncmp() 함수의 허점에 대해 서치해 봤다. 

드림핵 문제 코멘트에서 다들 strncmp()의 허점을 이용해야 풀이할 수 있다길래...

 

strncmp() 함수는, \x00이 올 때까지만 비교한다. null이 오면 비교를 끝낸다. 

난수인 password가 \x00으로 시작하는 경우, input으로 null을 넣으면 그냥 바로 같은 문자열로 인식하는?... 그런 거라고 함. 그래서 확률적으로 256번 null을 쏘는 코드를 만들면 그 중에 한 번은 플래그를 얻을 수 있다...

 

from pwn import *

while True:
    r = remote("host3.dreamhack.games", 12955)
    r.recvuntil(b'can u guess me?\n')
    r.send(b'\0')
    res = r.recv(100)
    r.close()
    if b'DH' in res:
        print(res)
        break

내가 실행한 코드...

근데 너무 오래 걸렸다~~

 

어쨌든 플래그 획득 성공.

모로 가도 서울만 가면 그만이지...

'SWUFORCE > 워게임 풀이' 카테고리의 다른 글

[wargame.kr] tmitter (web)  (0) 2024.09.24
[wargame.kr] strcmp (web)  (0) 2024.09.24
[Dreamhack] rev-basic-0 (reversing)  (0) 2024.08.27
[Dreamhack] file-special-bit (misc)  (0) 2024.08.20
[Dreamhack] addition-quiz (misc)  (0) 2024.08.20

문제 설명


문제 파일을 실행하면 이렇게 input을 입력하라는 게 뜬다. 

이 상태로는 문제를 풀 수 없기 때문에, IDA에 파일을 넣어 본다. 

 

코드가 이런 식으로 보여진다.

딱 봐도 컴퓨터구조 시간에 배웠던 어셈블리어... 인 것 같다.

IDA 프로그램은 처음 사용해 보는 건데, F5를 누르면 디컴파일이 된다고 해서 눌러 본다. 

 

int __fastcall main(int argc, const char **argv, const char **envp)
{
  char v4[256]; // [rsp+20h] [rbp-118h] BYREF

  memset(v4, 0, sizeof(v4));
  sub_140001190("Input : ", argv, envp);
  sub_1400011F0("%256s", v4);
  if ( (unsigned int)sub_140001000(v4) )
    puts("Correct");
  else
    puts("Wrong");
  return 0;
}

위와 같은 코드가 나왔다. 

sub_140001190 함수로 Input을 출력하고, sub_1400011F0 함수로 입력값을 받는 걸 짐작해 볼 수 있다. 

그리고, sub_140001000 함수에 sub_1400011F0을 통해 입력받은 값인 v4를 넣어 봤을 때 맞을 시 Correct, 틀릴 시 Wrong을 출력한다. 

보통 이렇게 비교하는 함수에 플래그가 있기 마련이다.

 

위 코드만을 봤을 땐 각 함수가 뭔지 알 수 없으니까, IDA 환경에서 sub_140001000 함수를 더블클릭해서 살펴 봤다.

 

 

strcmp() 명령어로 "Compar3_the_str1ng"과 비교한다고 바로 나온다.

이 문제에서는 correct를 출력하는 문자열 = 플래그 라고 했으니까, 이 문자열이 플래그라는 걸 알 수 있다!

 

끝~

'SWUFORCE > 워게임 풀이' 카테고리의 다른 글

[wargame.kr] strcmp (web)  (0) 2024.09.24
[Dreamhack] Broken Password (misc)  (0) 2024.08.27
[Dreamhack] file-special-bit (misc)  (0) 2024.08.20
[Dreamhack] addition-quiz (misc)  (0) 2024.08.20
[Dreamhack] whatsdifferent (misc)  (0) 2024.08.06

+ Recent posts