분류 전체보기
[webhacking.kr] 24 : php extrace / str_replace 우회
[webhacking.kr] 24 : php extrace / str_replace 우회
2017.03.09이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[PHP] Tip, php.ini, etc APIs
[PHP] Tip, php.ini, etc APIs
2017.03.09PHP는 Personal Home Page의 initialism이었으나 PHP: Hypertext Preprocessor의 recursive initialism으로 변경되었다.PHPSCHOOLPHP.net - 단순한 docs가 아니라 feature, security, core mechanism 등을 잘 정리해 놓은 가이드. TIPPHP 5.4.0부터 내장 웹 서버가 있어 Apache를 사용하지 않아도 PHP 어플리케이션을 실행해볼 수 있다. 그러나 당연히 프로덕션 환경에서는 사용하지 않는 것이 좋다. `` php -S 0.0.0.0:4000`` (python과 비슷하다) 닫는 php태그 ``php ?>``를 적지 않는다. * ``php ?>``를 넣고 나서 빈 줄을 넣으면 이를 출력으로 간주해 오류가 발..
[Java] Stream API 노트
[Java] Stream API 노트
2017.03.09Stream API [Languages & Frameworks/Kotlin Java] - [Effective Java] 7장 람다와 스트림 생성, 중개 연산, 최종 연산까지 정리가 잘 되어 있으니 넘기면서 볼 것. 10 subtle mistakes when using the streams api http://iloveulhj.github.io/posts/java/java-stream-api.html 항상 stream이 나이스한건 아니다. for가 더 나이스한 경우가 분명히 존재한다. 구구절절 적기는 좀 애매한데... 아무튼 코드 짜다 보면 느껴질 때가 있음. stream API의 최종 연산 1. 요소의 출력 : forEach(), forEachOrdered() {병렬연산으로 순서 틀어질 때} 2. 요소의..
[procfs_search.h] 메모리에서 특정 값의 주소 찾기
[procfs_search.h] 메모리에서 특정 값의 주소 찾기
2017.03.08https://github.com/umbum/pwn/blob/master/tools/procfs_search.h procfs에서 메모리 주소를 받아와 메모리 공간 내의 특정 값의 위치를 출력하는 프로그램.gdb가 너무 구버전이라 find 명령어가 없는 경우 쓸만하다.* `` objdump`` 또는 `` xxd``를 사용할 수 있지만 code section만 조회되며 동적으로 결정되는 다른 section, 예를 들면 so나 stack의 데이터는 찾을 수 없다. Usage파라미터 설정은 int mem_search(long startaddr, long endaddr)에서 하고procfs_search()를 호출하면 알아서 돌아간다. char target_array[] : 찾을 value. "/bin/sh"같은 ..
[python] url parsing / BeautifulSoup4, bs4
[python] url parsing / BeautifulSoup4, bs4
2017.03.02URL structure```protocol://net_loc/path;params?query#frag```query : &로 구분된 '키=값' 쌍frag : 문서 내의 앵커 등 fragment 지정 ( 목차에서 클릭하면 그 항목으로 이동하는 것 )net_log : 일반적으로 서버의 주소를 나타내지만, 사용자 정보를 포함할 수 있다.net_log 구조는 다음과 같다. ```[user:passwd@]host[:port]```user:passwd 지정은 FTP 등에만 사용하는걸로 알고 있었는데, HTTP에도 사용할 수 있다. Basic 인증 등에 사용하는 듯. 관련 모듈 : urlliburlparse = urllib.parse원래 독립 모듈로 있다가 urllib.parse로 합쳐졌다.URL을 조작할 때 사용..
[JS] 리터럴, 자료형, 반복문
[JS] 리터럴, 자료형, 반복문
2017.03.01JS에서 숫자 타입은 Number인데, 이건 소수점 타입이다. https://developer.mozilla.org/en-US/docs/Glossary/Number Int 같은 정수형 타입은 따로 없고... 그래서 정확한 수를 받아올 때는 String으로 해야함. axios 등으로 받아올 때, 자동으로 Number로 타입추론 들어가면서 숫자가 변경되는 경우 있을 수 있음. 이런 문제는 서버 사이드에서 JSON encode 해서 내려주는게 맞음. https://stackoverflow.com/questions/44317740/there-is-a-clean-way-to-return-string-as-json-in-a-spring-web-api ``js parseInt()``를 사용할 때는 항상 기수를 지정해..
HTML (HTML5)
HTML (HTML5)
2017.03.01```html content ``` content + tag = element HTML은 정적 페이지를 만드는 데만 사용할 수 있다. 따라서 사용자의 입력에 따라 동적으로 페이지를 변경해 제공하기 위해서는 JS를 사용해야 한다. HTML만 사용해서 처리하려면 사용자의 입력에 따라 변화한 페이지를 모두 HTML파일로 만들어 놓아야 한다. HTML의 특징은 Hyper Text를 지원한다는 점. HTML 이전 : 페이지에서 다른 페이지로 이동하는 링크가 없었다. HTML : 페이지에서 다른 페이지로 링크를 타고 이동할 수 있다. HTML + JS : 사용자의 입력값에 따라 페이지에 변화를 줄 수 있다. semantic HTML을 작성할 때는 디자인 보다는 "의미"에 집중해야 한다. 디자인은 CSS로 처리한다...
[python] argparse, python-fire
[python] argparse, python-fire
2017.02.26argparse (docs)원래 파이썬에서 프로그램 실행 시 인자( e.g., ``c main(int argc, char *argv[])`` )를 받기 위해서는 sys모듈의 ``python sys.argv``를 이용해야 한다.```pythonargs = sys.argv[1:]``` 이를 대체하는 argv 파싱 라이브러리로 `` argparse``를 사용하면 더 편하다.(optparse는 업데이트가 중단되어 argparse에 포함 되었다.) ``python sys.argv`` 사용할 필요 없이 ``python argparser.parse_args()`` 하는 순간 알아서 argument를 가져온다.```pythonargparser = argparse.ArgumentParser(description='tis..
[python] 파일 배포, python with C
[python] 파일 배포, python with C
2017.02.26파일 배포보통 `` pyinstaller``로 .exe를 만든 다음 배포한다. python에서 C를 사용하는 방법속도 향상을 위해 pypy를 고려하는 경우도 있는데, pre-JIT가 느린건 그렇다 치더라도native python으로만 구현해야 동작을 보장할 수 있다는 절대적인 단점이 있다. C extension을 사용하는 다른 라이브러리를 사용하는 경우 pypy가 제대로 동작함을 보장할 수 없다. 어느 경우든 C running time은 동일하다고 봐도 된다.간단하게 사용할 때는 ctypes를, 규모있는 라이브러리를 사용할 때는 C extension을( 아마 텐서플로우도 이렇게 만들지 않았을까 싶다. 텐서플로우는 Core에 C++을 사용한다. ) 사용하면 된다. Cythonhttp://cython.org..
[Regex] Python
[Regex] Python
2017.02.23항상 시작 ^와 끝나는 $를 써주는게 좋다!!! 특히 $ 안붙여서 이어지는 문자가 있어도 match로 뜨는 경우가 있다. 정규표현식은 기본적으로 greedy하다는 것을 항상 명심한다. 긴 문자열을 집어 넣을 때, (page html tag 파싱이라던가.) 반드시 greedy/non-greedy를 신경써주어야 한다. JS에서는 $를 사용하지만, python에서는 \를 사용한다. notepad++에서는 둘 다 지원. $& : 일치하는 문자열 $` : 일치하는 부분의 앞부분 문자열 $' : 일치하는 부분의 뒷부분 문자열 $1, $2, $3... $n : n번 서브그룹 Python regular expression http://devdocs.io/python~3.6/library/re raw string은 기본..
[python] import 관련 : 모듈, 패키지, __init__.py, __all__
[python] import 관련 : 모듈, 패키지, __init__.py, __all__
2017.02.23모듈 단독 실행 시 import 경로 문제 ``` ├── common │ ├── __init__.py │ ├── copy.py │ └── clean.py ├── T1036 │ ├── __init__.py │ ├── bar.py │ ├── foo.py ├── run.py ``` 우선, 기본적인 import 동작 방식 python run.py 커맨드로 실행하는 경우, foo.py 파일 내에서 모듈 참조는 아래와 같다. ```python from .bar import BarCls # .으로 참조하는 경우 그 파일 자체의 위치(T1036) 기준 찾는다 from common.copy import CopyNoMetaCls # 절대 경로로 명시하는 경우는 python 커맨드 대상이 되는 파일(run.py 디렉터리) ..
[python] 함수, 클래스, 객체, *args, **kwargs
[python] 함수, 클래스, 객체, *args, **kwargs
2017.02.23```python*args # 가변인수**kwargs # 가변 키워드 인수. key=value 형태의 가변 길이 인수를 받을 때. dict 형태로 넘겨받게 된다.``` 키워드 인수를 반드시 key=value 형식으로만 받고 싶을 때```pythondef test(arg, key=None): pass test(1, 2)```positional arg 다음에 이어서 그냥 인자를 넘기면 알아서 위치대로 키워드 인자로 들어간다. 반드시 ``py key=3``처럼 지정해주어야만 동작하도록 하고 싶은 경우, ``py *``을 적는다. 라이브러리 코드 보면 저런게 꽤 많다.```pythondef test(arg, *, key=None):``` return``python return (a, b)``C 였다면 여러 (타..