OKX Tải Xuống, Đăng Ký và Đăng Nhập

Đăng Ký Ngay

Trang Web Chính Thức OKX - Tải Xuống, Đăng Ký và Đăng Nhập - Phiên Bản Web Máy Tính OKX

Đăng Ký Ngay

Tải Xuống Android

Trang Web Chính Thức OKX - Tải Xuống, Đăng Ký và Đăng Nhập - Phiên Bản Web Máy Tính OKX

Tải Xuống Android

iOS Vui Lòng Đăng Ký Sau Đó Tải Xuống

Trang Web Chính Thức OKX - Tải Xuống, Đăng Ký và Đăng Nhập - Phiên Bản Web Máy Tính OKX

iOS Vui Lòng Đăng Ký Sau Đó Tải Xuống

URL Dự Phòng Chính Thức OKX

Trang Web Chính Thức OKX - Tải Xuống, Đăng Ký và Đăng Nhập - Phiên Bản Web Máy Tính OKX

URL Dự Phòng Chính Thức OKX

Khuyến nghị VPN để truy cập internet toàn cầu

CuteCloud - Đám mây dễ thương nhất

CuteCloud tăng tốc truy cập mạng toàn cầu không giới hạn. Nhận dịch vụ tăng tốc mạng kết nối với hàng trăm nhà cung cấp nội dung trên toàn thế giới. Khả năng truy cập dòng đơn lên đến 2000Mbps, hơn 1000 máy chủ tốc độ cao trên toàn thế giới, tận hưởng kết nối nhanh chóng và ổn định mọi lúc mọi nơi.

CuteCloud - Đám mây dễ thương nhất

EEVPN

Dịch vụ tăng tốc mạng kết nối với hàng trăm nhà cung cấp nội dung trên toàn thế giới

EEVPN

MoJie.net

Hỗ trợ phát trực tuyến đa phương tiện. Không giới hạn số người dùng. Không giới hạn thời gian hết hạn. Không giới hạn tốc độ mạng.

MoJie.net

DageCloud

Phiếu giảm giá 10%. Lưu lượng khả dụng: 300 GB/tháng. Thời hạn gói: 365 ngày. Đặt lại lưu lượng: đặt lại vào ngày đặt hàng hoặc mua gói lưu lượng. Băng thông tối đa có thể đạt: 1000 Mbps. Giao thức nút: Trojan.

DageCloud
Tải về
Tham gia cộng đồng người chơi cash game lớn nhất thế giới

Tham gia cộng đồng người chơi cash game lớn nhất thế giới

Giành vé tham dự các sự kiện WPT trực tiếp toàn cầu

Giành vé tham dự các sự kiện WPT trực tiếp toàn cầu
An toàn, bảo mật & cực kỳ thú vị

An toàn, bảo mật & cực kỳ thú vị

Nền tảng công bằng và an toàn

Nền tảng công bằng và an toàn
Biến WPT Global thành ngôi nhà poker online mới của bạn

Biến WPT Global thành ngôi nhà poker online mới của bạn

Bàn chơi người nổi tiếng độc nhất

Bàn chơi người nổi tiếng độc nhất
Cài đặt tải xuống WPT Global

Cài đặt tải xuống WPT Global

Cài đặt WPT Global

Cài đặt WPT Global
Thiết lập tài khoản WPT Global của bạn

Thiết lập tài khoản WPT Global của bạn

Sẵn sàng chơi tại WPT Global?

Sẵn sàng chơi tại WPT Global?
Nạp tiền ngay và nhận gói vé WPT® Global của bạn

Nạp tiền ngay và nhận gói vé WPT® Global của bạn

Hỏi đáp

Tài khoản WPT Global của tôi

1. Làm thế nào để bắt đầu chơi?

Để chơi trên WPT Global, hãy tải và cài đặt ứng dụng trên thiết bị của bạn. Sau đó, đăng ký tài khoản, đồng ý với điều khoản sử dụng và chính sách bảo mật, và nạp tiền để bắt đầu chơi.

2. Làm thế nào để thay đổi thông tin cá nhân?

Nếu bạn nhập sai thông tin khi đăng ký hoặc thông tin cá nhân đã thay đổi, hãy liên hệ [email protected] để được hỗ trợ.

3. Nếu tôi quên mật khẩu thì phải làm sao?

