SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
DEFCON CTF 풀어보기
KERT 박상석
soett55@gmail.com
목차
1. 해킹 관련 용어 설명
2. DEFCON CTF
3. DEFCON CTF(BABY-RE) 나의 풀이
4. DEFCON CTF(BABY-RE) 남의 풀이
1. 해킹 관련 용어 설명
• 취약점(Vulnerability)
- 이용하여 권한을 호기득할 수 있는 소프트웨어적인 버그
• 공격코드(Exploit)
- 취약점을 공격할 수 있는 코드
• 개념 증명 코드(PoC Code)
- 취약점을 증명할 수 있는 코드
• 시스템 소유(System Pwned)
- 취약점을 이용하여 해당 시스템을 점유하였을 때 사용하는 표현
1. 해킹 관련 용어 설명
• CVE : Common Vulnerabilities and Exposures
- 취약점에 대한 정보를 모아놓은 List-up
- 취약점 공개(Vulnerability Disclosure)
• Software Bug Hunting
- 소프트웨어 취약점을 특정 이득을 위해 찾아내는 행위(Pwn2Own)
- 소프트웨어 결함, 체계 설계상 허점을 고의적으로 찾아내 금전적 이득,
테러 예방, 해커 명석획득 등의 특정 이득을 노리는 일련의 행위
1. 해킹 관련 용어 설명
• CTF(Capture the Flag)
- 사이버 인프라 구조를 방어하고
- 동시에 상대의 공격을 득점하는 모의 사이버 대회
- “깃발을 잡아라”라는 뜻의 대회명
• CTB(Capture the Bug)
- 취약점을 공격할 수 있는 코드
2. DEFCON CTF
•
2. DEFCON CTF
2. DEFCON CTF
2. DEFCON CTF
2. DEFCON CTF
2. DEFCON CTF
• GIT 을 이용해서 가져온다.
2. DEFCON CTF
2. DEFCON CTF
• baby-re는 RE 챌린지 파일이다, 이것은 선형함수에 대한 기본 셋이 들어가
있다. 그 챌린지는 coefficients를 각 함수의 텀에 따라 내보낸다.
• 그 후 너는 수동으로 풀던가 인터넷 사이트에서 풀 수 있다. 그 모르는 함수
는 플래그 바이트이다. 맞는 값을 넣으면 식에 대해서 체크하고 만약 맞으면
플래그를 내보낸다. 선형 시스템의 사이즈는 플래그의 사이즈 이다.
• 플래그를 쉽게 만들기 위해 , 원하는 플래그 스트링을 세팅하고, baby-
re.c를 출력하기위한 create-baby-re 실행할수 있는 것이 있다. 그 후
babe-re.c로 아웃풋한뒤 런 메이크 시킨다.
• 안티 리버싱 바이트 기본이 들어가서 좀 힘들거다.
2. DEFCON CTF
3. DEFCON CTF(BABY-RE) 나의 풀이
3. DEFCON CTF(BABY-RE) 나의 풀이
3. DEFCON CTF(BABY-RE) 나의 풀이
• Baby-re
- 숫자 13개 넣으니 오류뜸.
- 13개가 옳게 드가면 플래그가 뜰거임
• create-baby-re
- 넣은 플래그에 맞춰서 baby-re 소스를 만든다.
3. DEFCON CTF(BABY-RE) 나의 풀이
• 시나리오
1. create-baby-re로 내가 넣은 abcd로 소스를 만든다.
2. Baby-re.c가 나온다. 그것을 컴파일해서 실행파일 생성
3. 그 실행파일 가지고 abcd하면 옳다.
3. DEFCON CTF(BABY-RE) 나의 풀이
3. DEFCON CTF(BABY-RE) 나의 풀이
• 시나리오
1. create-baby-re로 내가 넣은 abcd로 소스를 만든다.
2. Baby-re.c가 나온다. 그것을 컴파일해서 실행파일 생성
3. 그 실행파일 가지고 abcd하면 옳다.
4. 그러면 그 구조 소스오디팅&리버싱&분석
3. DEFCON CTF(BABY-RE) 나의 풀이
Var이라는 변수에 인풋을 받고
CheckSolution에 줘서 체크
3. DEFCON CTF(BABY-RE) 나의 풀이
Var변수가 변하는 지점 찾기
C변수에 자꾸 이상한 숫자 넣고
연산해서 하드코딩해놓음
3. DEFCON CTF(BABY-RE) 나의 풀이
Var변수가 변하는 지점 찾기
Var 변수가 변하지 않고 if문으로
linear system(방정식) 연산에
이용됨
3. DEFCON CTF(BABY-RE) 나의 풀이
• 시나리오
1. create-baby-re로 내가 넣은 abcd로 소스를 만든다.
2. Baby-re.c가 나온다. 그것을 컴파일해서 실행파일 생성
3. 그 실행파일 가지고 abcd하면 옳다.
4. 그러면 그 구조 소스오디팅&리버싱&분석
5. C배열의 if문 체크루틴 바로 전의 값을 확인
6. 방정식을 풀어서 var[0]~var[3]을 구한다.
7. 그리고 푼다!
3. DEFCON CTF(BABY-RE) 나의 풀이
If문에서 곱 연산을 처음 실행하기
때문에 그것만 따라가면서 찾아냄
$rbp-0x40에 c[0]값이 있다.
$rbp-0x48에 내가입력한
var[0]값이 있다.
3. DEFCON CTF(BABY-RE) 나의 풀이
$rbp-0x40에 c[0]값이 있다.
C[0] = 6731 ~~
C[0]~c[15]까지 총 16개
이제 인자, 값 나왔으니 미지수만
구하면 됨.
3. DEFCON CTF(BABY-RE) 나의 풀이
3. DEFCON CTF(BABY-RE) 나의 풀이
3. DEFCON CTF(BABY-RE) 나의 풀이
• 실제 주어진 문제를 풀어보자.
• 진짜 문제
- Var 배열 13개
- C 배열 0 ~ 168 : 169개
3. DEFCON CTF(BABY-RE) 나의 풀이
아까 같은 방식으로 값을 뽑아왔
다.
하나씩 적기싫어서 복사해서 파싱
하기로 함
3. DEFCON CTF(BABY-RE) 나의 풀이
방정식의 결과값도 != 뒤에 값이
나온다는 규칙으로 파싱하기로 함
3. DEFCON CTF(BABY-RE) 나의 풀이
3. DEFCON CTF(BABY-RE) 나의 풀이
3. DEFCON CTF(BABY-RE) 나의 풀이
3. DEFCON CTF(BABY-RE) 나의 풀이
4. DEFCON CTF(BABY-RE) 남의 풀이
4. DEFCON CTF(BABY-RE) 남의 풀이
by smoke leet everyday
아이다로 뜯어봄
4. DEFCON CTF(BABY-RE) 남의 풀이
by smoke leet everyday
아이다로 뜸어봄
그리고 디컴파일
4. DEFCON CTF(BABY-RE) 남의 풀이
by smoke leet everyday
아이다로 뜸어봄
그리고 디컴파일
Z3라는 이상한 모듈 사용
4. DEFCON CTF(BABY-RE) 남의 풀이
by ByteBandits
Hopper,angr사용
나보다 코드 짧아보임
4. DEFCON CTF(BABY-RE) 남의 풀이
by SiBears
Mathematica라는 처음보는 유료
API 사용
4. DEFCON CTF(BABY-RE) 남의 풀이
by duks
Hopper, ida decompile
파이썬 Numpy 사용
4. DEFCON CTF(BABY-RE) 남의 풀이
by hack.carleton
Binary ninza 사용
Angr(좋아보임) 사용
Reference
• http://www.slideshare.net/CodeEngn/2014-code-engn-
conference-10
• https://github.com/legitbs/quals-2016
• https://ctftime.org/event/320
• http://equationsolver.intemodino.com/en/solve-systems-of-
equations.html
• http://docs.scipy.org/doc/numpy-
1.10.1/reference/generated/numpy.linalg.solve.html
• https://ctftime.org/task/2402
Q&A

