분류 전체보기

substr

설명 문자열의 일부를 반환한다. substr(string &string, int $offset, ?int $length = null): string parameters string 입력 문자열 offset 문자열의 인덱스는 0부터 시작하며, 반대로는 -1부터 되돌아온다. offset이 설정되어 있지 않다면 시작점은 0이다. length 양수는 반환 문자열 개수를, 음수는 인덱스를 의미한다. 인덱스 전까지 반환하며, 생략되거나 null이면 offset부터 끝까지 문자열이 반환된다. example

programming/php 2023.01.02

[Webhacking.kr] old-42

문제 flag.docx 파일을 다운로드하려고 하면 위의 오른쪽 이미지와 같이 거부가 된다. 아마 저 docx 파일을 다운받으면 flag 값을 얻을 수 있을 것 같다. 문제풀이 burp suite를 이용해 test.txt 파일을 다운로드 할 때 경로를 확인한다. down 파라미터에 dGVzdC50eHQ= 값을 전달하는데, 이를 base64 디코딩해보면 test.txt 이다. flag.docx를 다운로드 하기 위해 base64 인코딩 한 후(ZmxhZy5kb2N4), 파라미터에 넣어 전송하면 파일이 다운로드 된다.

$_FILES

$_FILES HTTP 파일 업로드 변수 HTTP POST 메서드를 통해 업로드된 항목의 배열 업로드된 모든 파일 정보가 포함된다. $_FILES['userfile']['name'] 클라이언트 기계에 있는 파일의 원본 이름 $_FILES['userfile']['type'] 브라우저가 이 정보를 제공한 경우, 파일의 MIME 유형 ex) image/gif php 측에서 MIME 유형은 확인되지 않으므로 확실하지는 않다. $_FILES['userfile']['size'] 업로드된 파일의 사이즈, 바이트 $_FILES['userfile']['tmp_name'] 서버에 저장되는 업로드된 파일의 임시 이름 $_FILES['userfile']['error'] 업로드된 파일과 연관된 에러 코드 $_FILES['use..

programming/php 2023.01.02

[Webhacking.kr] old-41

문제 view-source 문제풀이 error_reporting(E_ALL); ini_set("display_errors", 1); 에러설정이 되어있어 에러가 화면에 출력되고, 빈 파일을 업로드하면 에러문을 확인할 수 있다. copy($cp,"./{$upload_dir}/{$fn}"); fwrite($f,$flag); 업로드한 파일 이름을 치환하고, upload_dir/치환된 파일 이름 경로에 파일내용을 복사한다. 파일 안에 flag 값이 작성되어 있으며, 이를 확인하면 문제를 해결할 수 있다. upload_dir에 대한 정보는 없기 때문에 에러를 내서 정보를 얻어야 한다. burp suite을 이용해 파일이름을 길게 하여 업로드 했을 때 에러를 확인할 수 있고, 폴더 경로를 볼 수 있다. 일반 파일 하..

[Webhacking.kr] old-40

문제 문제풀이 /?no=1&id=guest&pw=guest no=1 : success no=0 : 변화X 그 외 : Failure no=0||1=1 입력 시 success 화면이 출력되는 것으로 보아 no을 이용해서 관리자 계정을 알아낼 수 있을 것 같다. no, id, pw 값의 끝에 각각 #을 넣고 확인하면 no 값에 넣었을 때만 success가 뜨며, 쿼리문의 순서 마지막이 no인 것으로 유추할 수 있다. &&는 &로 인식하기 때문에 %26로 우회해야 한다. 여러가지를 입력해봤을 때, 공백, and, or, char 등 access denied 되는 것을 확인할 수 있고, admin 문자 대신 0x61646D696E 사용할 수 있다. no=0||id=0x61646D696E 입력 시, 아래 화면을 확..

@(데코레이터)

함수를 수정하지 않고 유연하게 함수에 특정 동작을 추가하거나 작동 방식을 바꿀 수 있다. decorate() 함수는 함수를 인자로 받고, 내부 wrapper() 함수는 decorate() 함수의 인자로 넘어온 함수를 호출한다. hello() 함수를 decorate() 함수의 인자로 넘긴 후, hello2 변수에 할당하면 "hello" 출력 전에 before, 후에 "after"이 출력되는 것을 볼 수 있다. def hello(): print("hello") def decorate(func): def wrapper(): print("before") func() print("after") return wrapper hello2=decorate(hello) hello2() @ 기호와 함께 함수 헤더 위에 데코..

programming/python 2023.01.01