전체 글 173

2022 CODEGATE 예선전에 참여하고

해킹을 시작하고 처음 정식으로 참여해본 CODEGATE였다. 일반부의 APT0팀의 pwnable요원?으로 참여하였고 결과는 첫 출전치고 나름 준수했다. 무려 141팀중 32등(1728points 32/141th) 이었다. 26일 저녁부터 27일까지 꼬박새며, 팀원들과 디스코드 채널을 통해 생사를 확인하며 문제를 풀었는데, 거의 전우애가 느껴졌다. 특히 새벽 3시 경에 arvm 디버깅을 위해 arm 환경세팅, captcha 통과하고 드디어 신나는 마음에 함수포인터 설정해주는 녀석을 디버깅하려고 봤는데, 해당 부분까지 도달하기 위해 통과해야되는 로직을 마주하고 거의 패닉에 빠졌다. 그래서 디스코드에 저리 쳐놓고 머리 식힐겸 물 한잔 마시러 다녀왔는데 아래에 이토록 귀엽게 화이팅 표시가 달려있는 걸 보고 포기..

일기 2022.03.06

[2022 CODEGATE] ARVM Write-Up (Pwnable)

2022 CODEGATE 예선전이 2월 26일 오후 7시 - 27일 오후 7시 진행되었다. 처음으로 참여해본 CODEGATE였는데, 팀원들과 나름 준수한 성적을 낸거 같아 개인적으로 참 뿌듯하다. 한 문제라도 잡고 확실하게 풀어보자라는 생각으로 임했는데, 다행히도 한문제는 풀었다. 그렇게 처음보자마자 쭉 붙잡고있었던 문제가 바로 arvm 문제이다. Points : 793 (25 solves) 로 마감했고, 나는 26일 오후 7시부터 바로 시작해 27일 오전 4시~5시경에 풀었던 걸로 기억한다. Welcome! Here is my Emulator. It can use only human. Always SMiLEY :) 우선 arvm 문제의 Description을 보면 다음과 같이 Emulator라고 소개해..

CTF/2022 CODEGATE 2022.03.06

Dreamhack.io 유저랭킹 첫 페이지에 들다

2022년 3월 6일. 비로소 dreamhack.io 유저랭킹 첫 페이지에 들었다. 랭킹은 25위. 한 27위 즈음부터 상위 0.1%도 달았다. 이제 나도 "뭐하는 사람이세요..?" 라는 물음에 나름 "아 해킹하는 사람입니다." 라고 대답할 수 있지않을까..? (라는 바람) 부끄럽지만 드림핵 덕분에 그래도 남에게든 스스로든 나름 해킹공부했다는 걸 증명할 수 있는 수단이 생긴거 같아서 기분이 좋다. 그리고 공부에 큰 원동력이 된다. 방학내내 강의하나 문제하나 보고 풀때마다 올라가는 경험치와 순위를 보며 가슴이 떨렸다. 거의 눈이 뜨면 드림핵..! 드림핵.....! 하며 크롬 URL 창에 dreamhack.io를 입력하지 않았던가 싶다. 조금 오바를 보태서 초딩때 했던 메이플스토리 레벨업 만큼이나 재밌지 않..

일기 2022.03.06

CTF pwnable 환경구성을 위한 쉘코드 (pwnable_conf.sh)

https://github.com/junfuture1103/pwnable_conf GitHub - junfuture1103/pwnable_conf: Configuration for Pwnable Configuration for Pwnable. Contribute to junfuture1103/pwnable_conf development by creating an account on GitHub. github.com 도커 등을 이용해 새로운 환경(OS) 를 설치하고, pwntools와 pwndbg등 필요한 도구들을 일일히 설치하는 것 만큼 귀찮은게 없다. 그래서 만들었다. vim / pwntools / pwndbg를 알아서 설치해주는 쉘 스크립트이다. 사용법은 아래 .sh 코드를 복붙해준 뒤 (이름 뒤에 ..

Dockerfile 주어졌을때 CTF Configuration 정리 & ARM Cross Compile 및 ARM 바이너리 gdb 디버깅 하는법

CTF문제에서 다음과 같이 Dockerfile을 제공해주는 경우가 있다. 이때 만약 문제서버와 동일한 환경에서 바이너리를 실행시키며 디버깅을 하고싶을땐 어떻게 해야할까? 그래서 준비해봤다. 1. docker 파일 이용해서 해당 환경 OS 실행 (docker image생성 -> 컨테이너 생성 -> 컨테이너 접속) 2. 관련 프로그램 설치 (gdb, pwntools) 3. 바이너리가 다른 아키텍쳐(i386가 아닌)에서 컴파일 된 경우, 크로스 컴파일 (처음 실행) 도커 빌드 및 컨테이너 실행 #dockerfile 이용해 image 생성 sudo docker build -t codegatearvm:cgarvm ./ #image 이용해 컨테이너 실행 sudo docker run -i -t -d -p 9080:8..

VADMUD 프로젝트를 마무리하며

논문을 게재했습니다. 제목은 Verification of De-Identification Techniques for Personal Information Using Tree-Based Methods with Shapley Values 입니다. 이게 무슨 뜻이지 싶겠지만 개인정보 비식별 방법론을 AI를 이용해 검증하고, 개인정보 형태의 데이터셋에 가장 효과적인 머신러닝 알고리즘이 뭔지 찾아가는 내용입니다. 데이터 3법 개정으로 가명정보가 활발히 사용되고 있는데, 이미 비식별화가 완료된 데이터셋에 대한 검증은? 이라는 생각에 여기까지 오게되었습니다. 캡스톤 시작할때부터 꼭 개발을 하고싶다는 제 고집에 흔쾌히 PM까지 맡아주고 머신러닝 구현에 핵심적인 데이터 레이블링 방법론을 만들어준 성지누나, 머신러닝 학습..

일기 2022.02.21

바이너리에 ld와 libc 새로 링킹하기 (D_PRELOAD=./libc.so.6 segfault 뜰때 해결하기)

CTF문제에서 libc파일을 제공해줬을때, 이와 같은 명령어로 바이너리를 실행시킬때 내가 원하는 라이브러리가 로드되게 할 수 있다. (LD_PRELOAD는 변수로 설정된 라이브러리를 먼저 로딩시켜주는 환경변수이다.) LD_PRELOAD=./libc.so.6 ./bypass_valid_vtable 이때 이 명령어가 segfault가 뜨는 경우가 있는데, 이걸 해결하는 방법을 적어보고자한다. 문제는 원하는 라이브러리가 로딩은 되었으나, 바이너리 내부에 연결(링킹)되어 있는 libc와 ld는 이와 다르기 때문에 발생한다. 이에 바이너리에 링킹된 libc와 ld도 우리가 원하는 버전으로 맞춰줘야한다. https://github.com/NixOS/patchelf GitHub - NixOS/patchelf: A s..

728x90