Nếu bạn quên mật khẩu, hãy mở ứng dụng và nhấn vào nút 'Quên mật khẩu' để đặt lại.

4. Làm sao để đóng tài khoản?

Nếu muốn đóng tài khoản, hãy liên hệ bộ phận hỗ trợ tại [email protected]. Lưu ý: Sau khi đóng tài khoản, bạn không thể đăng ký tài khoản mới (mỗi người chỉ được phép có một tài khoản).

5. Tôi đi nước ngoài một thời gian, có thể chơi poker từ khu vực khác không?

WPT Global có mặt tại hơn 100 quốc gia và vùng lãnh thổ được cấp phép. Nếu điểm đến của bạn không hợp pháp, bạn sẽ không thể truy cập ứng dụng.

6. Tôi có thể dùng phần mềm theo dõi poker hoặc HUD không?

Không, WPT Global không cho phép sử dụng các công cụ bên thứ ba.

Giới thiệu về WPT Global

1. WPT Global là gì?

WPT Global là nền tảng trò chơi trực tuyến cung cấp poker ăn tiền thật cho người chơi tại hơn 100 quốc gia.

2. World Poker Tour (WPT) là gì?

World Poker Tour (WPT) là thương hiệu giải trí trò chơi quốc tế tổ chức các giải đấu trực tiếp, truyền hình, trực tuyến và trên di động.

3. WPT Global được cấp phép ở đâu?

WPT Global được cấp phép bởi Gaming Services Provider N.V. tại Curacao (giấy phép GLH-OCCHKTW0701202022) để cung cấp dịch vụ trò chơi trực tuyến.

4. Làm sao tham gia giải đấu trực tiếp của WPT?

WPT tổ chức các sự kiện trực tiếp tại nhiều địa điểm lớn trên thế giới. Bất kỳ ai đủ tuổi hợp pháp đều có thể tham gia. Hãy kiểm tra lịch mới nhất trên trang web chính thức. WPT Global cũng có các giải satellite độc quyền giúp bạn giành vé dự các giải đấu WPT.

Nạp tiền vào WPT Global

1. Làm thế nào để nạp tiền?

Đăng nhập tài khoản, vào trang 'Thu ngân' và nhấn nút 'Nạp tiền' để xem các phương thức thanh toán khả dụng.

2. Có những phương thức nạp tiền nào?

Các phương thức tùy theo khu vực, bao gồm Visa, Mastercard, JCB, chuyển khoản ngân hàng, voucher trả trước, tiền mã hóa (Bitcoin, Ethereum, Litecoin) và các ví điện tử lớn như Neteller, Skrill, Muchbetter, Luxonpay (trừ Ontario).

3. Nạp tiền bằng tiền mã hóa như thế nào?

Bạn cần có ví tiền mã hóa. Đăng nhập, vào 'Thu ngân', chọn 'Nạp tiền' rồi 'Thanh toán bằng Crypto', nhập loại tiền và số tiền, chuyển tiền vào địa chỉ hiển thị và chờ xác nhận.

4. Nạp tiền có mất phí không?

Không có phí nạp tiền.

5. Tôi đã nạp tiền nhưng chưa nhận được, phải làm sao?

Vui lòng chờ vài phút. Nếu vẫn chưa nhận được, kiểm tra xem tiền đã bị trừ khỏi tài khoản ngân hàng hoặc ví chưa. Có thể bạn sẽ cần cung cấp bằng chứng thanh toán để được hỗ trợ.

Rút tiền từ WPT Global

1. Làm sao để rút tiền?

Đăng nhập tài khoản, vào trang 'Thu ngân', chọn phương thức rút tiền và số tiền muốn rút.

2. Rút tiền mất bao lâu?

Tiền thường về trong 1–5 ngày làm việc. Bạn có thể kiểm tra trạng thái trong phần Lịch sử giao dịch.

3. Rút tiền có mất phí không?

Không có phí rút tiền.

4. Tại sao lệnh rút tiền của tôi bị từ chối?

Rút tiền có thể bị từ chối nếu bạn chọn phương thức khác với phương thức đã dùng để nạp tiền.

5. Tại sao tôi không thể rút số tiền đã nạp ban đầu?

Theo điều khoản, bạn phải đặt cược ít nhất bằng số tiền đã nạp trước khi rút. Sau đó, bạn có thể rút qua phương thức đã dùng để nạp.

