+29

Lại hack game Blockchain, truy cập vào tài khoản bất kỳ trong game

Kiến thức về Blockchain của mình vẫn đang hạn hẹp, nếu có câu nào hay kiến thức chỗ nào mình hiểu sai thì xin các bạn góp ý ở dưới phần comment nhé

Dạo gần đây mình cùng homie của mình cũng hay đi xiên các con game Blockchain, do trend NFT game Blockchain đang cực kỳ nổi bây giờ, nhất là Việt Nam mình có con game Axie Infinity vốn hoá hàng tỷ Biden.

Thật tiếc là ngày xưa - tháng 5 vừa rồi - một homie khác của mình cũng rủ chơi game Axie Infinity mà mình lại không chơi, chứ chơi đến bây giờ thì cũng ....
Các bạn có thể đọc bài viết tại https://viblo.asia/p/blockchain-do-bo-nen-cong-nghiep-gaming-co-hoi-hay-rui-ro-cung-loi-chia-se-ve-viec-ca-nhan-minh-dang-kiem-them-thu-nhap-bang-cach-choi-cac-blockchain-game-nhu-the-nao-LzD5daVEKjY

Cố gắng lên các bạn, nghèo thì lâu chứ giàu thì mấy đâu huhu

Thôi lòng vòng văn tự thế đủ rồi, vào chủ đề chính thôi, lẹt gâu

Metamask

Nếu ai chưa từng tiếp xúc với crypto blockchain thì cái này có vẻ lạ lẫm, chứ Metamask đã quá quen thuộc với anh em "chơi" crypto rồi, tuy nhiên không chắc là tất cả những người dùng nó đã hiểu rõ về Metamask, các ký khoá của nó, vân vân và mây mây. Nói đơn giản, Metamask là một tiện ích giúp lưu trữ cho mình khoá Private-key và hiển thị Public-key

Giao diện Metamask

Và đương nhiên là không chỉ Metamask có khả năng làm được điều này, có rất nhiều ví DEX có thể giúp chúng ta làm được điều cơ bản Metamask làm được, tuy nhiên tuỳ vào game có support nó hay không, mình thấy đa số game NFT đều hỗ trợ Metamask nên mình tập trung nói về Metamask thôi

Game hỗ trợ rất nhiều kết nối các ví khác nhau

Kết nối tới hệ thống

Điều đầu tiên, khi click vào Metamask hệ thống sẽ cho phép ta login luôn, ví dụ

Vậy thì ở đây, tại sao khi click như vậy thì hệ thống có thể cho chúng ta login vào user của chúng ta luôn, và có thể sử dụng vài tính năng cơ bản.

Để cho dễ hiểu, đây là API để server get được username của mình

Chúng ta có thể thấy thằng không hề có xác thực, chỉ đơn giản là cung cấp cho API address của mình thì server trả về username.

Khi click vào Metamask như vậy, Metamask sẽ cung cấp cho website public key ví của chúng ta (chính là địa chỉ ví đấy), website sẽ sử dụng địa chỉ ví để login vào hệ thống luôn. Giống như việc sử dụng username login vào hệ thống mà không cần sử dụng mật khẩu vậy.

Ớ thế là, ai có địa chỉ ví của mềnh là cũng có thể login vào account của mềnh à 🤔
Chính xác là như vậy, tuy nhiên thông tin đấy có lẽ chỉ là public thôi, khi chỉnh sửa thông tin user thì chúng ta cần phải ký 1 phát để xác thực đúng là mình đang sửa thông tin trên account của mình nữa. Việc này giống việc xác thực chữ ký điện tử vậy, khẳng định chính mình đã ký vào đó chứ không phải anh hàng xóm, hay cô bạn thân nào đó ký hộ được.

Nếu có thời gian mình sẽ bổ sung thêm về phần ký này nhé

Hack game thôi nào

Lâu lâu rồi homie của mình có gửi cho mình cái link game của người anh em láng giềng, các bạn có thể truy cập tại đây https://bidragon.io

Đường link trên chỉ là cái market thôi, muốn chơi game thì các bạn cần phải mua NFT game rồi mới chơi được.

Truy cập vào URL để chơi game https://app.bidragon.io/ mình thấy nó truy cập thẳng trực tiếp vào game luôn chứ không cần mình làm 1 hành động nào khác 🤔

Ớ thế thì, chắc chắn game đã không có cơ chế verify nào với account đang truy cập vào game, vậy thì mình có thể sử dụng address bất kỳ cũng có thể login vào game rồi.

Game sử dụng socket để gửi dữ liệu, Đọc code JS một chút chúng ta có thể thấy việc login rất đơn giản, gửi gói tin socket bao gồm login và password, do không cần tác động gì tới account của mình cả nên password sẽ được set bởi hệ thống, vậy thì quá trình tạo password sẽ diễn ra như thế nào

Có thể thấy rằng

_pwd = md5.hexMD5(_DAPP_SDK.openId);

Tuy nhiên cái openId kia ở đâu

Chỉ với một request đơn giản bao gồm address, secret thì mặc định là secret=Welcome%20To%20MoonGming%21, signature không có, ta có thể lấy được openId account bất kỳ rồi

Một nạn nhân xấu số trên top scoreboard được target

Server bảo OK, nhập password đi tau cho login

Nhập password là md5 của openId lấy được ở trên rồi gửi đi

Login success, bây giờ có thể thoải mái sử dụng account này rồi

Timeline

  • Ngày 25 tháng 8: Báo cáo cho đội dev bidragon thông qua telegram
  • Ngày 26 tháng 8: Dev bidragon đã fix bug, và trao thưởng cho chúng tôi một NFT Dragon cấp S.

Đương nhiên rằng nhận rồi là bán luôn lấy tiền - được 4.5BNB (đang nghèo mà)

Còn phần nữa, các bạn cùng đón đọc nhé


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí