同じ接続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 \" ')
パパ!私は、ハッシュ衝突を作成するために管理:)