Các quốc gia được hỗ trợ

1. WPT Global có mặt ở những quốc gia nào?

WPT Global hoạt động tại hơn 100 quốc gia và vùng lãnh thổ được cấp phép. Hãy kiểm tra tính hợp pháp tại quốc gia của bạn trước khi chơi.

Phương thức thanh toán

1. WPT Global hỗ trợ phương thức thanh toán nào ở Châu Á?

Châu Á hỗ trợ Cash2code Funanga, JetonCash, PayRedeem, Flexepin, Astropay Card, Crypto, VSMC, chuyển khoản ngân hàng, Skrill, LuxonPay, Jeton, Muchbetter.

2. WPT Global hỗ trợ phương thức thanh toán nào ở Châu Âu?

Châu Âu hỗ trợ Crypto, VSMC, LuxonPay, Neteller, Skrill, Skrill Rapid Transfer, Jeton, chuyển khoản ngân hàng, JetonCash, PayRedeem.

3. WPT Global hỗ trợ phương thức thanh toán nào ở Mỹ Latinh?

Mỹ Latinh hỗ trợ Astropay Card, chuyển khoản ngân hàng, Crypto, LuxonPay, Muchbetter, Neteller, Skrill, Jeton, PayRedeem, Flexepin, Paysafecard, VSMC.

Lỗ hổng trong vấn đề sinh số ngẫu nhiên một ví dụ từ dự án MechMaster

Tags: random, exploit, bsc, smartcontract, audit, security audit SubscribeSign in blog.verichains.io lifebowMay 06, 2022Share this post

Lỗ hổng trong vấn đề sinh số ngẫu nhiên, một ví dụ từ dự án MechMaster

blog.verichains.ioCopy linkFacebookEmailNoteOtherShare blog.verichains.io Contract thực hiện chức năngdraw MechMaster sử dụng một đoạn logic random với các thông số không đủ mạnh, nên mình đã có thể khai thác và kiểm soát được kết quả tạo ra các item trong game có độ hiếm cao.

Phạm vi bài viết

Mã nguồn của proxy contract mà website trỏ tới đã được verified trên bscscan: https://bscscan.com/address/0xe35f67aec4f633c01130fdc9f18286a4215c3e5f#code

Contract chứa logic vận hành của proxy contract (cho tới thời điểm bài này được viết):

https://bscscan.com/address/0x37281cf9d0eda5059f41a62e969757f55c62bc1f

Website market của Mech master:

https://market.mechmaster.io/#/marketplace

Một số thông tin liên quan về game và contract khai thác

ERC1155 là contract chứa logic stake $MECH token và mint token ERC1155 trong game MechMaster. Người chơi sẽ phải stake một lượng $MECH token để có thể tham gia quay “xổ số” và nhận được các mảnh item dưới dạng token ERC1155.

Mỗi lượt quay có kết quả là ngẫu nhiên và có tỉ lệ rarity phân bố như hình trên.

Quá trình phân tích và khai thác

Phân tích

Nhìn sơ qua website của game mình thấy hàm draw khá là hay ho nên mình tìm tòi xung quanh frontend của web. Webpack enabled nên mình có thể đọc được phần xử lý khidraw như hình bên dưới.

Phương thức draw chỉ nhận vào 2 giá trị của người dùng là now (thời điểm hiện tại) và count (số lần draw). Có vẻ như user có thể điều khiển được 2 tham số này vì hàm không có truyền signature từ server.

Debug một chút để lấy được abi và địa chỉ contract tương tác.

Địa chỉ contract thu được:

https://bscscan.com/address/0xe35f67aec4f633c01130fdc9f18286a4215c3e5f

Contract mà game tương tác là một proxy contract. Proxy contract là một contract không chứa trực tiếp logic vận hành mà nó sẽ gọi qua một contract khác có địa chỉ được lưu bên trong _IMPLEMENTATION_SLOT của proxy contract để lấy logic.

Để tìm ra địa chỉ đứng phía sau proxy contract có 2 cách:

  • Đọc giá trị storage của contract tại địa chỉ mà _IMPLEMENTATION_SLOT đang trỏ tới.
  • Quan sát các transaction của owner contract và tìm transaction mới nhất update address implementation của proxy contract.

Tx update địa chỉ implementation của proxy contract.

