Kiến thức nềnVề thuật ngữ source và sink:
https://sheon.hashnode.dev/java-security-2-phan-tich-urldns-chain-ysoserial
Về Java bytecode và framework ASM:
https://sheon.hashnode.dev/java-learning-7-java-bytecode
https://sheon.hashnode.dev/java-learning-8-java-bytecode-asm-framework
Tổng quan về Gadget Inspector
được công bố trong bài trình bày Automated Discovery of Deserialization Gadget Chains bởi Ian Haken tại hội thảo DEFCON26 năm 2018
Slide của bài trình bày Automated Discovery of Dese...
Type descriptor
Kiểu trong Java
Type descriptor
boolean
Z
char
C
byte
B
short
S
int
I
float
F
long
J
double
D
Object
Ljava/lang/Object;
int[]
[I
Object[][]
[[Ljava/lang/Object;
Method descriptor
Method ví dụ
Method descriptor tương ứng
void m(int i, float f)
(IF)V
int m(Object o)
(Ljava/lang/Object;)I
int[] m(int i, String s)
(ILjava/lang/String;)[I
Object m(int[] i)
([I)Ljava/lang/Object;
Object m(String str)
(Ljava/lang/String;)Ljava/lang/Object;
pu...
Lời nói đầuNhư đã nói, sang bài này tôi sẽ phân tích chain URLDNS trong công cụ ysoserial.
Kiến thức nềnĐể hiểu được các khái niệm nói trong bài này, bạn cần có kiến thức về cơ chế Serialization/Deserialization và Reflection API. Tôi có viết về các cơ chế này trong series Java Learning, cụ thể là 2 bài sau:https://sheon.hashnode.dev/java-learning-5-serialization-deserializationhttps://phmclong.github.io/myblog/2023/07/19/java_reflection/
Ngoài ra có 1 khái niệm mà tôi sẽ dùng trong ...
Lời nói đầuMở đầu cho series Java Security, tôi sẽ viết về lỗ hổng Insecure Deserialization.
Kiến thức nềnTrước khi đến với chủ đề này, bạn nên có hiểu biết về cơ chế Serialization/Deserialization trong Java. Tôi có viết về cơ chế này trong series Java Learning, cụ thể là bài này: https://sio.hashnode.dev/java-learning-5-serialization-deserialization
Insecure Deserialization là gì ?Khi data được deserialize là data do người dùng có thể kiểm soát (user-controllable data hay untrusted data...
Lời nói đầuHôm nay tôi sẽ giới thiệu ngắn gọn về Reflection API trong Java. Việc hiểu được cơ chế của Reflection API sẽ là tiền đề quan trọng cho việc nghiên cứu lỗ hổng bảo mật Deserialization trong Java.
Kiến thức nềnTrước khi tìm hiểu Reflection, trước tiên bạn nên hiểu 2 khái niệm: giai đoạn biên dịch (compile time) và giai đoạn chạy (run time).
Compile time
Là giai đoạn mà source code được compiler biên dịch thành code mà máy tính có thể thực thi (executable code).
Trong Java, đó là quá ...
Introduction
Category: Web
Description: Login as admin to get flag, so easy right?
Language: NodeJS
TL;DR
Idea: You can send a JSON with __proto__ to bypass the username=admin check, and crack md5 by using online rainbow table to get flag. It works because req.body has a null prototype while the {} in Object.assign() doesn’t.
Payload: curl http://puzzler7.imaginaryctf.org:5001/login -H 'Content-Type: application/json' --data '{"password":"admin"...
Sau bao nhiêu thử thách PHP của CBJS, mình cũng đã được làm 1 thử thách về JavaScript - ngôn ngữ mình quen thuộc.
Khi mà PHP có vấn nạn mang tên Type Juggling, thì JavaScript cũng tồn tại 1 vấn nạn mang tên Type Coercion. Thử thách lần này chính là về Type Coercion trong JavaScript.
Challenge 1Goal: RCELink thử thách 1:http://javascript-workshop.cyberjutsu-lab.tech:8000/
Vừa vào ta thấy trang cho ta chức năng tính toán các phép như cộng, trừ, nhân, chia cơ bản.
Thử một phép tính cơ bản: “...
Thử thách lần này là về lỗ hổng File Upload, được xây dựng bởi team CyberJutsu, nó bao gồm tất cả 9 levels mà theo mình thấy thì được sắp xếp từ dễ cho đến khó, ban đầu thì đơn giản nhưng càng về sau thì bạn càng phải xâu chuỗi những kiến thức mà bạn có được thì mới giải được nó.
Để nắm được sơ qua khái niệm về lỗ hổng File Upload thì team CyberJutsu đã làm 2 video giới thiệu về lỗ hổng này:
Video 1: https://www.youtube.com/watch?v=ttj7\_uL4xPA
Video 2: https://www.youtube.com/watch?v=OLp10F...
Thật ra bài này đã có người khác viết write up rất hoàn chỉnh rồi. Mình viết dưới phương diện của người mới tiếp cận bảo mật, nhất là khi tiếp cận 1 bài CTF được đố bằng 1 ngôn ngữ mà mình chẳng hề quen thuộc. Bởi vì do quá thiếu kinh nghiệm nên khi giải bài mà mình gặp rất nhiều trắc trở, mình viết bởi vì mình muốn rút kinh nghiệm cho bản thân. Hi vọng ai đọc được sẽ góp ý giúp mình.
Yêu cầu của đề bàiRemote Code Execution được server và kiếm được FLAG
Dữ kiệnURL của challenge: http://css.ki...
Lời nói đầuPrototype Pollution không phải kĩ thuật dễ nhai dành cho người mới học.
Để hiểu kĩ thuật này cũng không quá khó, tuy nhiên bạn cần có 1 chút kiến thức sau: JavaScript ở mức trung, OOP (Object-oriented Programming) ở mức cơ bản, Data Structure & Algorihm ở mức cơ bản.
Bài này mình thấy sẽ hợp hơn với người đọc đã có các kiến thức mình nêu trên, nên nếu bạn chưa đủ những kiến thức đó có thể cảm thấy khó hiểu. Dẫu vậy mình sẽ cố gắng viết sao cho dễ hiểu nhất.
Object-Oriented Prog...