Z3로 공부하는 SMT Solver, 그리고 CTF

Slides:



Advertisements
Similar presentations
최적화 문제 해결 현대 생산  운영관리 부산대학교 산업대학원 2012 년 2 학기 하병현.
Advertisements

2 장 자료형 및 연산자 - 김욱동 -. 목 차목 차  변수  자료형  유니코드  리스트  튜플  세트  사전  부울  얕은 / 깊은 복사.
Dept. of School of Systems Biomedical Science SoongSil University.
2014 년 가을학기 계산 입문 연습 #2 지도교수 : 박성우 조교 : 김준성 1. 목차 복습하기 정수와 문자열 논리연산자 비교연산자 비교 연산자 & 논리 연산자 조건 연산식 변수 선언 2.
10장. 시기별 학급경영 11조 염지수 이 슬 권용민 신해식.
일본 근세사. (1) 에도막부의 개창 ( ㄱ ) 세키가하라의 전투 (1600) - 히데요시의 사후 다섯 명의 다이로 ( 大老 ) 가운데 최대 영지 (250 만석 ) 를 보유하고 있던 도쿠가와 이에야스가 급부상. 이에 이에야스와 반목해 온 이시다 미쓰나리 ( 石田三成 ),
아니마 / 아니무스 송문주 조아라. 아니마 아니마란 ? 남성의 마음속에 있는 여성적 심리 경향이 인격화 한 것. 막연한 느낌이나 기분, 예견적인 육감, 비합리적인 것에 대 한 감수성, 개인적인 사랑의 능력, 자연에 대한 감정, 그리.
대구가톨릭대학교 체육교육과 06 학번 영안중학교 체육교사 신웅섭 반갑습니다. 반야월초등학교 축구부 대륜중학교 축구부 대륜고등학교 대구가톨릭대학교 차석 입학 대구가톨릭대학교 수석 졸업 2014 년 경북중등임용 체육 차석 합격 영안중학교 체육교사 근무 소개.
일장 - 1 일 24 시간 중의 명기 ( 낮 ) 의 길이 ( 밤은 암기, 낮은 명기 ) 광주기성 - 하루 중 낮의 길이의 장단에 따라 식물의 꽃눈 형성이 달라지는 현상 일장이 식물의 개화현상을 조절하는 중요한 요인 단일식물 - 단일조건에서 개화가 촉진되는 식물 장일식물.
1990 년 대의 중국 대중 음악. (1) 배경 (2) 1990 년대 대중 음악 (3) 중국, 1990 년대의 분위기는 ? - 가사를 중심으로.
문화연구방법 꽃보다 아름다운 그곳에 사는 사람들. 노송동 1 조 김은진 박하늬 나인정. 목차 조사구역 - 중앙시장. 경험지도 노송동 - 중앙시장 사람들의 삶. 진행상황 앞으로의 계획.
2 학년 6 반 1 조 고은수 구성현 권오제 김강서.  해당 언어에 본디부터 있던 말이나 그것에 기초하여 새로 만들어진 말  어떤 고장 고유의 독특한 말  Ex) 아버지, 어머니, 하늘, 땅.
본문 내용의 글자는 Adobe Song Std L, 32pt으로 작성되었습니다.
2014년도 교원 및 기간제교사 성과상여금 전달교육 개 회 국기에 대한 경례 - 인사말
가수 아이돌 김수빈.
선진 고양교육 “유아교육 행정 업무 연수” 유치원 회계실무 및 유아학비 연수 경기도고양교육청.
묵자 겸애, 비명, 비공, 상현, 상동, 천지, 명귀, 삼표 법.
Lecture 9 프로그램 실행의 비용 computation cost – 시간 time, 메모리 memory – tractable vs intractable problems.
박주현 Exploit Helpers 안녕하세요 포너블을 도와주는 exploit helpers에 대해 발표하게된 박주현이라고 합니다.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
사용자메뉴얼 (매물관리) 제 작 사 ㈜ 인포코리아 제 품 명 REAL INFO SE 제 작 환 경 ASP MS-SQL 사용
내 아이를 위한 구강관리.
제16장 원무통계 • 분석 ☞ 통계란 특정의 사실을 일정한 기준에 의하여 숫자로 표시한 것을 말한다.통계로서 활용할 수 있는 조건으로는 ① 동질성을 지녀야 하고 ② 기준이 명확하고 ③ 계속성이 지속되어야 하며 ④ 숫자로 표시하여야 한다 경영실적의.
공부하는 학생선수를 위한 사이버 학습 "다높이" 활용 방법
관계 대수와 SQL.
서울지방세무사회 부가세 교육 사진클릭-자료 다운 세무사 김재우.
2012년 12월단말기 보상판매 교육 자료 CS본부 기술지원팀.
Python Bottle Web Framework
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
Discrete Math II Howon Kim
치매의 예방 김 은민 윤금 노인요양원 치매의.
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
고객DB정제 및 Data Processing 안내
4.2 SQL 개요 SQL 개요 SQL은 IBM 연구소에서 1974년에 System R이라는 관계 DBMS 시제품을 연구할 때 관계 대수와 관계 해석을 기반으로, 집단 함수, 그룹화, 갱신 연산 등을 추가하여 개발된 언어 1986년에 ANSI(미국 표준 기구)에서 SQL.
PHP + Eclipse + Google Code를 이용한 개발환경
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
마산에 대하여 만든이 : 2204 김신우, 2202 권성헌.
기초 프로그래밍 Yang-Sae Moon Department of Computer Science
- 충북창조경제혁신센터 창업동아리 콘테스트 - 사업계획서 작성 목차
Discrete Math II Howon Kim
Introduction to Programming Language
하이컴AS PC판매점 메뉴얼.
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
4장 - PHP의 표현식과 흐름 제어-.
Python.
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio)
6장 마케팅 조사 박소현, 김중호, 박기찬.
13장. NP-완비NP-Completeness
자바 5.0 프로그래밍.
한밭대학교 창업경영대학원 회계정보학과 장 광 식
Ⅶ. 평면도형 2. 부채꼴 [8/15] (2)부채꼴의 호의 길이와 넓이.
제12장. Algorithmic Computation의 한계
게임엔진 프로젝트 발표 상어 사냥 안 정 웅.
스마트폰을 통한 메일서비스 이용방법 (안드로이드폰)
음양오행과 물리학 조 원 : 김용훈, 양범길, 박수진, 윤진희, 이경남, 박미옥, 박지선 (11조)
사회복지사와 리더십 박병순(2010졸업).
(제작자: 임현수)모둠:임현수,유시연,유한민
다문화 사회의 이해 배 상 훈 . 1. 한국사회의 다문화현상 2. 원인과 정책으로 살펴본 다문화 한국사회.
대한민국-스웨덴 수교 60주년 기념 행사 주 스웨덴 대한민국 대사관 (토)
이야기 치료에 대하여 <8조 학문적 글쓰기 발표> 주희록 최은지
첫 번째 수치 문제 컴퓨터시뮬레이션학과 담당교수 : 이형원 E304호,
정부조직론 Team 1 발표 제5장 제1절, 제2절 공공정책학부 강철욱 권지호
청소년 댄스 경연대회 제35회 문화체육관광부장관大賞 전국레크리에이션대회
10장. 컴퓨터 구조에 대한 세 번째 이야기 작성자: 윤성우.
Python Tutorial 4: Data Structures
DataScience Lab. 박사과정 김희찬 (화)
Eclipse Plugin 활용 가이드 ㈜크로센트
Spring, 2019 School of CSE Pusan National University
Python 기본.
중국문학개론 한부와 겅건안문학 중어중국학과 ㅇ이진원 한부와 건안문학.
Presentation transcript:

