본문 바로가기

분류 전체보기

(26)
[암호학] 정수론 정수론정수론은 정수를 연구하는 분야이다. 정수론을 왜 배우는지 궁금해할수 있는데 우리가 현대 암호를 이해하려면 정수론을 필히 알고있어야한다. 그러므로 한번 같이 알아보자. Division(나누기)지금부터 나오는 수들은 모두 정수이다. 이 쉬운 나누기를 왜 배우냐고 할 수 있는데  정수론에선 중요하기때문에 짚고 넘어가도록 하겠다. 일반적으로 b를 a로 나눌때(나누어 떨어짐) a와 b의 관계는$$ b=ac (c는 상수) $$ 가 된다(b는 a의 배수).  또한 a는 b의 약수라고 할 수 있다. 이 a와 b의 관계를 정수론에선 $$ a\ |\ b $$ 로 칭한다. 또한 몇가지 공식이 있는데a | b 이고 a | c 이면 a | (b+c) 이다.ex) 3 | 6 이고 3 | 9 이면 3 | 15이다.a | b이..
[소프트웨어 보안] Buffer Overflow Buffer Overflow Buffer Overflow는 1988년도부터 시작된 오래된 공격 기법이다. 물론 오래된 만큼 방어기법이 많이 있지만 오래되거나 보안이 취약한 프로그램에선 아직까지 발견된다. Buffer Overflow란 사용자가 사용하기 위해 잡은 버퍼보다 많은 양의 데이터가 들어와 넘치는 현상을 말한다. 이것이 문제인 이유는 넘친 데이터가 엉뚱한 데이터를 덮어쓰기 때문이다. 이렇게 되면 프로그램의 흐름이 깨지고 해커가 원하는 코드가 실행될 수도 있어서 아주 무서운 공격이다. 말로만 하면 이해하기 힘들 수도 있기 때문에 예시 코드를 보면서 알아보자. Buffer Overflow 예시 int main(int argc, char *argv[]) { int valid = FALSE; // val..
[시스템 보안] Trusted Systems Trusted Systems우리가 이전에 알아본 암호화 방식, 전자서명 등은 소프트웨어적인 접근이지만 이번에 알아볼 Trusted Systems은 하드웨어적 접근이다.  Trusted Systems이란 쉽게 말해 신뢰할 수 있는 시스템이다. 보안 및 신뢰도를 보장하여 사용자에게 신뢰를 준다고 이해하면 편하다. Reference MonitorsReference Monitors란 어떤 파일에 접근할 때 모니터링해 통제하는 기능이다. 내가 파일에 대한 권한이 있는지 등을 확인해 통제하게된다.  이때 no read up, no write down을 기본적으로 수행한다. 그리고 이 Reference Monitor은 다음과 같은 성질을 가진다. Complete mediation : 접근시도를 하나도 놓치지 않고 수..
요즘 일상 최근 발표 준비랑 면접이랑(나중에 후기 쓸 계획)이랑 시험 준비때문에 바쁘네요.. 아마 다음주부터 글 다시 올라갈 것 같아요 조금만 기다려주시면 감사하겠습니다(ㅡㅡ)
[Webhacking.kr] Challenge 24 문제에 접속하면 내 ip와 agent를 보여주고 Wrong IP! 를 출력한다. 소스코드를 한번 보면 client ip{$ip}agent{$agent}"; if($ip=="127.0.0.1"){ solve(24); exit(); } else{ echo "Wrong IP!"; }?> 이렇게 되어있다. 한번 분석해보자 소스코드 분석extract($_SERVER);extract($_COOKIE); $_SERVER과 $_COOKIE의 배열들을 변수화함.extract(배열) : 배열 속의 키값들을 변수화하는 함수배열은 키와 값으로 이루어져 있는데, $data = array("name"=>"Alice","age"=>30)란 값이 있으면extract($data)를 하여 $name(키) = Al..
[Webhacking.kr] Challenge 10 문제에 접속하니 이런 화면이 나온다.  한번 소스코드를 보자. O 소스코드 분석style="position:relative;left:0;top:0"현재 위치onclick="this.style.left=parseInt(this.style.left,10)+1+'px';if(this.style.left=='1600px')this.href='?go='+this.style.left"클릭을 하면 this.style.left를 1px만큼 증가시킴만약 this.style.left가 1600px이라면 현재 링크/?go=(this.style.left의 값) 로 이동함parseInt(문자열, (진수)) : 문자열을 10진수로 변환함. 다른 진수로 변환하고자 하면 직접 입력onmouseover=this.innerHTML='y..
[Webhacking.kr] Challenge 18 오랜만에 ctf를 풀어보는것같다.. 문제를 한번 살펴보자 제목부터 SQL INJECTION이라 적혀있다! 우리가 지난번에 알아본 구문을 넣어보자( ' or 1=1--)  no hack?? 이렇게 쉽게 풀리지는 않을거라 생각했지만 진짜 안풀린다.. 일단 소스코드를 분석해보자  if($_GET['no']){ $db = dbconnect(); if(preg_match("/ |\/|\(|\)|\||&|select|from|0x/i",$_GET['no'])) exit("no hack"); $result = mysqli_fetch_array(mysqli_query($db,"select id from chall18 where id='guest' and no=$_GET[no]")); // admin's no = ..
[Python] Caeser 암호 파이썬 구현 Caeser 암호암호학의 역사에서 알아본 시저 함수를 파이썬으로 구현해보았습니다. k = int(input("Enter k:")) #키 값을 입력s = list(input("Sentence to encrypt:")) #문장 입력for i in range(len(s)) : if ord(s[i]) 122 : #특수문자 제외 continue elif 64 90 : #대문자인 경우 범위 초과 s[i] = ord(s[i]) + k - 26 s[i] = chr(s[i]) elif 96 122 : #소문자인 경우 범위 초과 s[i] = ord(s[i]) + k - 26 s[i] = chr(s[i]) els..