일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BANDiT
- Authentication
- tryhackme
- Cryptography
- OS Command Injection
- php file upload
- privilege escalation
- access control
- FTZ
- php 파일 업로드하기
- Server Side Request Forgery
- ssrf
- php login page
- active recon
- War Game
- Cookie
- php To Do List
- Leviathan
- sql injection
- 파일 업로드 취약점
- php
- THM
- php 로그인 페이지 만들기
- file upload
- SQLi
- overthewire
- Reconnaissance
- over the wire
- active reconnaissance
- Recon
- Today
- Total
목록전체 글 (242)
R's Hacking Daily Log
Step 1 :: interface 만약 꼭 필요한 함수가 있지만 실행 내용이 모두 다르다면 어떻게 해야 할까? 부모 클래스로부터 상속받아 자식 클래스마다 알맞게 오버라이딩한다? 부모 클래스로부터 파생되는 모든 자식 클래스의 함수 내용이 다르다면 굳이 상속받을 필요 없이 클래스마다 달리 정의해 버리면 될 것이다. 이럴 상황에서 활용할 수 있는 게 인터페이스이다. 인터페이스는 미리 필요한 멤버 변수나 메서드를 정의, 선언만 해둘 뿐 그 내용을 기술하지 않는다. 즉 인터페이스는 큰 틀만 만들어놓고 세부적인 내용은 인터페이스를 가져다 쓰는 클래스에서 작성하면 된다. 상속에서는 extends keyword를 사용했다면 인터페이스는 implements keyword를 사용한다.
Step 1 :: 상속 [ inheritance ] 상속이라는 개념은 실세계에서 말하는 상속과 동일한 의미를 내포한다. 기존의 생성한 클래스와 유사하지만 몇 개의 기능이 추가된 또 다른 클래스를 만들고자 할 때 상속이라는 기능을 활용할 수 있다. 상속받는 클래스를 자식 클래스, 상속 해주는 클래스를 부모 클래스라고 부른다. 이때 자식 클래스는 부모 클래스의 멤버 변수, 메서드 등 모든 구성 요소를 사용할 수 있게 되며 추가로 자신 만의 메서드와 멤버 변수를 정의할 수 있다. ** 접근 제어자 파트에서 정의했듯이 부모 클래스에서 private 접근 제어자로 정의한 property나 method에는 아무리 자식 클래스라고 하더라도 접근 권한이 주어지지 않는다. 부모 클래스 역할을 할 Parents class..
Step 1 :: 의사 변수 this 앞에서는 클래스가 무엇이고 객체가 무엇인지 훑어본 느낌이라면 지금부터 살펴볼 내용은 클래스나 객체와 관련된 개념들을 얹어가는 느낌이다. 첫 번째로 살펴볼 내용은 this이다. 의사 변수 this는 메서드 내에서만 사용할 수 있는 예약어이다. 다른 말로 하자면 클래스 안에 정의된 함수로 활용 영역이 제한된다. this는 현재 자기 자신을 의미하는 데 쉽게 말해 클래스를 지칭한다.
Bypassing SSRF filters via open redirection 이번에 살펴볼 SSRF attack은 redirection을 활용한 공격이다. 어떤 종류의 필터이든지 간에 open redirection 취약점을 악용함으로써 필터 기반의 방어가 때때로 우회될 수 있다고 한다. 앞에서 살펴본 Lab에서 stockApi를 사용하는 걸 볼 수 있었다. stockApi는 사용자의 요청을 처리하기 위해서 한 서버가 시스템 내부의 또 다른 서버에게 보내는 요청이라 생각하면 된다. filter를 사용하더라도 백엔드 시스템 내에서 보내는 http requets가 redirection을 허용한다면 filter는 우회될 수 있다. /product/nextProduct?currentProductId=6&path..
Step 1 :: 객체 지향 프로그래밍 객체 지향 프로그래밍이란 단순한 문법이나 코딩 스타일이 아닌 하나의 패러다임이라 할 수 있다. 객체가 고유의 기능을 수행하고 서로 간의 상호 작용도 하면서 프로그램의 전반적인 기능이 구축되는 걸, 객체 지향 프로그램이라 할 수 있다. 객체 지향 프로그래밍을 하기 위해서는 실재하는 대상을 소프트웨어 상으로 옮기는 과정, 추상화가 필요하다. ** 추상화란 객체의 핵심점인 특징, 개념, 기능을 추출하여 표현하는 것을 말한다. 예를 들어 코끼리를 추상화한다면 "다리가 4개 있고 몸무게가 많이 나가며 코가 길다"라고 할 수 있다. Step 2 :: 클래스와 객체 [ Class & Object ] 그렇다면 객체란 무엇이며 코드 상에서 어떻게 만들어낼 수 있을까? 객체란 주체가..
SSRF with whitelist-based input filters Lab(3)에서는 Blacklist 기반의 input filter를 적용한 사례를 살펴보았다. 이번 Lab에서는 그와 반대로 whitelist 기반으로 input filter가 적용된다고 한다. Blacklist가 list에 해당하는 경우를 차단하는 식이라면 Whitelist는 list에 해당하는 경우만 허용하는 식으로 동작한다. whitelist 기반의 input filter가 동작하는 경우 1) @ 기호를 사용해 hostname 앞에 Credential을 작성할 수 있다. : 흔히 말하는 이메일의 형태를 생각하면 된다. http://expeted-host:fakeCred@evil-host 2) # 기호로 URL fragment를 ..
지금까지 앞에서 살펴본 OTP, CBC, CTR, DES, AES는 Confidentiality를 만족시키는 Symmetic key 기반의 암호화 기법이었다. 이번에 알아볼 MAC은 Symmetric key Encryption에 해당하지만 Confidentiality가 아닌 Integrity & Authenticity을 만족시키는 기법에 해당한다. 즉 MAC은 confidentiality는 보장할 수 없는 암호화 기법이라는 뜻! What is Hash Function MAC이 무엇인지 알기 위해서는 우선 HASH 함수에 대해서 알아야 한다. Hash 함수는 말 그대로 함수이다. 그렇다 보니 M 길이의 메시지를 받으면 n 길이의 고정된 결과를 반환한다. 다른 말로 하면 가변 길이의 메세지를 모두 동일한 길..
Circumventing common SSRF defenses 지금까지 살펴보았던 Lab은 기본적인 SSRF를 실행해 본 느낌이었다. 이번 Lab에서는 조금 다르게 SSRF 공격에 대한 방어가 이루어진다고 한다. SSRF를 예방하기 위한 여러 방법이 존재하겠지만 이번에 살펴볼 Lab에서는 Blacklist 기반의 input filter를 사용한다. SSRF with blacklist-based input filters 몇몇 어플리케이션에서는 SSRF 공격을 예방하기 위해서 1) /admin과 같은 민감한 URL 2) localhost & 127.0.0.1과 같은 hostname을 포함하는 input 을 차단한다고 한다. 1 & 2의 경우가 차단된다고 할 때, 127.0.0.1의 alternative IP..