변수
[해커스쿨] FTZ level13 풀이과정
2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level12 풀이과정 소스코드를 보니 long형 변수 i가 존재하고, i의 값이 0x1234567이 아니면 경고 메시지가 출력하는걸 볼 수 있다. 즉, i라는 변수의 값을 체크해서 오버플로우됬는지 판단하는 보안코드라고 볼 수 있겠다.하지만, 이는 너무 단순한 보안코드이다. 그러면 i형 변수가 가리키는 버퍼에 0x1234567을 넣으면 되지 않을까? 공격하자! gdb로 분석해보면, 일단 0x418(1048)만큼 공간을 확보하고, 0x1234567을 [ebp-12]에 저장한다.그리고 strcpy로 argv[1]인자를 복사하고나서 부분에 ebp-12의 값이 0x1234567의 값으로 잘 저장되어 있는지 체크한다.그럼 우리는 앞서 했던 ..
[해커스쿨] FTZ level11 풀이과정
2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level10 풀이과정 힌트!!! 보자고~ attackme 라는 파일이 보이고, 힌트에는 어떤 소스코드가 들어있다. attackme 를 실행시켜 보니. 역시 소스코드데로 실행된다. 즉, 힌트가 attackme의 소스코드 인것이다. 그러면 이 문제는 어떻게 풀어야 될까... 소스 코드를 보니 단순히 256byte의 str배열을 선언하고 setreuid를 실행하고 argv[1]의 인자값을 str에 복사하고 str를 출력하는게 끝이다. 그런데.. strcpy를 사용하는 것을 보니 이또한 버퍼 오버플로우에 취약하다. level9 풀이(http://eunice513.tistory.com/54)를 보면 Buffer Overflow에 대한 설명..
APPLE, Swift 1.1 데이터형과 변수 (작성중)
1.1 데이터형과 변수 # 스위프트의 데이터형 스위프트에선 클래스에서 만들어진 객체는 물론, 정수, 구조체 등의 데이터형도 모두 인스턴스(instance)라고 부른다.스위프트에는 데이터 자체와 그것을 가리키는 포인터(pointer)라는 개념이 없다. 단, 여러 변수를 통해 동시에 참조될 가능성이 있는 형과 그렇지 않는 형은 구별해 두어야 한다. C언어와 마찬가지로, 수치 데이터를 변수에 대입하거나 함수에 전달할때 데이터가 복제되서 이후 연산이나 처리 시에 기존 데이터에는 영향을 주지 않는다. 스위프트에서는 이런 성징을 가진 데이터형을 값형(value type)이라고 한다.값형 데이터는 기본적으로 하나의 변수만 참조할 수 있다. 값형과 달리 대입 시에 복제를 하는 것이 아니라 데이터 자체에 대한 참조(다른..