Cách mã hoá password của XenForo

Thảo luận trong 'Hacking - Security' bắt đầu bởi clever, 10/5/12.

1votes
5/5, 1 vote

  1. clever

    clever Member

    Bài viết:
    5
    Likes :
    8
    XenForo không dùng mã hoá MD5 mà dùng 2 loại thay đổi nhau là sha256 và sha1
    Giả sử chúng ta dùng phpmyadmin export table xf_user_authenticate, column số 1 và lúc chọn export phải bỏ check "Use hexadecimal for binary fields"
    Ta có nội dung sau :
    Mã:
    INSERT INTO `xf_user_authenticate` VALUES (1, 'XenForo_Authentication_Core', 'a:3:{s:4:"hash";s:64:"7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904";s:4:"salt";s:64:"12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4";s:8:"hashFunc";s:6:"sha256";}', 'c6b80f8aa640b8a22088b4146e3115ff1b1edff9');
    Như vậy ta thấy nội dung của Authentication là 1 chuỗi array đã được serialize
    Mã:
    a:3:{s:4:"hash";s:64:"7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904";s:4:"salt";s:64:"12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4";s:8:"hashFunc";s:6:"sha256";}
    Nếu ta unserialize nó sẽ có:
    Mã:
    Array (
    [hash] => 7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904
    [salt] => 12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4
    [hashFunc] => sha256 )
    Password đặt cho user số 1 này là 1. Chúng ta dùng function sau để kiểm tra mật khẩu:
    Mã:
    function authenticate_pass( $password, $serialized_pass )
        {
            $pass_array = unserialize( $serialized_pass );
            switch( $pass_array['hashFunc'] )
            {
                case 'sha256':
                    return ( $pass_array['hash'] == hash( 'sha256', hash( 'sha256', $password ) . $pass_array['salt'] ) );
                case 'sha1':
                    return ( $pass_array['hash'] == sha1( sha1( $password ) . $pass_array['salt'] ) );
            }
        }
    Chạy thử script PHP:
    Mã:
    <?
     
    function authenticate_pass( $password, $serialized_pass )
        {
            $pass_array = unserialize( $serialized_pass );
            switch( $pass_array['hashFunc'] )
            {
                case 'sha256':
                    return ( $pass_array['hash'] == hash( 'sha256', hash( 'sha256', $password ) . $pass_array['salt'] ) );
                case 'sha1':
                    return ( $pass_array['hash'] == sha1( sha1( $password ) . $pass_array['salt'] ) );
            }
        }
     
     
     
    $serialized_pass ='a:3:{s:4:"hash";s:64:"7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904";s:4:"salt";s:64:"12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4";s:8:"hashFunc";s:6:"sha256";}';
     
    $check = authenticate_pass( '1',$serialized_pass );
     
    if($check) echo 'true';
    else echo 'false';
     
    ?>
    Kết quả trả về sẽ là True. Như vậy thì nó sẽ mã hóa dựa vào hashFunc trong array pass là sha246 hay sha1.

    Sha56 :
    [hash] => 7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904
    [salt] => 12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4
    [hashFunc] => sha256
    Mã:
    hash( 'sha256', hash( 'sha256', '1' ) .'12346599240de8a18acae1620c48ce8b251cbe409d37906a8b7e1eff546ed2f4');
    Hash trên ra đúng 7a8ac07ad66037cfaaec82279853fc9012d694507dcc6bd508abae7f0cec8904 vì hash vừa tạo ra bằng hash đã có sẵn nên TRUE.
    Sha1 thì cũng tương tự như trên.
    Theo MIF
     
    antv and lehieuit like this.
    Đang tải...
  2. santahashi

    santahashi Member

    Bài viết:
    118
    Likes :
    17
    Không hiểu :|
     
  3. kuhuy102

    kuhuy102 Member

    Bài viết:
    219
    Likes :
    31
    Đọc xong loạn não :|
     
  4. Reishou

    Reishou Member

    Bài viết:
    519
    Likes :
    192
    Biết nó bảo mật là được rồi, tìm hiểu sâu làm gì cho mệt óc nếu bạn không chuyên về bảo mật.
     
  5. Đinh Ngọc Đức

    Đinh Ngọc Đức New Member

    Bài viết:
    58
    Likes :
    10
    Biết thêm để khi nào mất pass còn biết đường mà lấy lại phải ko nhỉ?
     
  6. Reishou

    Reishou Member

    Bài viết:
    519
    Likes :
    192
    Không cần thiết. Có acc hosting, có quyền vào, thay đổi trong phpmyadmin thì không việc gì phải lo.
     
  7. Nguyễn Trọng Hóa

    Nguyễn Trọng Hóa New Member

    Bài viết:
    41
    Likes :
    8
    mất pass thì forget pass là xong. nó gửi mail tới. ko nhớ mail ji thì vào phpmyadmin sửa lại email . xong . còn ko làm được 2 việc trên thì bỏ té là xong :) .
     
    hungnt thích bài này.
  8. antv

    antv Member

    Bài viết:
    429
    Likes :
    99
    có phải vd : khi pass là 123456789 mã hoá thành dwhagrajkfasga khi login dùng pass 123456789 hệ thống vẫn cho login nhưng khi bị keylog thì thg carcked nhận dc dwhagrajkfasga phải ko bác ?
     
  9. sanvu88

    sanvu88 Well-Known Member

    Bài viết:
    1,048
    Likes :
    467
    không phải đâu bạn :) khi bạn truy cập các table user trong phpmyadmin sẽ có một trường ký tự lằng nhằng đó là pass bị mã hóa, ở vbb thì mã hóa md5 còn xen thì mã hóa như chủ thớt nói :)
     
    antv thích bài này.
  10. antv

    antv Member

    Bài viết:
    429
    Likes :
    99
  11. tacgiaviet

    tacgiaviet Member

    Bài viết:
    280
    Likes :
    82
    VBB ko đơn thuần md5 là còn chèn cả salt nữa

    Mất pass admin mà đúng lúc mail forget pass ko hoạt động thì sao bạn ?

    Cách đơn giản nhất là reg 1 user mới, nhớ lấy pass, rồi vô phpmyadmin, table xf_user tìm user mới reg = tên or email gì đó, tìm is_admin, chèn số 1, is_mod, chèn số 1, xong, lấy user mới vô adcp change lại pass admin
     
    antv thích bài này.
  12. sanvu88

    sanvu88 Well-Known Member

    Bài viết:
    1,048
    Likes :
    467
    antv thích bài này.
  13. antv

    antv Member

    Bài viết:
    429
    Likes :
    99
    nếu mất pass admin mà ko nhớ pass email thì có thể bên hosting can thiệp ko ta ?
     
  14. tacgiaviet

    tacgiaviet Member

    Bài viết:
    280
    Likes :
    82
    Chỉ cần bạn vô đc phpmyadmin thì chẳng cần nhờ ai cả, cách làm tớ nêu phía trên. host ko có phpad thì down về rùi up lên mà xài
     
  15. jetmoon

    jetmoon New Member

    Bài viết:
    2
    Likes :
    0
    Mình thử insert pass vào bảng xf_user_authenticate rồi tạo username, id trong bảng xf_user nhưng ko login vào diễn đàn dc.

    code của mình:
    MÌnh đang dùng xenforo 1.1.5
     
  16. Character_Boy

    Character_Boy Member

    Bài viết:
    316
    Likes :
    54
    trường hợp như bác nói hok dc thì còn 1 cách đó là edit trong SQL là dc
     
comments powered by Disqus

Chia sẻ trang này

Đang tải...