Z3로 공부하는 SMT Solver, 그리고 CTF

목차 0. 소개 CTF SMT Solver Z3 CTF PROB QnA

소개 Name : 정윤서 NickName : Hanel Age : 18 School : 한국디지털미디어고등학교 Intersts : Reversing, Pwnable Blog : www.han3l.tistory.com Team : …

주의 이 발표는 간단하게 설명합니다. 자신이 SMT Solver의 구현에 관심이 있다면 NP (Non-deterministic Polynomial time) NP-C(Non-deterministic Polynomal time – Complete) Decidable Theory SAT Solver ETC..

CTF CTF ? Capture the flag의 약자 ‘깃발을 잡아라’라는 뜻으로 바이너리 분석이나 취약점 익스를 통해 플래그를 얻을 수 있다. 각 팀마다 서버가 주어질 경우, 상대 팀을 공격하여 플래그를 얻을 수도 있다. CTF 일정은 www.ctftime.org

CTF 요즘 문제 동향 : 웹 < 리버싱 < 포너블 그러면 리버싱에서는 어떤 형태의 문제가 나올까?

CTF 리버싱 악성 프로그램 문제 수학 형태의 분기문이 있는 문제 프로그래밍 능력을 요구하는 문제 Simbolic Excution을 활용하게 끔 하는 문제 ETC..

CTF 이건 사람이 풀 수 있는 수학 문제인가..? 나는 수학을 못하는데.. 심지어 이거 너무 길어.. 아 이걸 어떻게 풀지? : SMT Solver

SMT Solver SAT Solver ? boolean SATistfiability problem 의 약어 수식을 만족하는 값이 존재하는지 찾음 ‘True’ or ‘False’ 임

