日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bugku ctf decrypt

發(fā)布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bugku ctf decrypt 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目源碼

<?php function encrypt($data,$key) {$key = md5('ISCC'); //密鑰729623334f0aa2784a1599fd374c120d$x = 0; $len = strlen($data); //要加密數(shù)據(jù)長度$klen = strlen($key); //密鑰長度for ($i=0; $i < $len; $i++) { //以data長度循環(huán)if ($x == $klen) //當$x值等于密鑰位數(shù)時 $x=0重新開始{$x = 0; }$char .= $key[$x]; //字符串拼接密鑰每一位$x+=1;}for ($i=0; $i < $len; $i++) { //以data長度循環(huán)$str .= chr((ord($data[$i]) + ord($char[$i])) % 128); //加密方法 將data和密鑰的每一位ascii值相加后除以128得余數(shù) 的值 再 返回為字符串 拼接起來}return base64_encode($str); } ?> $data .= chr(ord($str[$i])-$ord($char[$i]))

給出的加密后的數(shù)據(jù)給的數(shù)據(jù)為 fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=

分析代碼

  • 密鑰為 $key 之位MD5加密’ISCC '后的 729623334f0aa2784a1599fd374c120d
  • $char 為32為密鑰循環(huán)拼接。
  • 最后加密方法為加密方法 將data和密鑰的每一位ascii值相加后除以128得余數(shù) 的值 再 返回為字符串 拼接起來
  • 嘗試寫解密代碼

    <?php$key = md5('ISCC');$x = 0;$base64_str = 'fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=';$data = base64_decode($base64_str);$len = strlen($data);$char = '';$str = '';$klen = strlen($key);for ($i=0; $i < $len; $i++) { if ($x == $klen){$x = 0;}$char .= $key[$x];$x+=1;}for ($i=0; $i < $len; $i++) {$str .= chr(ord($data[$i]) - ord($char[$i]));print($str."\n");} ?>

    跑起來發(fā)現(xiàn)都為?

    思考是因為 解密的時候 沒有判斷加密數(shù)據(jù)和密鑰 ascii值的大小造成

    修改解密代碼

    <?php$key = md5('ISCC');$x = 0;$base64_str = 'fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=';$data = base64_decode($base64_str);$len = strlen($data);$char = '';$str = '';$klen = strlen($key);for ($i=0; $i < $len; $i++) { if ($x == $klen){$x = 0;}$char .= $key[$x];$x+=1;}for ($i=0; $i < $len; $i++) {if (ord($data[$i]) > ord($char[$i])) {$str .= chr(ord($data[$i]) - ord($char[$i]));}else{$str .= chr (128+ord($data[$i])-ord($char[$i]));}print($str."\n");} ?>

    總結

    以上是生活随笔為你收集整理的bugku ctf decrypt的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。