전체 글
-
Pwnable. 해쿨핸드북 요약 정리 (3차)Pwnable/이론 2020. 1. 1. 03:11
Section 10. 메모리를 Hex dump 뜨기 메모리에 저장된 값들을 살펴보는 방법 Windows 에서 hex editor 는 바이너리 파일을 16진수(hex)로 보여주는 프로그램이다. 현재 실행 중인 메모리의 주소와 값을 16진수롤 출력하는 방법 1, 디버거라는 툴을 이용하여 동적 메모리를 분석하는 방법 2, 메모리의 주소를 출력하는 코드를 소스코드에 추가하는 방법 void dumpcode(unsigned char *buff,int len); (buff엔 dump하고자 하는 메모리의 시작주소, len엔 dump 할 크키를 지정) Section 11. 리틀엔디안과 빅엔디안 리틀엔디안(Little Endian) : 메모리에 저장된 값을 dump 할 때, 순서가 반대로 나타나는 특징 빅엔디안 : 왼쪽에..
-
Pwnable. 해쿨핸드북 요약 정리 (2차)Pwnable/이론 2019. 12. 31. 02:37
Section 04. "메모리 주소"와 친해지기 우리가 사용하는 변수(버퍼)들이 모두 내부적으로는 메모리 주소를 통해서 접근된다 "변수는 삼겹살이다" (해당하는 정보가 3겹) 주소(&연산자),크기(sizeof),값 Section 05. 각 변수의 메모리 주소 비교해보기 나중에 선언된 변수는 낮은 주소를 받게 된다. Section 06. gets() 함수 이해하기 gets() : "키보드로부터 문자열을 입력받아 버퍼에 저장" 하는 함수 이때 하나의 인자를 요구 하는데, 그것은 입력받은 갑을 저장할 버퍼이다. 버퍼란 사실 &burffer 와 동일하다. 즉 burffer 배열 변수의 시작 주소이다. (c언어에서 "배열의 이름은 그 배열의 시작 주소와 동일하다"하고 정의 되어 있기 때문) 인자 : "메모리 주소..
-
Python. 크로아티아 알파벳(2941번)백준문제/Python 2019. 12. 26. 20:34
이건 내가 푼게 아니다.. 정말 너무너무 어려웠다.. 이 문제에서 중요한 것은 크로아티아 알파벳이 길이는 2이지만 출력을 1로 해야하는 것이다. (어려웠다,,나는 너무 많이) 우선 크로아티아 알파벳을 리스트로 만들어놓았다. 그리고 str 형식으로 문자를 입력 받았다. 크로아티아 알파벳의 길이를 세기 위해 replace(word,change w)함수를 사용하여 크로아티아 알파벳을 word로 두고 크로아티아 알파벳의 출력을 1로 하기 위해서 a라는 임의의 문자로 바꾸어주었다. 입력받은 문자열의 길이 len()함수를 사용하여 출력하면 된다. 여기서 i의 역할이 가장 중요하다! (i의 역할을 이해하는것이 중요)
-
Python. OX퀴즈(8958번)백준문제/Python 2019. 12. 23. 00:44
진짜...나는 왜 이렇게 어렵게 생각하는거지... (거의 4시간 이상 쏟아부웠다..) 문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 이 문제에서 중요한것은 O가 연속될 때 점수, 입력이 다 끝난뒤 점수가 나오는 것 이다. (이게 너무 어려웠다. 나한테는...split("x")하고 진짜 ...) 간단히 생각하면 된다. 나는 hap() ,a() 변수를 사용하여 "O"가 ..
-
Pwnable. 해쿨핸드북 요약 정리 (1차)Pwnable/이론 2019. 12. 23. 00:29
이 책의 목표를 이해 할 수 있게끔 노력해보자. 컴파일 - 원시코드(소스코드)에서 목적 코드(출력된 문서)로 옮기는 과정 변수와 상수 - 변수 : 데이터를 저장할 수 있는 메모리 공간 상수 : 사용자가 한번 정해지면 값을 변경할 수 없는 변수 또는 값 함수 - 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미함 배열과 포인터 - 배열 : 연관성 는자료를 한가지 자료형으로 연결시킨 것 포인터 : 변수의 주소값을 저장 Section 01. 프로그램을 공격한다!? 버퍼 오버플로우 (메모리를 다루는 데에 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점) 버퍼 오버플로우 공격의 대상 특징 : 사용자로부터 입력을 받는 프로그램의 실행결과가 달라지는 점을 노렸다! 비정상적인(아주 긴) 내용을 입력하면 프..