일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- access control
- THM
- BANDiT
- file upload
- Leviathan
- SQLi
- Authentication
- Cookie
- php
- privilege escalation
- php 파일 업로드하기
- php file upload
- active recon
- FTZ
- Cryptography
- php 로그인 페이지 만들기
- OS Command Injection
- Recon
- ssrf
- php login page
- tryhackme
- Reconnaissance
- php To Do List
- Server Side Request Forgery
- 파일 업로드 취약점
- War Game
- over the wire
- active reconnaissance
- sql injection
- overthewire
- Today
- Total
목록전체 글 (242)
R's Hacking Daily Log
Step 1 :: 정수형 [ Integer ] 제일 먼저 살펴볼 데이터 타입은 정수형이다. 말 그대로 수학적인 의미에서의 "정수"를 저장하는 데이터 타입을 얘기한다. 운영체제가 몇 bit인지에 따라 저장할 수 있는 정수의 크기가 달라질 수 있다.
Step 1 :: 상수 이번에 알아볼 상수는 변수지만 변수가 아니다(?) 변수와 동일하게 어떤 값을 저장하는 역할로 쓰이지만 값을 한 번 지정한 순간부터 그 값을 수정할 수 없다. 변수를 선언하는 방법은 크게 두 가지가 있는 데, 첫 번째로 살펴볼 방법은 define 함수를 사용하는 것이다. 사용법은 간단하게 define 함수에 상수명 & 값을 넣으면 된다.
Step 1 :: 지역 변수 [ local variable ] 변수는 어디서 선언되었느냐! 에 따라 사용할 수 있는 범위가 달라진다. 첫 번째로 알아볼 지역변수는 이름에서 알 수 있듯이 특정 지역에 한해서 유효한 변수를 얘기한다. 간단한 예시로 들자면 함수처럼 괄호로 묶인 범위 내에서 선언된 변수가 이에 해당한다. 위의 코드를 보면 str 변수가 myFunc 함수 안에서 만들어질 걸 볼 수 있다. myFunc 함수 안에서 실행된 echo는 정상적으로 결과가 출력되지만 함수 밖에서 참조된 8번 째줄에서는 에러가 발생하게 된다. Step 2 :: 전역 변수 [ global variable ] 두 번째로 살펴볼 변수는 전역 변수이다. 지역 변수와 달리 함수 내에서 선언된 변수가 아닌 함수 외부에서 선언된 변수..
Step 1 :: 변수 만들기 변수를 만들기 위해서는 (1) 변수명과 (2) 변수에 넣을 값이 필요하다! 변수에 값을 넣기 위해서는 변수명이 왼쪽, 값이 오른쪽에 위치해야한다. $name = ""; 우선, $표시로 name이라는 변수를 "선언"해준다. PHP는 C언어와 달리 변수를 선언할 때 데이터 타입을 굳이 지정하기 않아도 된다. 현재 시점에서는 name이라는 변수를 만들기만 했을 뿐 아무것도 들어있지 않은 상태임을 알 수 있다. 그렇다면 값을 한 번 넣어보자. $name = "bluePhone" 위에 보이는 코드 한 줄로 name이라는 변수에 "bluePhone"이라는 값을 "할당"했다. 실제로 name에 bluePhone이라는 값이 들어갔는 지 확인하기 위해서 name 값을 출력해 보자! echo..
Against other back-end systems 두 번째로 살펴볼 케이스는 사용자가 직접 연결할 수 없는 다른 백엔드 시스템과 서버가 상호 작용하는 경우이다. 이런 경우에는 private IP를 사용하는 경우가 많은 데 백엔드 시스템은 일반적으로 네트워크 토폴로지에 의해 보호되기 때문에 보안 상태가 약한 경우가 많다고 한다. ** 이때 서버와 시스템은 서로 신뢰 관계에 있기 때문에 악의적인 요청(etc. 민감한 데이터)이라 할지라도 아무 생각 없이 처리해줄 것이다. Lab - Basic SSRF against another back-end system 어떤 application에서 http://192.168.0.68/admin이라는 url로 백엔드 관리 인터페이스에 접근한다고 한다. POST /p..
Lab - Basic SSRF against the local server ) Lab에 들어가 보면 shopping applicaiton 답게 이런저런 아이템을 볼 수 있다. 그중 하나를 선택해서 들어가 보면 하단에 Check stock 버튼이 눈에 들어오게 된다. 지점을 정하고 버튼을 누르면 사진에서와 같이 재고가 얼마나 남았는지 출력해 준다. 이때의 packet을 살펴보면 stockApi 내용이 포함된 post method의 요청이 만들어지는 걸 알 수 있다. Lab의 목표는 /admin page로 접근해 carlos 계정을 삭제하는 것이기 때문에 /localhost/admin page 경로로 내용을 변경해 보도록 하자! 이렇게 되면 원래 재고가 출력되는 부분에 /localhost/admin page..
Server Side Request Forgery : SSRF Server Side Request Forgery란? 서버 측 application이 의도하지 않은 곳으로 request를 보내도록 유도할 수 있는 취약점을 의미한다. 전형적으로 SSRF는 :) 조직 인프라 속에 있는 내부 전용 서비스에 연결하도록 :) 임의의 외부 시스템에 연결하도록 하여 민감한 데이터를 추출하거나 임의 명령을 실행하는 등의 후속 공격이 이루어질 수 있다. SSRF attacks against the server itself 내부 서버 자체에 SSRF 공격을 시도하는 경우, 공격자는 application을 호스팅 하고 있는 서버로 다시 HTTP request가 보내지도록 packet을 조작할 수 있다. 사용자가 아이템의 재고..
Lab - Remote code execution via polyglot web shell upload 이번 Lab에서는 업로드된 파일 내용을 검사한다고 한다. 그중에서도 file signature 값을 확인하여 업로드된 유형을 확인한다고 하는 데 ** file signature이란, 파일 header or footer 부분에 명시되는 값으로 파일 확장자가 무엇이냐에 따라 값이 다른 걸 확인할 수 있다. Lab에 들어가 webshell.php file을 업로드해봤더니 유효한 파일이 아니라는 문구와 함께 업로드 에러가 발생했다고 한다. 아무래도 php file 그 자체로 업로드하면 안 되는 거 같다. 이미지 파일으 업로드해야 승인되기 때문에 이미지 파일의 signature을 활용하여 파일을 만들면 어떻게 ..