SMT Solver SMT Solver ? Satisfiability Modulo Theories 의 약자 수식을 만족하는 값이 존재하는지 찾음. 수식을 만족하는 값이 존재할 경우 그 값을 구함. ‘True’ or ‘False’ + 방정식, 부등식 해 구하기 컴퓨터 과학과 수학 분야에서 사용됨.

SMT Solver 는 SAT Solver 가 더욱 발전한 것

지원하는 이론 및 데이터 구조 정수론 실수론 배열 리스트 비트 벡터 Etc.. SMT Solver 지원하는 이론 및 데이터 구조 정수론 실수론 배열 리스트 비트 벡터 Etc.. 종류에 따라서는 문자열 등도 있다.

SMT Solver 식의 표현 x – y > c x + y = c 여기서 x와 y는 미지수, c는 정해져 있는 상수 부등식 또는 방정식, 함수 형태로 표현

SMT Solver SMT Solver 종류 ABSOLVER OPENSMT SMTINTERPOL SMT-RAT SONOLAR YICES Z3 ETC..

Z3 Z3로 하는 이유..? 무언가 익숙한 문법 찾기 쉬운 튜토리얼 문서들 운영체제의 제한성이 없음 4. MIT license ETC..

Z3 미지수 선언 – 정수 Int() Ex) from z3 import * x = Int('x') y = Int('y') solve(x + y > 10, x * y == 20)

Z3 미지수 선언 – 실수 Real() Ex) from z3 import * x = Real('x') y = Real('y') solve(x**2 + y**2 == 5, x**4 == 4 )

Z3 미지수 선언 – 실수 Real() 만약, 내가 소수 5자리 까지만 출력하고 싶다면 set_option(precision=5)

Z3 미지수 선언 – 비트 벡터 BitVec() Ex) from z3 import * x = BitVec(‘x’, 8) y = BitVec(‘y’, 8) solve(x + y*3 == 5, x*7 == 14 )

Z3 그럼 값을 구해달라고 하는 함수는 뭔가요..?

Z3 1. solve() 함수 2. Solver 사용

결국 solve 함수도 내부적으로 Solver를 사용 또한 코드가 길어질 수록 가독성 면에서도 Solver가 훨씬 좋음 Z3 결국 solve 함수도 내부적으로 Solver를 사용 또한 코드가 길어질 수록 가독성 면에서도 Solver가 훨씬 좋음

Z3 Solver Solver() : Solver 객체 생성 함수 add() : 수식을 추가하는 함수 check() : 값이 존재하는지 확인하는 함수 값이 존재하지 않으면 unsat, 값이 존해만 sat 를 반환함 알 수 없을 경우 unknown을 반환. model() : 값이 존재할 경우 값을 구하는 함수 unsat, unknown일 경우 에러를 반환함

Z3 Solver – unknown일 경우 언노운이 뜨는 경우 설명

Z3 Solver – unsat 일 경우

Z3 Solver – sat 일 경우

Z3 Z3 그 외의 함수들 append(), assert_exprs(), insert() : 수식을 추가하는 함수 assertions() : 추가된 수식을 반환하는 함수 push(), pop() : 수식을 넣고 빼고 할 수 있음 reason_unknown() : check() 함수의 반환값이 unknown인 이유를 설 명함 reset() : 추가한 수식을 초기화시키는 함수 Etc..

CTF PROB DEFCON CTF 2016 BABY-RE

CTF PROB Anti Hex-ray patch + Z3 Simbolic Excution

CTF PROB Var[0]부터 var[12]까지 13개의 입력을 받음

CTF PROB CheckSolution 함수에서 숫자를 확인하는 것으로 보임.

CTF PROB CheckSolution 함수에서 숫자를 확인하는 것으로 보임. 하지만 디컴파일 에러가 뜸.

CTF PROB 아이다 매뉴얼을 보면 잘 뜨지 않는 오류라고 함 간간히 보이는 쓰레기 코드 때문에 그런거 같았음.

CTF PROB 그래서 함수 전체를 Undefine 한 후 다시 Code로 변경한 후 함수를 다시 만듬

CTF PROB 디컴파일이 됨. CheckSolution 함수를 보아하니 Z3 참 잘 쓸 자신이 생김

CTF PROB 끝 !

CTF PROB 근데 이거보다 쉬운 방법 없나요?

CTF PROB 2번 방법

CTF PROB angr – symbolic execution Python 모듈임 Shellphish 팀이 제작함 Install : pip install angr

QnA ????

Reference http://argosarch.tistory.com/45 http://xer0s.tistory.com/97 https://z3prover.github.io/api/html/classz3py_1_1_solver.html https://github.com/Z3Prover/z3 https://en.wikipedia.org/wiki/Satisfiability_modulo_theories https://en.wikipedia.org/wiki/Boolean_satisfiability_problem https://kldp.org/node/106972