본문 바로가기

전체 글

Python3의 range()는 메모리를 많이 차지하는가? Python에서 일정한 규칙의 요소를 참조하기 위해 range()를 사용하는 경우가 자주 있다. >>> for i in range(5): ... print(i) ... 0 1 2 3 4 이는 다음과 같은 코드와 동일한 결과를 가진다. 그렇다면 range(5)는 [0, 1, 2, 3, 4]와 동일하다고 할 수 있을까? >>> for i in [0, 1, 2, 3, 4]: ... print(i) ... 0 1 2 3 4 결론부터 말하면 그렇지 않다. range(start, stop, step) 함수는 단순히 start부터 step씩 증가하며 stop 전까지의 값을 반환하는 함수가 아니고 파이썬에서 정의되어 있는 클래스의 생성자다. 이 생성자 함수는 불변 순서 타입(immutable sequence type).. 더보기
2021.01.22 Fri - 새로운 시작 사실 저번주 주말부터 진로에 대해 굉장히 많은 고민을 했다. 그때 했던 고민들은 사소한 것도 있고 민감할 수도 있는 내용이라 뭐였는지는 굳이 이곳에 적진 않겠지만 하루 종일(다음날 아침 가족들이 일어날 때까지 고민했다) 고민한 결과 정보보안 분야 취업을 포기하고 개발 분야로 취업을 준비하기로 마음먹었다. 사실 그날 밤새도록 고민했던 '내가 이 분야를 재밌어서 공부하고 있는가?' 라는 질문에 나 스스로가 확실하게 '그렇다'고 대답할 수 없었던 것이 제일 큰 이유다. 1학년때부터 정보보안동아리에 가입해서 활동하기도 했고 정보보안산업기사 자격증도 취득하면서 나름 보안에 대한 열정을 가지고 있었다고 생각했지만 문득 정신을 차려보니 내가 대체 뭘 했지? 라는 생각이 들었다. 만약 내가 정말 보안을 좋아했다면 이것.. 더보기
PHP의 SQL Injection 방지 대책 공부를 하다 보면 LoS든 Webhacking.kr이든 대부분의 워게임 문제들은 PHP와 MySQL로 작성되어 있다. 이는 PHP가 (개발자가 신경 쓰지 않는다면) 특히 보안에 취약한 웹 서버 언어라는 것을 증명하면서도 MySQL과 같이 많이 쓰이고 접하기 쉽기 때문에 아직까지 사용되는 게 아닐까 생각한다. 그런 PHP에서도 이런 취약한 언어라는 오명을 벗기 위해 다양한 방지책들을 제공하고 있는데 이를 이번 포스트에서 실습해보겠다. 실습 환경의 PHP는 8, MySQL은 MariaDB 10.4.17 버전이다. PHP 5나 PHP 7 때와는 달리 PHP 8 버전이 되면서 mysqli_real_escape_string() 같은 함수는 사라졌고 이제 mysqli 클래스를 사용하도록 강제되는 것 같다. 최신 P.. 더보기
DVWA 실습 #8-3 - SQL Injection(high) 2021/01/15 - [프로젝트/DVWA 실습] - DVWA 실습 #8 - SQL Injection DVWA 실습 #8 - SQL Injection DVWA의 일곱 번째 실습 대상인 SQL Injection이다. 현재 데이터베이스에는 5명의 사용자 정보(이름, 비밀번호 등)가 저장되어 있으며 SQL Injection으로 이들의 비밀번호를 탈취하는 것이 목적이다. 현재 haruhiism.tistory.com 문제 해결 방법 이번 단계에서는 로그인한 사용자의 세션에 id 조회 파라미터를 담고 있다. 그래서 한번 조회한 값은 다른 실습 페이지로 이동했다가 돌아와도 그대로 남아있는 것을 볼 수 있다. 하지만 굳이 별도의 창을 띄우는 것은 Burp Suite의 Repeater 같은 툴로 요청을 반복할 수 있기 .. 더보기
DVWA 실습 #8-2 - SQL Injection(medium) 2021/01/15 - [프로젝트/DVWA 실습] - DVWA 실습 #8 - SQL Injection DVWA 실습 #8 - SQL Injection DVWA의 일곱 번째 실습 대상인 SQL Injection이다. 현재 데이터베이스에는 5명의 사용자 정보(이름, 비밀번호 등)가 저장되어 있으며 SQL Injection으로 이들의 비밀번호를 탈취하는 것이 목적이다. 현재 haruhiism.tistory.com 문제 해결 방법 이번 단계에서는 사용자에게서 직접 id 값을 입력받지 않고 HTML의 셀렉트박스를 이용해서 지정된 값만 입력할 수 있도록 제한하고 있다. 하지만 이는 별 의미가 없는게 결국 GET이든 POST든 전달되는 데이터를 수정하면 되기 때문에 Burp Suite를 이용해서 이전 단계에서 사용했.. 더보기
DVWA 실습 #8-1 - SQL Injection(low) 2021/01/15 - [프로젝트/DVWA 실습] - DVWA 실습 #8 - SQL Injection DVWA 실습 #8 - SQL Injection DVWA의 일곱 번째 실습 대상인 SQL Injection이다. 현재 데이터베이스에는 5명의 사용자 정보(이름, 비밀번호 등)가 저장되어 있으며 SQL Injection으로 이들의 비밀번호를 탈취하는 것이 목적이다. 현재 haruhiism.tistory.com 문제 해결 방법 이번 단계에서는 어떤 SQL Injection 필터링도 적용되어 있지 않기 때문에 모든 SQL Injection 기법을 사용할 수 있다. 먼저 확인을 위해 따옴표를 입력해보면 다음처럼 에러가 발생하는 것을 볼 수 있다. 이는 소스 코드에서 오류 발생 시 die() 함수를 이용해 쿼리 .. 더보기
DVWA 실습 #8 - SQL Injection DVWA의 일곱 번째 실습 대상인 SQL Injection이다. 현재 데이터베이스에는 5명의 사용자 정보(이름, 비밀번호 등)가 저장되어 있으며 SQL Injection으로 이들의 비밀번호를 탈취하는 것이 목적이다. 현재는 해당 사용자의 ID를 입력하면 이름(First Name, Surname)만 출력하고 있으며 난이도에 따라 ID 입력 방식이 조금씩 달라지고 있다. SQL Injection? SQL Injection은 사용자 입력이 서버측에서 실행되는 SQL 쿼리에 삽입되어 의도했던 것과 다른 동작을 수행하게 되는 취약점이다. 이전에 실습했던 커맨드 인젝션처럼 Injection 취약점으로 데이터베이스 종류에 따라 형태는 달라지지만 데이터베이스와 연결된 대부분의 사이트에서 공격 대상이 된다. 공격자는 이.. 더보기
Lord of SQLInjection - xavis 19번째 문제인 xavis다. 더보기