본문 바로가기
728x90
반응형

전체 글116

Python 변수, 객체, 메모리영역, 참조 변수는 stack, 객체는 heap에 존재 a = 1 id(a)는 변수 a에 대한 id가 아니고 a가 가리키는 1이라는 객체의 id이다. b = 1 id{a)와 id(b)는 같다. 단, 256까지만. 257부터는 별개의 객체가 힙 메모리에 할당된다. a = 257 b = 257 id(a)와 id(b)는 같다. 출처 https://blog.naver.com/PostView.naver?blogId=myca11&logNo=222611107006&proxyReferer=undefined https://angangmoddi.tistory.com/76 https://wikidocs.net/2836 2022. 6. 12.
Python mutable, immutable, 클래스 default param, 얕은복사 클래스 내부에 default param을 넣고 싶으면 __init__ 메소드에 넣으면 된다. mutable(가변) : list, dic, set, class immutable(불변) : 숫자, string, tuple None 메소드에 default param 설정할 때 def aaa(data = p[1, 2, 3]): 처럼 mutable object가 들어가면 얕은 복사가 일어난다. taxi2와 taxi3 인스턴스를 만들 때 아무 값도 주지 않아 __init__ 메소드에서 customer = [] 가 사용되었다. 이 때 []는 mutable object(list) 여서 얕은 복사가 일어나 taxi2와 taxi3가 같은 [] 를 가리키게 된다. 출처 https://testspoon.tistory.com/.. 2022. 6. 12.
Python iterable, iterator iterable - 여러개의 값을 가지는 객체. - 반복 가능한 객체. - for문에 넣어서 돌릴 수 있는 것. - list, tuple, dic, set, string 모두 iterable한 객체이다. iterator - iter() 내장함수를 통해 iterable 한 객체로부터 iterator를 만들 수 있다. - iterator의 내장함수 next()를 통해 하나씩 데이터에 접근하고 현재 상태값을 저장한다. - iterator는 1회용 객체이다. 모든 데이터에 접근이 끝나면 없어진다. - iterator는 독립적인 객체이다. ex) a = [1, 2, 3] i1 = iter(a) i2 = iter(a) -> i1 과 i2 는 다르다. i1을 2번 print 하면 3이 남아 있고 i2를 1번 prin.. 2022. 6. 11.
python remove(), del, pop() a = [1, 2, 3] a.remove(1) : 데이터 접근 -> [2, 3] del a[1] : 인덱스 접근 -> [1, 3] a.pop(1) : 인덱스 접근 -> [1, 3] a.pop() : 아무 인자를 안주면 맨 뒤에 값 추출 후 삭제 -> [1, 2] 2022. 6. 11.
해커스쿨 FTZ level20 (HackerSchool) 풀이 힌트를 보자 마지막 uid로 바꾸는 setreuid 함수가 있고 얼마나 많이 입력하든 fgets 함수가 79바이트까지만 받게되어있어 버퍼오버플로우는 불가능하다. 대신에 printf 함수에 인자로 bleh 변수가 그대로 들어가서 포맷스트링 공격이 가능하다. 포멧스트링이란 https://bloofer.net/94 포맷스트링 공격(Format String Attack)이란? 포맷스트링 공격(Format String Attack)이란? 포맷스트링 공격은 프로그램에 입력된 문자열 데이터가 명령으로 해석될 때 발생합니다. 이러한 방식으로 공격자는 코드를 실행하거나 스택 메모리 일부 bloofer.net 설명을 명료하게 잘 해주셨으니 참고 문제를 풀기 전에 알아야하는게 있다. printf 함수가 실행될 때의 메모리영.. 2021. 11. 18.
728x90
반응형