PEP 8 -- Style Guide for Python Code PEP는 Python Enhancement Proposal의 약자로 우리말로 번역하면 파이썬을 개선하기 위한 제안서이다.좀 더 자세한 내용은 PEP 0, 1을 읽어보면 알 수 있다.(https://www.python.org/dev/peps/) PEP 8은 파이썬 코드를 작성하는 스타일에 대한 가이드를 제시한 내용이다.(Coding Convention) 물론, 어디까지나 해당 내용은 가이드이며, 파이썬 코드를 작성하게 되는 주변 환경에 맞춰서 일관성있게 해주는 것이 더 중요하다.PEP 8 내용 일부를 요약하면 다음과 같다. Code lay-out- 들여쓰기는 공백 4칸- 들여쓰기는 탭보다 스페이스를 사용- 한 줄은 최대 79자까지- 최상위(..
ERRORCODE:DESCRIPTION ORA-00000:성공적인 정상 종료입니다ORA-00001:유일성 제약조건(%s.%s)에 위배됩니다ORA-00017:트레이스 이벤트 설정이 세션에 요구되었습니다ORA-00018:최대 세션 수를 초과했습니다ORA-00019:최대 세션 라이선스 수를 초과했습니다ORA-00020:최대 프로세스 수(%s)를 초과했습니다ORA-00021:세션이 다른 프로세스에 첨부되어 있음; 세션을 변경할 수 없습니다ORA-00022:부적절한 세션 번호; 액세스가 거절되었습니다ORA-00023:세션이 프로세스 고유의 메모리를 참조함; 세션을 분리할 수 없습니다ORA-00024:단일 프로세스 모드에서는 하나 이상의 프로세스가 로그인할 수 없습니다ORA-00025:%s에 메모리를 할당하는데 실..
ALL_ALL_TABLESALL_ALL_TABLES describes all object tables and relational tables accessible to the current user. ALL_TABLESALL_TABLES describes all relational tables accessible to the current user. To gather statistics for this view, use the SQL ANALYZE statement. TABSTABS is a synonym for USER_TABLES. TABTAB is included for compatibility with Oracle version 5. Oracle Corporation recommends that y..
PHP 5.3.0부터 POSIX Regex 대신 PCRE Regex가 사용된다. (PHP 6.0부터 완전 제거) 자세한 내용은 아래를 참고하면 된다. http://php.net/manual/en/reference.pcre.pattern.posix.php As of PHP 5.3.0, the POSIX Regex extension is deprecated. There are a number of differences between POSIX regex and PCRE regex. This page lists the most notable ones that are necessary to know when converting to PCRE. The PCRE functions require that the pa..
PHP 5.3 이상 버전에서 strcmp() 함수를 이용하여 비교를 할 경우에 발생할 수 있는 취약점 ID: PW: Colored by Color Scripter cs 위와 같이 id와 pw를 입력하여 인증할 수 있는 창이 있다. 여기에서 strcmp($pass, $pw) == 0 이 부분에 취약한 부분이 있다. 일반적으로 strcmp($str1, $str2)를 비교하여 str1이 str2보다 작으면 0보다 작은 값을 반환하고, str1이 str2보다 크면 0보다 큰 값을 반환한다. 그리고 동일할 경우에 0을 반환한다. 그렇기 때문에 id는 admin, pw는 php_strcmp_vulnerability를 입력해주면 $pass와 $pw가 같기 때문에 0을 반환해서 $pass 값을 출력하게 된다. id와 ..
PHP Object Injection PHP magic methodsPHP 클래스에는 magic functions라 불리는 특별한 메소드가 있다.magic functions은 이름을 보면 '__' 으로 시작하는 특징이 있다.__construct(), __destruct(), __toString(), __sleep(), __wakeup(), ... __construct()클래스의 생성자새로운 Object가 생성될 때마다 메소드 호출 __destruct()클래스의 소멸자PHP Script가 끝나면 무작위로 메소드 호출특정 Object 모든 참조가 삭제된 직후 또는 Object가 명시적으로 파기된 후 메소드 호출 construct_destruct.php:Colored by Color Scriptercs __t..
TABLE: temp실험에 사용한 임시테이블mysql> SELECT * FROM temp;+------+----------+------+| no | id | pw |+------+----------+------+| 2 | ant | 6666 || -2 | bear | 5555 || 3 | cat | 4444 || 0 | dog | 3333 || -3 | elephant | 2222 || 1 | fox | 1111 || -1 | goat | 0000 |+------+----------+------+7 rows in set (0.00 sec)cs - 오름차순(ASC), 내림차순(DESC) 중에 표기하지 않을 경우 기본값으로 오름차순(ASC)이 설정된다.mysql> SELECT * FROM temp ORDER..
TABLE: temp실험에 사용한 임시테이블mysql> SELECT * FROM temp;+------+----------+------+| no | id | pw |+------+----------+------+| 2 | ant | 6666 || -2 | bear | 5555 || 3 | cat | 4444 || 0 | dog | 3333 || -3 | elephant | 2222 || 1 | fox | 1111 || -1 | goat | 0000 |+------+----------+------+7 rows in set (0.00 sec)cs - WHERE 조건 뒤 숫자 1(참이 될 수 있는 값, true, 0x01, 0b01)을 주면 모든 값을 출력mysql> SELECT * FROM temp WHER..
MySQL에 저장된 데이터 값을 비교할 때 후행 공백에 대해서 무시한다. The CHAR and VARCHAR types are similar, but differ in the way they are stored and retrieved. As of MySQL 5.0.3, they also differ in maximum length and in whether trailing spaces are retained.The CHAR and VARCHAR types are declared with a length that indicates the maximum number of characters you want to store. For example, CHAR(30) can hold up to 30 chara..
SQL Injection 공백을 우회할 수 있는 방법 중에 한 가지. SELECT id,pw FROM user WHERE id='admin' AND pw='admin' OR '1'='1';위와 같은 Query를 실행할 경우 붉은색으로 표시된 부분에 공백을 사용하지 못할 경우 SELECT id,pw FROM user WHERE id='admin' AND pw='admin'/*!OR*/'1'='1';SELECT id,pw FROM user WHERE id='admin' AND pw='admin'/*!12345OR*/'1'='1';다음과 같이 사용할 수 있다. MySQL Server supports some variants of C-style comments. These enable you to write c..
데이터베이스 보기mysql> SHOW DATABASES; 데이터베이스 생성mysql> CREATE DATABASE 데이터베이스명; 사용자 생성mysql> CREATE USER 사용자명; 사용자 생성 및 패스워드 지정 mysql> CREATE USER '사용자명'@'localhost' IDENTIFIED BY '패스워드'; 사용자 외부 접근 권한 설정mysql> CREATE USER '사용자명'@'%' IDENTIFIED BY '패스워드';'%' = 외부에서 모든 접근을 허용'203.246.%' = 203.246.x.x 대역 IP 접근을 허용 변경사항 적용mysql> FLUSH PRIVILEGES;INSERT, UPDATE를 이용해서 권한을 부여한 경우에는 FLUSH PRIVILEGES; 를 해야 적용 된..
int fflush(FILE *stream);void sync(void); cache/buffer를 비우는 역할 layer: disk IO(1) - system call(2) - stdio(3) fflush() - library call- stdio 라이브러리에서 IO를 처리할 때 user level에서 사용하는 버퍼를 비우는 역할 (2,3 사이 버퍼를 비움)- 사용자 영역(user level)의 버퍼(라이브러리 수준에서 제공되는)를 커널의 버퍼로 이동시키는 역할을 한다.sync()- system call- 시스템(kernel)에서 disk를 사용할 때 kernel level에서 사용하는 버퍼(buffer cache)를 비우는 역할 (1,2 사이 버퍼를 비움)- 사용자 라이브러리 함수(fprintf, f..
기본적인 명령어 지원하는 레이어(프로토콜) 보기Displays all the protocols supported by Scapy. Usage example: ls(TCP)>>> ls() 지원하는 함수(명령) 보기Displays the list of commands supported by Scapy. Usage example: lsc()>>> lsc() 설정 보기Displays configurations options.>>> conf 설정 변경(conf.변수 = '변경값')>>> conf.iface = 'eth0' 도움말 보기>>> help() Display help on a specific command. Usage example: help(sniff) 패킷 구성 세부 정보 보기Display the de..
Scapy 2.3.1 Scapy is a tool, written in Python, for manipulating network packets. It can be used for capturing packets, forging them and decoding them. And that is just the tip of the iceberg, there are also a lot of other network related tasks that Scapy can handle. Scanning: The act of probing a host machine to identify any specific detail about it. Eg. Port scanning.Sniffing: The act of inter..
PySide - Combine (Show, About, Close) combine.ui MainWindow 0 0 731 475 MainWindow 0 0 731 21 &File Show &CCPL &About false Close &X action_Close triggered() MainWindow close() -1 -1 365 237 cs $ pyside-uic combine.ui > ui_combine.py combine.qrcimage/quit.pngimage/about.pngimage/show.png cs $ pyside-rcc combine.qrc -o qrc_combine.py combine.py#!/usr/bin/python# -*- coding: utf-8 -*- # combine.py..
PySide - Show Licence (File Open) licence.ui MainWindow 0 0 654 467 MainWindow &Show Lincence Qt::Horizontal 507 26 0 0 654 29 cs $ pyside-uic licence.ui > ui_licence.py licence.py#!/usr/bin/python# -*- coding: utf-8 -*- # licence.py - this small program reads and displays licence details. import sysfrom PySide.QtGui import QApplication, QMainWindow, QTextEdit, QPushButtonfrom ui_licence import ..
PySide - About Box about.ui MainWindow 0 0 654 467 MainWindow &About Qt::Horizontal 548 26 Qt::Vertical 20 355 0 0 654 29 cs $ pyside-uic about.ui > ui_about.py about.py#!/usr/bin/python# -*- coding: utf-8 -*- # about.py - display about box with info on platform etc. import sysimport platformimport PySidefrom PySide.QtGui import (QApplication, QMainWindow, QMessageBox)from ui_about import Ui_Mai..
PySide - Close Button quitter.ui MainWindow 0 0 348 255 MainWindow Qt::Horizontal 282 20 Quit Qt::Vertical 20 175 0 0 348 21 pushButton clicked() MainWindow close() 318 36 173 127 cs $ pyside-uic quitter.ui -o ui_quitter.py quitter.py#!/usr/bin/python# -*- coding: utf-8 -*- # quitter.py- provide a button to quit this "program" import sysfrom PySide.QtGui import QMainWindow, QPushButton, QApplica..
PySide - QMessageBox #!/usr/bin/python# -*- coding: utf-8 -*- import sysimport PySidefrom PySide.QtGui import QApplicationfrom PySide.QtGui import QMessageBox # Create the application objectapp = QApplication(sys.argv) # Create a simple dialog boxmsgBox = QMessageBox()msgBox.setText("Hello World - using PySide version " + PySide.__version__)msgBox.exec_() cs
PySide Binaries OS XTo install PySide in Mac OS X, you need to install both PySide and the appropriate Qt version. PySide 1.2.1 / Qt 4.8Qt for Mac OS X Download:qt-mac-opensource-4.8.5.dmg PySide를 설치하기 전에 먼저 Qt 4.8.5를 설치한다.Note: PySide is not yet compatible with Qt 5.x. Please use Qt 4.8 instead.Qt는 컴퓨터 프로그래밍에서 GUI 프로그램 개발에 널리 쓰이는 크로스 플랫폼 프레임워크이다. PySide 1.2.1 for Python 2.7 Download:pyside-1.2...
int scanf(const char *restrict format, ...); scanf(): keyboard buffer 입력된 값을 저장 #include int main() { char *buf; scanf("%s", buf); printf("%s\n", buf); return 0;}cs stdin(0), stdout(1), stderr(2)입력되는 값 중 첫부분에 공백 또는 개행문자를 제외하고 입력된 값을 출력(문자 다음에 오는 공백, 개행문자는 상관 없음) #include int main() { char *buf; scanf(" %s", buf); printf("%s\n", buf); return 0;}cs 0> test1> test 입력 받는 크기 지정 #include int main() { ..
#! is shebang유닉스에서 쉘 스크립트(shell script)의 시작은 #!/bin 으로 시작되고 그 다음은 스크립트를 실행할 인터프리터와 그 실행 옵션이 따라오게 된다. 예를 들면, #!/bin/bash 와 같이 표기하여 사용되며 스크립트의 첫 두 글자가 '#'과 '!'가 오면 이 것을 shebang이라고 부른다. 즉, #!/bin/bash는 shebang line이 되는 것이다.shebang line은 해당 라인 이후에 명령들을 어떻게 해석할 것인지 지정해주는 라인이며, 파이썬과 같은 스크립트 언어들도#!/usr/bin/python 와 같이 지정하고 스크립트를 작성하면 된다. 추가적으로, 파이썬 같은 경우 사용자에 따라서 파이썬의 경로가 다를 경우 문제가 생길 수 있다. 이럴 경우 /usr/..