Pwnable衝突

同じ接続sshは、ファイルを表示するには、パスワードを入力してください

Col.cは、ソースコードを見て

書式#include <stdio.hに> 
する#include < 文字列の.h> 
符号なしの長いハッシュコード= 0x21DD09EC 
符号なしのロング check_password(CONST  のchar * P){
     INT * IP =(INT * )P。
    int型私は、
    int型のres = 0 ;
    (i = 0 ; iは< 5 ; iは++ ){ 
        RES + = IP [i]は、
    } 
    戻りRESと、
} 

int型のmain(int型 ARGC、CHAR * ARGV []){
     場合(ARGC < 2 ){ 
        のprintf(" 用法:%S [パスコード] \ n "、ARGV [ 0 ])。
        リターン 0 ; 
    } 
    であれば(strlenを(ARGVは、[ 1 ])!= 20 ){ 
        のprintf(" パスコードの長さは、nを\ 20バイトでなければなりません" )。
        リターン 0 ; 
    } 

    であれば(ハッシュコード== check_password(ARGV [ 1 ])){ 
        システム(" / binに/猫フラグ" )。
        リターン 0 ; 
    } 
    
        のprintf(" 間違ったパスコード\ nは。" );
    リターン 0 ; 
}

check_passwordハッシュコード関数の戻り値はフラグであり解像度と同じであるため、すなわち、ハッシュコード== 0x21DD09EC ==解像度、check_passwordルック機能、強力なint型に変わり、そして5回の累積出力解像度、次の第二の主な機能ながら、 20の拘束長場合、INTが正確に20バイトの5つのグループに分け、4バイトであります

 

我々は再度の控除前に、5 113626825を与え添加することにより、分割された計算の便宜のために、568 134 124 10進する0x21DD09ECプラス一つは1136268254、すなわち(113626825 113,626,8254 + = 568 134 124 * 4)

 

その後、彼らは16進数に変わる0x6c5cec9 * 4 + 0x6c5cec8 = 0x21dd09ec

 

リトルエンディアン入力のpythonのために、ここで入力することができ、入力の値を知るために

./col $(のpython -c ' 印刷"\ xc9 \ XCE \ XC5 X06 \" * 4 + "\ xc8 \ XCE \ XC5 X06 \" '

 

 パパ!私は、ハッシュ衝突を作成するために管理:)

おすすめ

転載: www.cnblogs.com/gaonuoqi/p/11745438.html