[C++] L-Value와 R-Value 바닥까지 핥아먹기 ~메모리 효율적으로 고백하는 방법~
·
Studies/C++
들어가기 전에..C++은 헨따이 언어이다. 외부 활동을 하면서 다른 개발자들을 만나 주 사용 언어에 대한 주제가 나왔을 때, C++이 나의 주력 언어라고 하면 다들 급격히 말수가 줄어들며 뒷걸음질 치는 것을 느낄 수 있다. C++은 모든 프로그래밍 언어의 씨육수라고 해도 과언이 아닌 C언어를 기반으로 객체 지향과 같은 개념을 살짝 확장한, 굉장히 자유도가 높은 저수준의 언어이다. 다시 말하면 이 글을 찾아 들어온 당신은 헨따이 언어를 능수능란하게 구사하고 싶어 안달이 난 개발자라는 소리다. 헨따이 언어를 능숙하게 다루려면 당신도 상당한 수준의 헨따이가 되어야만 한다. 점진적으로 러스트가 C++을 완전히 대체하게 될거라는 의견이 늘고 있지만, 러스트를 배워보면 C++을 닮아 러스트도 굉장히 변태적인 언어임..
Unreal Engine 프로젝트를 시작하기 전에..
·
Studies/Unreal Engine
23년 12월 즈음부터 갑자기 바람이 불어 언리얼엔진 프로젝트를 진행해보고 있다. 얼마 전 첫 결과물을 세상에 공개하기도 했는데, 어제부터 오늘까지 양일간 열리고 있는 Unreal Fest '24 Seoul에 참석해 강연을 듣다가 뒤통수를 제대로 맞은듯한 느낌이 드는 일이 있었다. 내가 미처 고려하지 못했던 부분들이나, '아.. 분명 이걸 깔끔하게 해결할 수 있는 훨씬 효율적인 방법이 있을텐데.. 어떻게 해야할지를 전혀 모르겠네'라는 생각이 들었던 부분들을 정말 깔끔하게 해결한 사례를 알려주는 것이 아닌가. 프로젝트 리빌딩을 반드시 해봐야겠다는 의욕이 샘솟는 한편, 이왕 리빌딩하는 김에 그동안 쌓은 노하우를 바탕으로 언리얼 엔진의 특성에 맞게 체계적으로 구조를 다시 설계해보자는 생각이 들어, 차근차근 정..
[2주차] IAM 취약점 및 보안
·
Studies/AWS - AHSS (AWS 보안)
🚨 해당 포스트는 CloudNet@의 서종호 (Gasida) 님께서 진행하시는 AHSS (AWS Hacking & Security Study) 1기의 강의 내용을 바탕으로 작성되었습니다. 저번 주에 이어 이번주에는 IAM에 의해 발생할 수 있는 취약점에 대해 살펴보고, 이를 어떻게 보완할 수 있는지에 대해 살펴봅시다. IAM (Identity and Access Management)는 AWS에서 제공하는 웹 서비스로서, AWS 리소스에 대한 접근 제어와 권한 관리를 통해 AWS 리소스에 대한 보안 수준을 강화하는 역할을 합니다. 우선 2주차 실습을 위한 환경을 세팅해보겠습니다. AWS Cloudshell에서 아래의 명령어를 입력하셔도 되고, 하단의 첨부파일을 다운받아 적용하셔도 됩니다. # 변수 지정 K..
[1주차] S3 취약점 및 보안
·
Studies/AWS - AHSS (AWS 보안)
🚨 해당 포스트는 CloudNet@의 서종호 (Gasida) 님께서 진행하시는 AHSS (AWS Hacking & Security Study) 1기의 강의 내용을 바탕으로 작성되었습니다. 첫 주차에는 S3에서 일어날 수 있는 취약점과 보안 사항에 대해 다룬다. 먼저, S3라는 서비스에 대해 낯설게 느껴지는 사람도 있을 터이니 이에 대해 간략하게 짚고 넘어가고자 한다. AWS에서는 블록 스토리지, 파일 스토리지, 오브젝트 스토리지의 세 가지 종류로 스토리지 서비스를 제공하고 있는데, 각각 EBS, EFS, S3에 대응된다. 1. AWS S3란 무엇인가? AWS S3는 Simple Storage Service의 두문어로서, AWS에서 제공하는 무제한 오브젝트 스토리지 개념으로 이해하면 쉽다. 일반적으로 많이..
[BoB CTF] rev) 01_TEAtime
·
BoB/write-up
이번 대회에서 유일한 C++ 코드이다. 개인적으로 C++을 정말 좋아하지만, 바이너리를 디컴파일해서 나오는 모습은 정말 징그럽더라 flag.txt, flag.txt.enc 두 개의 fd를 생성하고 TEA 알고리즘을 이용해 FLAG를 암호화한 내용을 ~.enc 파일에 작성해 저장한다. 그렇다면 우리는 위의 코드를 그대로 역연산해서 복호화하면 끝난다. 사실 이런 간단한 단순 연산 작업은 GPT한테 맡겨도 잘 나오지만... 디컴파일한 main 함수를 조금 더 자세히 살펴보면, FLAG 문자열을 8바이트씩 끊어 하나의 블록으로 처리하고 있다. 각 블록은 sub_2778 함수로 넘겨 암호화 작업을 수행한다. 또한 암호화 과정에 사용되는 키 역시 main 함수에서 정의하고 있는데 자세한 키 값을 아래와 같다. v9..
[BoB CTF] web) 02_old_python_interpreter
·
BoB/write-up
이 문제를 처음 접했을 당시에는 문제 이름을 보고서 특정 파이썬 버전에서만 발견되는 취약점을 찾아 이를 활용해야하는 문제로 이해했다. 파이썬 3.4.7 버전에서는 'local_file://' 스키마를 통해 file에 접근할 수 있는 취약점이 존재한다. ( [CVE-2019-9948] ) https://bugs.python.org/issue35907 Issue 35907: [security][CVE-2019-9948] Unnecessary URL scheme exists to allow local_file:// reading file in urllib - Python tra The Unnecessary scheme exists in urlopen() urllib when people would protec..
[BoB CTF] web) 01_flying_chicken
·
BoB/write-up
문제 사이트가 닫혀버려서 캡처 이미지를 넣을 수 없는 관계로 줄글로만 작성한다. https://ellisonleao.github.io/clumsy-bird/ Clumsy Bird - A Flappy Bird clone using MelonJS ellisonleao.github.io 위의 사이트와 동일한 오픈소스 기반의 Flappy Bird를 플레이해서 200점을 넘기면 플래그가 출력된다. https://dreamhack.io/wargame/challenges/96 Carve Party Description 할로윈 파티를 기념하기 위해 호박을 준비했습니다! 호박을 10000번 클릭하고 플래그를 획득하세요! dreamhack.io 드림핵에서도 이와 유사하게 호박을 10000번 클릭하면 플래그가 출력되는 문제..
[BoB CTF] misc) 03_I'm_Happy
·
BoB/write-up
(대회 기간 내에 풀지는 못했지만, 늦게나마 풀어서 롸업을 작성해본다.) Audio 기반의 스테가노그래피 문제이다. 보통 이런 경우에는 정형화된 유형이 몇 가지 있는데 크게 세 가지 케이스를 들 수 있다. 1. 오디오 스펙트럼을 시각화하면 플래그가 보이거나 (가청 주파수 대역 안에서 플래그를 그렸다면 음원 만으로도 티가 나지만, 아무래도 20000Hz를 넘긴다면 강아지가 아닌 이상 음원만 듣고서는 바로 알아채기 어렵다. ) 2. LSB에 바이너리를 숨겨두거나 3. 음원 자체가 모스부호 (...)나 SSTV 방식의 음원인 경우 (이 경우에도 다른 음원을 섞을 경우 노이즈를 제거하고 원본 파일을 성공적으로 복원하기 어려워지기 때문에 원본을 숨기지 않고 그대로 출제하는 경우가 많아 티가 많이 난다.) 그렇다면..
[BoB CTF] misc) 02_bob_secret_note
·
BoB/write-up
AES 128bit를 EBC, CBC 두 개의 운영모드를 사용해서 암호화하고 Base64로 인코딩한 값 (토큰)을 바탕으로 admin에 해당하는 토큰값을 추정하여 로그인해야하는 문제이다. 처음 서버에 접근할 때에는 PoW 챌린지가 주어지는데, 아래와 같이 코드를 작성해서 해결해주면 된다. import json from base64 import b64encode def encode_to_base64(data): # Convert the json data to string json_str = json.dumps(data) # Encode the string to bytes json_bytes = json_str.encode() # Convert bytes to base64 encoded string base..
[BoB CTF] misc) 01_find me if you can
·
BoB/write-up
사진 하나를 열어보자마자 매크로 프로그램을 짤 때 Captcha 문자를 입력하기 위해 OCR을 사용해서 코드를 작성해본 경험이 떠올랐다. 이 문제의 경우에도 OCR을 이용하는 것 이외에는 별 다른 풀이가 없어 보이므로 빠르게 코드를 작성해보도록 하자. 이전에 개인적으로 작성했던 매크로 파일을 오랜만에 열어봤더니 당시에는 CUDA기반으로 GPU를 사용해 빠르게 동작할 수 있는 easyocr 이라는 파이썬 모듈을 사용했지만..... 어째선지 잘 작동하지 않아서 최종적으로는 PyTesseract를 사용했다. 코드를 작성할 때에는 사진 속 이미지의 대/소문자 형식과 플래그의 포맷을 참고해서 ' BOB{ '가 존재하는 이미지를 찾으면 되겠다. from PIL import Image import pytesserac..