https://bscscan.com/tx/0x3bbf4583a54ed46fb41db58fc97fecfcf4d1193b9a50b7ccac5c5369d5bb0000

Bằng cả hai cách ở trên, kết quả mình nhận được đều là địa chỉ contract: 0x37281cf9d0eda5059f41a62e969757f55c62bc1f

https://bscscan.com/address/0x37281cf9d0eda5059f41a62e969757f55c62bc1f

Tuy nhiên contract này chưa được verify nên chúng ta không có một source code tường minh để đào sâu vào hàm draw.

Với Bytecode public, mình thử sử dụng chức năng decompile bytecode có sẵn ngay trên bscscan.

Hầu hết các function trong contract đều được decompile và dễ dàng đọc được. Nhưng mục tiêu chính là hàm drawthì gặp phải một lỗi.

Chức năng này trên bscscan cũng không hoạt động hiệu quả 100%

Bằng một số kỹ năng dịch ngược, mình đã decompile bytecode này trên máy cá nhân và thu được kết quả như bên dưới.

Một phần mã nguồn hàm draw sau khi decompile.

Một phần đáng chú ý của hàm draw khi được decompile có sử dụng hash của block.difficulty và các input đầu vào để tính toán. Phân bổ các nhánh tương ứng với tỉ lệ cách mảnh item trong document nên ắt hẳn đây là logic của phần random.

Phân tích kỹ hơn về các đối số sử dụng với hàm hash sha3:

  • block.difficulty: độ khó của block mặc định trên Binance Smart Chain là 2.
  • _blockNumber: đối số thứ nhất của hàm draw là tương ứng với now - là giá trị user có thể kiểm soát được.
  • caller: người gửi transaction là một địa chỉ ví mà ta sở hữu.
  • stor256: giá trị storage của contract tại slot 256, có thể đọc một cách dễ dàng.

Các đối số sử dụng đối với hàm sha3 chúng ta đều có thể kiểm soát hoặc đọc được nên việc điều chỉnh tham số _blockNumber để nhảy vào đúng nhánh if-else là hoàn toàn khả thi.

Khai thác

Mình sử dụng ganache để fork mainnet ở block.number mới nhất của bsc mainnet.

Trong chain dưới local này mình sẽ gọi transaction với một giá trị _blockNumber tới contract, kết quả trả về dưới local sẽ tương ứng nếu dùng giá trị đó trên mainnet. Bằng việc thử đi thử lại nhiều lần với các _blockNumber khác nhau, ta sẽ có được giá trị _blockNumber cho ra kết quả của hàm draw mà ta muốn.

Dưới đây là 3 transacsions liên tục có kết quả draw được item có rarity Legendary - TOKEN ID1mà mình đã thực hiện trên mainnet:

Kết quả thu được sau quá trình khai thác

Đôi lời nhận xét về lỗ hổng

Như đã đề cập ở phần phân tích phía trên, hàm draw sử dụng block.difficulty và một số tham số khác làm đầu vào của sha3. Có lẽ developer nhầm lẫn block.difficulty là một thông số thay đổi liên tục như trên Ethereum, tiếc thay giá trị này là một giá trị cố định trên Binanace smart chain. Dẫu vậy cho dù giá trị này có thay đổi liên tục thì chúng ta vẫn có một cách thức khác để khai thác (nếu có cơ hội mình sẽ chia sẻ trong các blog khác).

Việc nhầm lẫn sử dụng block.difficulty trong logic random trên BSC là một lỗi cũ, có lẽ do kích thước hàm draw quá lớn dẫn tới việc khó khăn trong việc dịch ngược nên contract chưa bị tấn công ồ ạt.

Kết luận

Những lỗi trên sẽ gây ảnh hưởng rất lớn đến dự án và mình mong các dự án sẽ quan tâm và đầu tư hơn về các vấn đề bảo mật của cả ở phần offchain hay trên blockchain. Rất nhiều dự án đã phải chết yểu hay bị tấn công gây ra rất nhiều thiệt hại nghiêm trọng cho cả nhà đầu tư và chủ dự án. Audit mã nguồn sẽ là một phương pháp để phát hiện sớm các lỗi, tuy nhiên việc audit cũng chưa chắc đã phát hiện hết lỗi trong hệ thống. Để đảm bảo hơn dự án nên được audit bởi các công ty uy tín và sẽ càng tốt nếu được audit nhiều lần bởi nhiều đội ngũ hoạt động độc lập với nhau.

