분류 전체보기
-
[Programmers] [1차] 프렌즈4블록[+] 알고리즘 [+] 2020. 5. 24. 16:38
[문제 설명] 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 프렌즈4블록. 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임이다. 만약 판이 위와 같이 주어질 경우, 라이언이 2×2로 배치된 7개 블록과 콘이 2×2로 배치된 4개 블록이 지워진다. 같은 블록은 여러 2×2에 포함될 수 있으며, 지워지는 조건에 만족하는 2×2 모양이 여러 개 있다면 한꺼번에 지워진다. 블록이 지워진 후에 위에 있는 블록이 아래로 떨어져 빈 공간을 채우게 된다. 만약 빈 공간을 채운 후에 다시 2×2 형태로 같은 모양의 블록이 모이면 다시 지워지고 떨어지고를 반복하게 된다. 위 초기 배치를 문자로 표시하..
-
[Programmers] 행렬의 곱셈[+] 알고리즘 [+] 2020. 5. 5. 13:09
[문제 설명] 2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다. 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다. 곱할 수 있는 배열만 주어집니다. [풀이 과정] 말 그대로 행렬의 곱셈을 코드로 구현하면 된다. 배열을 머릿속에서 이차원으로 그리고 뒤집고 하면서 머리가 찌끈찌끈해지는 전형적인 알고리즘 문제다. def solution(arr1, arr2): arr3 = list(map(list, zip(*arr2))) answer = [] for i in range(0, len(arr1)): arr = [] for j in r..
-
OSI 7계층이란??[+] Security [+]/네트워크 2020. 5. 4. 09:11
카카오톡에서 까똑! 하고 문자가 수신됬다. 핸드폰을 켜서 보니 카카오페이지에서 (광고)문자가 수신됬다. 쓰읍.... 역시 갠톡이 올리가 없다. 이 망할 광고문자는 어디서 어떻게 망할 날라오는 것일까? 허공을 지나 핸드폰에 달라붙는 것일까? 그럴리 있나! 이 광고문자의 여정을 천천히 살펴보자! 송신자는 광고문자를 1)카카오톡에서 작성한다. 내부적으로 카카오톡에서 2)광고문자를 포장한다. 광고문자가 서로 3)주고받는 형태인지 망할 일방적 통보인지 정한다. 상대편 4)카카오톡에 전송된다고 세팅한다. 5)내 핸드폰에 날라온다 세팅한다. 6)내 핸드폰에 무사히 전달 될 수 있게 연결해준다. 7)전파를 통해 광고문자를 송신한다. 광고문자가 내 핸드폰에 도달하기까지 7개의 관문을 거쳐야 한다. 네트워크 통신 과정에서..
-
[Lord of SQLInjection] #20 dragon[+] Security [+]/Lord of SQLInjection 2020. 5. 4. 06:34
야~ 이제 20번째 문제 드래곤! 뭔가 이제 엄청난 몬스터가 나온듯 하다. 좋아! 살펴보자! 신박하게도 쿼리 자체에 주석이 삽입되어있어 우리는 저걸 피해야한다. 줄바꿈(\n %0a)로 피할 수 있다! 필자는 ?pw=%0aand pw='123' or id='admin 을 넣어서 해결했다. 이경우 ?pw=%0a or id='admin 만 넣으면 id = guest 와 id = admin 둘다 만족하게 된다. 따라서 id = guest를 False 시키기위해 의미없는 pw =123 을 추가로 집어넣어 쿼리를 만들어 줘야한다. 여튼!
-
[Lord of SQLInjection] #19 xavis[+] Security [+]/Lord of SQLInjection 2020. 5. 4. 06:25
19번째 문제 자비스! 자비스? 아이언맨? 악당이 맞나 싶지만. 우리 앞은 가로막는건 뭐든 밟고 지나간다! 좋아! 문제를 살펴보자! 보니 특별한걸 찾지 못하겠다. 어째서 이런 문제가 19번째 문제인 것인가? like 와 reget가 필터링 되어있고, 쿼리는 두번 실행되는데 두번째에는 addslashes와 select pw 를 한다는 점? 그것말고 특별한게 보이지 않는다. 첫번째에서 Blind SQL Injection으로 pw 값을 정확히 찾아내면 그만 아닌가? 흐음... 아몰랑 일단 파이썬 코드를 작성한다. 좋아 비밀번호의 길이는 12! 음? 역시 잘 되지 않는다. 어디서부터가 문제인 걸까 영 풀리지 않아서 구글링을 하며 찾아보았더니 이런 맙소사 비밀번호가 애초에 영어가 아니었다. 그러니 인식하지 못한 ..
-
[Lord of SQLInjection] #18 nightmare[+] Security [+]/Lord of SQLInjection 2020. 5. 4. 05:11
18번째 문제 악몽! 코드를 살펴보자면 비밀번호를 입력해서 레코드를 조회해야하는데 id != 'admin'이라고 admin으로 조회하는 걸 막아놨다. 여느때와 같이 prob과 _ . ( ) 는 필터링 되어있고 # 과 - 도 막혀있어서 id!='admin' 부분을 날려버릴수도 없고? 뭔가 한가지 빠져있는거같은데? ; + (null)로 쿼리를 끊어 버릴 수 있지 않은가? 이번엔 쿼리가 pw가 id보다 앞서 있는 형태다. 쿼리를 끊어버리세요~ 가 출제자의 의도인 듯 하다. 좋아! 쿼리를 끊어버리는 것까지는 알겠으나 if(strlen($_GET[pw])>6) exit("No Hack ~_~"); 에서 글자수를 6글자까지로 제한을 걸어 놨다. 쿼리를 ')하고 닫고 ;%00 까지 만 4글자를 쓰는데 어떻게 하란 말..
-
[Lord of SQLInjection] #17 zombie_assassin[+] Security [+]/Lord of SQLInjection 2020. 5. 4. 04:49
17번째 괴물 좀비어쌔신? 좀비어쌔신이라니? 세상에 이런 몬스터도 있나..? 음...? 여튼! 코드를 살펴보자 이번엔 파라미터로 입력받은 값에 역슬래쉬를 추가하고 문자열을 뒤집는다. 이런 이유에서 역슬래쉬 또한 뒤에 역슬래쉬가 붙어서 이스케이프 처리된다. 으으... 세상에나... 그럼 어떻게 풀어야하는가? 우리는 따옴표 앞에 역슬래쉬가 붙기를 원한다. 그렇다면 addslash코드를 역이용 하면 되지 않나?? 역슬래쉬를 붙인후 문자열을 뒤집어서 준다. 그렇다면? ?id="&pw=%231%20ro 를 쿼리로 삽입하여 풀 수 있다. 좀비어쌔신 컷!
-
[Lord of SQLInjection] #16 succubus[+] Security [+]/Lord of SQLInjection 2020. 5. 4. 04:18
16번째 서큐버스! 코드를 살펴보자! 흐음. 이번 문제는 특별히 id값을 입력해야한다. 이유가 있지 않을까?? 물론! 이 문제를 풀려면 알아야하는 개념이 있다. 이스케이프 문자! 대부분은 문자열을 타이핑하려고 할때 따옴표를 사용해야함을 알고있지않은가? 하지만 문자열 안에 따옴표를 넣고싶다면? 'i'm good!' 이런식이라면 문자열이 끊어지게 된다. 그래서 'i\'m good' 이렇게 역슬래쉬를 앞에 붙여서 따옴표를 문자열 안에 포함시킬 수 있다. 위의 문제도 마찬가지다! id='' and pw='' 여기 id값에 역슬래쉬를 입력하게 되면 id='\' and pw='' 즉 id = '\'and pw='' id 값으로 'and pw= 를 입력한 셈이 된다! 그럼 pw 값에 쿼리를 마음껏 생성해서 %23으로..