bugku ctf decrypt
生活随笔
收集整理的這篇文章主要介紹了
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) //當(dāng)$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=
分析代碼
嘗試寫解密代碼
<?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)都為?
思考是因?yà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");} ?>總結(jié)
以上是生活随笔為你收集整理的bugku ctf decrypt的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cisco anyconnect 下载(
- 下一篇: 将.bat文件设置为Window系统开机