blog.verichains.io CommentsRestacks

FAQ

Random wheel là gì?

Vòng quay may mắn (hay random wheel) là trò chơi sử dụng xác suất để trúng thưởng. Trên vòng quay sẽ được phân chia thành nhiều phần nhỏ chứa đựng những phần thưởng hoặc tên may mắn nào đó. Ban tổ chức sẽ là người lựa chọn các giá trị đặt vào từng ô được chia sao cho phù hợp với quy định của trò chơi.Jan 16, 2023

Wheel of name là gì?

Wheel of Names là ứng dụng vòng quay chọn tên miễn phí, dễ dàng tạo và sử dụng ngay trên trình duyệt web mà không cần cài đặt mất thời gian. Khi bạn cần chọn 1 cái tên ngẫu nhiên trong 1 nhóm đông người để truy bài, giao việc hay trao thưởng thì Wheel of Names app sẽ là lựa chọn vô cùng hoàn hảo.Jul 7, 2024

Một số vụ bê bối và tranh cãi nổi tiếng về roulette trong suốt lịch sử là gì?

Một số vụ bê bối và tranh cãi nổi tiếng về roulette trong suốt lịch sử là gì? 1. Eudaemons – Vào những năm 1970, một nhóm sinh viên vật lý tại Đại học California Santa Cruz đã sử dụng máy tính để dự đoán kết quả của trò chơi roulette tại sòng bạc Nevada. Họ tự gọi mình là “The Eudaemons” và kiếm được lợi nhuận đáng kể trước khi hoạt động của họ bị đóng cửa.

Khi nào và tại sao số 0 kép được thêm vào bánh xe roulette của Mỹ?

Khi nào và tại sao số 0 kép được thêm vào bánh xe roulette của Mỹ? Số 0 kép đã được thêm vào bánh xe roulette của Mỹ vào giữa thế kỷ 19. Năm chính xác không rõ ràng, nhưng người ta cho rằng nó đã được thêm vào khoảng những năm 1860. Lý do bổ sung nó là để tăng tỷ lệ lợi nhuận nhà cái, giúp trò chơi mang lại nhiều lợi nhuận hơn cho sòng bạc.

Rake Chase là gì?

Rake Chase là gì? Rake Chase là chương trình khuyến mãi poker nhằm khuyến khích người chơi cào nhiều hơn và thưởng cho họ một cách hậu hĩnh vì điều đó. Ngược lại với cuộc đua cào, bạn không cạnh tranh với những người chơi khác mà thay vào đó bạn theo đuổi các mục tiêu cá nhân của riêng mình. Để đạt được số điểm mục tiêu, bạn cần chơi một số ván bài poker hoặc giải đấu nhất định bằng tiền thật.

Trang web này chỉ thu thập các bài viết liên quan. Để xem bản gốc, vui lòng sao chép và mở liên kết sau:Lỗ hổng trong vấn đề sinh số ngẫu nhiên một ví dụ từ dự án MechMaster

quay số ngẫu nhiên
Bài viết mới nhất Bài viết phổ biến
Bài viết được đề xuất

Ngẫu nhiên – Wikipedia tiếng Việt

45 ngôn ngữ- Afrikaans العربية Azərbaycanca Bahasa Indonesia Bahasa Melayu 閩南語 / Bân-lâm-gú Български Чӑвашла Čeština Dansk Deutsch Eesti English Español Euskara فارسی Français Galego 한국어 हिन्दी Hrvatski Italiano עברית Latina Magyar Malagasy Монгол Nederlands 日本語 Norsk bokmål Polski Português Română Русский Shqip Simple English Slovenčina کوردی Suomi Svenska Tagalog Türkçe Українська 粵語 中文 Sửa liên kếtsửa | sửa mã nguồnsửa | sửa mã nguồnsửa | sửa mã nguồnsửa | sửa mã nguồnsửa | sửa mã nguồn

RAND (Hàm RAND) - Hỗ trợ của Microsoft

Hàm RAND trả về một số thực ngẫu nhiên được phân bố đều lớn hơn hoặc bằng 0 và nhỏ hơn 1. Một số thực ngẫu nhiên mới được trả về mỗi khi trang tính được tính toán.

# Tiêu đề bài viết Từ khóa Liên kết bài viết Chi tiết bài viết