Contenu connexe

Tendances

[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작GangSeok Lee
 
Windows reversing study_basic_1
Windows reversing study_basic_1Windows reversing study_basic_1
Windows reversing study_basic_1Jinkyoung Kim
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장SeongHyun Ahn
 
Linux reversing study_basic_4
Linux reversing study_basic_4Linux reversing study_basic_4
Linux reversing study_basic_4Jinkyoung Kim
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11흥배 최
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Insuk (Chris) Cho
 
Pwnable study basic_3
Pwnable study basic_3Pwnable study basic_3
Pwnable study basic_3Jinkyoung Kim
 
Assembly 스터디 2
Assembly 스터디 2Assembly 스터디 2
Assembly 스터디 2Jinkyoung Kim
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
Kth개발자 세미나 1회
Kth개발자 세미나 1회Kth개발자 세미나 1회
Kth개발자 세미나 1회Byeongsu Kang
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장SeongHyun Ahn
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011Esun Kim
 
모두의 JIT 컴파일러
모두의 JIT 컴파일러모두의 JIT 컴파일러
모두의 JIT 컴파일러우경 성
 
니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트효준 강
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
 
Windows reversing study_basic_5
Windows reversing study_basic_5Windows reversing study_basic_5
Windows reversing study_basic_5Jinkyoung Kim
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1Chris Ohk
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
 
Pwnable study basic_1
Pwnable study basic_1Pwnable study basic_1
Pwnable study basic_1Jinkyoung Kim
 

Tendances (20)

[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
 
Windows reversing study_basic_1
Windows reversing study_basic_1Windows reversing study_basic_1
Windows reversing study_basic_1
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장
 
Linux reversing study_basic_4
Linux reversing study_basic_4Linux reversing study_basic_4
Linux reversing study_basic_4
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017
 
Pwnable study basic_3
Pwnable study basic_3Pwnable study basic_3
Pwnable study basic_3
 
Assembly 스터디 2
Assembly 스터디 2Assembly 스터디 2
Assembly 스터디 2
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
Kth개발자 세미나 1회
Kth개발자 세미나 1회Kth개발자 세미나 1회
Kth개발자 세미나 1회
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
System+os study 4
System+os study 4System+os study 4
System+os study 4
 
모두의 JIT 컴파일러
모두의 JIT 컴파일러모두의 JIT 컴파일러
모두의 JIT 컴파일러
 
니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary
 
Windows reversing study_basic_5
Windows reversing study_basic_5Windows reversing study_basic_5
Windows reversing study_basic_5
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
Pwnable study basic_1
Pwnable study basic_1Pwnable study basic_1
Pwnable study basic_1
 

Plus de NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

Plus de NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

[Kerference] DEFCON CTF 풀어보기 - 박상석(KERT)

  • 1. DEFCON CTF 풀어보기 KERT 박상석 soett55@gmail.com
  • 2. 목차 1. 해킹 관련 용어 설명 2. DEFCON CTF 3. DEFCON CTF(BABY-RE) 나의 풀이 4. DEFCON CTF(BABY-RE) 남의 풀이
  • 3. 1. 해킹 관련 용어 설명 • 취약점(Vulnerability) - 이용하여 권한을 호기득할 수 있는 소프트웨어적인 버그 • 공격코드(Exploit) - 취약점을 공격할 수 있는 코드 • 개념 증명 코드(PoC Code) - 취약점을 증명할 수 있는 코드 • 시스템 소유(System Pwned) - 취약점을 이용하여 해당 시스템을 점유하였을 때 사용하는 표현
  • 4. 1. 해킹 관련 용어 설명 • CVE : Common Vulnerabilities and Exposures - 취약점에 대한 정보를 모아놓은 List-up - 취약점 공개(Vulnerability Disclosure) • Software Bug Hunting - 소프트웨어 취약점을 특정 이득을 위해 찾아내는 행위(Pwn2Own) - 소프트웨어 결함, 체계 설계상 허점을 고의적으로 찾아내 금전적 이득, 테러 예방, 해커 명석획득 등의 특정 이득을 노리는 일련의 행위
  • 5. 1. 해킹 관련 용어 설명 • CTF(Capture the Flag) - 사이버 인프라 구조를 방어하고 - 동시에 상대의 공격을 득점하는 모의 사이버 대회 - “깃발을 잡아라”라는 뜻의 대회명 • CTB(Capture the Bug) - 취약점을 공격할 수 있는 코드
  • 11. 2. DEFCON CTF • GIT 을 이용해서 가져온다.
  • 13. 2. DEFCON CTF • baby-re는 RE 챌린지 파일이다, 이것은 선형함수에 대한 기본 셋이 들어가 있다. 그 챌린지는 coefficients를 각 함수의 텀에 따라 내보낸다. • 그 후 너는 수동으로 풀던가 인터넷 사이트에서 풀 수 있다. 그 모르는 함수 는 플래그 바이트이다. 맞는 값을 넣으면 식에 대해서 체크하고 만약 맞으면 플래그를 내보낸다. 선형 시스템의 사이즈는 플래그의 사이즈 이다. • 플래그를 쉽게 만들기 위해 , 원하는 플래그 스트링을 세팅하고, baby- re.c를 출력하기위한 create-baby-re 실행할수 있는 것이 있다. 그 후 babe-re.c로 아웃풋한뒤 런 메이크 시킨다. • 안티 리버싱 바이트 기본이 들어가서 좀 힘들거다.
  • 15. 3. DEFCON CTF(BABY-RE) 나의 풀이
  • 16. 3. DEFCON CTF(BABY-RE) 나의 풀이
  • 17. 3. DEFCON CTF(BABY-RE) 나의 풀이 • Baby-re - 숫자 13개 넣으니 오류뜸. - 13개가 옳게 드가면 플래그가 뜰거임 • create-baby-re - 넣은 플래그에 맞춰서 baby-re 소스를 만든다.
  • 18. 3. DEFCON CTF(BABY-RE) 나의 풀이 • 시나리오 1. create-baby-re로 내가 넣은 abcd로 소스를 만든다. 2. Baby-re.c가 나온다. 그것을 컴파일해서 실행파일 생성 3. 그 실행파일 가지고 abcd하면 옳다.
  • 19. 3. DEFCON CTF(BABY-RE) 나의 풀이
  • 20. 3. DEFCON CTF(BABY-RE) 나의 풀이 • 시나리오 1. create-baby-re로 내가 넣은 abcd로 소스를 만든다. 2. Baby-re.c가 나온다. 그것을 컴파일해서 실행파일 생성 3. 그 실행파일 가지고 abcd하면 옳다. 4. 그러면 그 구조 소스오디팅&리버싱&분석
  • 21. 3. DEFCON CTF(BABY-RE) 나의 풀이 Var이라는 변수에 인풋을 받고 CheckSolution에 줘서 체크
  • 22. 3. DEFCON CTF(BABY-RE) 나의 풀이 Var변수가 변하는 지점 찾기 C변수에 자꾸 이상한 숫자 넣고 연산해서 하드코딩해놓음
  • 23. 3. DEFCON CTF(BABY-RE) 나의 풀이 Var변수가 변하는 지점 찾기 Var 변수가 변하지 않고 if문으로 linear system(방정식) 연산에 이용됨
  • 24. 3. DEFCON CTF(BABY-RE) 나의 풀이 • 시나리오 1. create-baby-re로 내가 넣은 abcd로 소스를 만든다. 2. Baby-re.c가 나온다. 그것을 컴파일해서 실행파일 생성 3. 그 실행파일 가지고 abcd하면 옳다. 4. 그러면 그 구조 소스오디팅&리버싱&분석 5. C배열의 if문 체크루틴 바로 전의 값을 확인 6. 방정식을 풀어서 var[0]~var[3]을 구한다. 7. 그리고 푼다!
  • 25. 3. DEFCON CTF(BABY-RE) 나의 풀이 If문에서 곱 연산을 처음 실행하기 때문에 그것만 따라가면서 찾아냄 $rbp-0x40에 c[0]값이 있다. $rbp-0x48에 내가입력한 var[0]값이 있다.
  • 26. 3. DEFCON CTF(BABY-RE) 나의 풀이 $rbp-0x40에 c[0]값이 있다. C[0] = 6731 ~~ C[0]~c[15]까지 총 16개 이제 인자, 값 나왔으니 미지수만 구하면 됨.
  • 27. 3. DEFCON CTF(BABY-RE) 나의 풀이
  • 28. 3. DEFCON CTF(BABY-RE) 나의 풀이
  • 29. 3. DEFCON CTF(BABY-RE) 나의 풀이 • 실제 주어진 문제를 풀어보자. • 진짜 문제 - Var 배열 13개 - C 배열 0 ~ 168 : 169개
  • 30. 3. DEFCON CTF(BABY-RE) 나의 풀이 아까 같은 방식으로 값을 뽑아왔 다. 하나씩 적기싫어서 복사해서 파싱 하기로 함
  • 31. 3. DEFCON CTF(BABY-RE) 나의 풀이 방정식의 결과값도 != 뒤에 값이 나온다는 규칙으로 파싱하기로 함
  • 32. 3. DEFCON CTF(BABY-RE) 나의 풀이
  • 33. 3. DEFCON CTF(BABY-RE) 나의 풀이
  • 34. 3. DEFCON CTF(BABY-RE) 나의 풀이
  • 35. 3. DEFCON CTF(BABY-RE) 나의 풀이
  • 36. 4. DEFCON CTF(BABY-RE) 남의 풀이
  • 37. 4. DEFCON CTF(BABY-RE) 남의 풀이 by smoke leet everyday 아이다로 뜯어봄
  • 38. 4. DEFCON CTF(BABY-RE) 남의 풀이 by smoke leet everyday 아이다로 뜸어봄 그리고 디컴파일
  • 39. 4. DEFCON CTF(BABY-RE) 남의 풀이 by smoke leet everyday 아이다로 뜸어봄 그리고 디컴파일 Z3라는 이상한 모듈 사용
  • 40. 4. DEFCON CTF(BABY-RE) 남의 풀이 by ByteBandits Hopper,angr사용 나보다 코드 짧아보임
  • 41. 4. DEFCON CTF(BABY-RE) 남의 풀이 by SiBears Mathematica라는 처음보는 유료 API 사용
  • 42. 4. DEFCON CTF(BABY-RE) 남의 풀이 by duks Hopper, ida decompile 파이썬 Numpy 사용
  • 43. 4. DEFCON CTF(BABY-RE) 남의 풀이 by hack.carleton Binary ninza 사용 Angr(좋아보임) 사용
  • 44. Reference • http://www.slideshare.net/CodeEngn/2014-code-engn- conference-10 • https://github.com/legitbs/quals-2016 • https://ctftime.org/event/320 • http://equationsolver.intemodino.com/en/solve-systems-of- equations.html • http://docs.scipy.org/doc/numpy- 1.10.1/reference/generated/numpy.linalg.solve.html • https://ctftime.org/task/2402
  • 45. Q&A