이 영역을 누르면 첫 페이지로 이동
포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

페이지 맨 위로 올라가기

포렌식 & 개발 이야기 - Forensics & Development

Pental - Forensics / iOS / Windows / Android / Kakaotalk / Telegram / Etc

[Security Traps] Swapping - C++ Trap #3

  • 2020.04.23 09:51
  • CTF/Security Traps
글 작성자: pental

https://securitytraps.pl/challs/cpptrap3/

 

Exploiting Machine

 

securitytraps.pl

먼저 문제를 살펴보도록 하겠습니다. 문제는 간단합니다.

Question

C++ Trap #3
int main()
{
  unsigned int x = 0xB0FF14a5;
  unsigned int y = 0x7340c00e;
  
/*INPUT*/

  if(x==0x7340c00e && y==0xB0FF14a5) victory();
  return 0;
}

Your main objective is to call the victory function.
You must put one line of your code:
- Max 11 chars.
- You can't use: "main", "victory", "asm", "&", "*", "(", "/".
- You have only one semicolon.

문제의 조건은 3가지 입니다.

- Max 11 chars. (최대 11글자이며, 11글자 안으로 해결하자.)

- You can't use: "main", "victory", "asm", "&", "*", "(", "/". (위 구문들을 사용할 수 없다.)

- You have only one semicolon. (오직 하나의 세미콜론을 사용해라)

소스를 보면 알겠지만, 먼저 x, y가 선언되어 있다.

unsigned int x = 0xB0FF14a5;
unsigned int y = 0x7340c00e;

그리고 if문을 보면 x, y 값이 서로 뒤바껴야 문제가 해결된다.

if(x==0x7340c00e && y==0xB0FF14a5) victory();

그럼 이제 생각을 해봐야한다. 어떻게 해야 11글자 안으로 x와 y값을 바꿀수 있을까?

XOR Swap 이라는 것이 있다.

A = A ^ B;
B = A ^ B;
A = A ^ B;

먼저 위와 같이 이런 방식을 따르며, A와 B의 값이 서로 뒤바뀐다.

위 소스를 조금더 줄여보면 아래 소르와 같이 바꿀수 있다.

A = A ^ A ^ B
B = A ^ B ^ B

이후 위 소스를 조금 더 풀어주고, 정답을 넣어주면 문제가 해결된다.

물론 정답은 여기에 포스팅하지 않을 것이다. 정답이 정 궁금하거나, 문의가 있다면 댓글을 통해서 알려주세요!

저작자표시 비영리

'CTF > Security Traps' 카테고리의 다른 글

[Security Traps] Hello World! - C++ Trap #7  (0) 2020.04.22

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Security Traps] Hello World! - C++ Trap #7

    [Security Traps] Hello World! - C++ Trap #7

    2020.04.22
다른 글 더 둘러보기

정보

포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

  • 포렌식 & 개발 이야기 - Forensics & Development의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

카테고리

  • Category (435) N
    • Forensics (104) N
      • Magnet AXIOM (28)
      • Digital Forensics Informati.. (9)
      • Iphone Forensics (23) N
      • DFC (7)
      • 디지털포렌식전문가2급 자격증 (10)
      • FTK ACE 자격증 (7)
    • 이것저것 (7) N
      • Ubuntu (6)
      • 디스코드 봇 (4)
      • Volatility GUI (2)
    • CTF (32)
      • NEWSECU (14)
      • CTF-d (5)
      • Puzzel - Network Forensics (2)
      • Security Traps (2)
      • system32.kr (5)
      • HMCTF (4)
    • Programming (244) N
      • C (10)
      • Python (11)
      • 백준 (190) N
      • 프로그래머스 (32)
    • 그냥 개발 및 잡담 (16)
      • Docker (2)
      • Google Cloud (3)
      • OS 개발 (3)
    • Best of Best (20)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • pental
  • Forensics
  • axiom
  • 디지털포렌식
  • 포렌식
  • 파이썬
  • 프로그래머스
  • 백준
  • 전체 보기…

정보

pental의 포렌식 & 개발 이야기 - Forensics & Development

포렌식 & 개발 이야기 - Forensics & Development

pental

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © pental.

티스토리툴바