1.Bugku
decrypt
<?php
function encrypt($data,$key)
{
$key = md5('ISCC');
$x = 0;
$len = strlen($data);
$klen = strlen($key);
for ($i=0; $i < $len; $i++) {
if ($x == $klen)
{
$x = 0;
}
$char .= $key[$x];//.= 在php中是字符串連接的意思
$x+=1;
}
for ($i=0; $i < $len; $i++) {
$str .= chr((ord($data[$i]) + ord($char[$i])) % 128);
}
return base64_encode($str);
}
?>
寫(xiě)個(gè)py腳本解密flag即可。
#python3
from base64 import *
from hashlib import *
str_b64encode='fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA='
str=str(b64decode(str_b64encode),'utf-8')#len(str)=38,即len=38
key=md5('ISCC'.encode('utf-8')).hexdigest()
char=''
x=0
flag=''
for i in range(0,38):
if x==len(key):
x=0
char+=key[x]
x+=1
for i in range(0,38):
if ord(str[i])<ord(char[i]):
flag=flag+chr((ord(str[i])+128)-ord(char[i]))
continue
flag = flag + chr(ord(str[i]) - ord(char[i]))
print(flag)
每次看自己寫(xiě)的py腳本總覺(jué)得很丑陋,遠(yuǎn)不如大佬們寫(xiě)得美觀、高效。
sql注入
方法提示的很明確,基于布爾的SQL盲注。
先嘗試一下常用的用戶名和口令,得到一個(gè)正確的用戶名為admin。

1-1
先嘗試了一下,傳入"a'or(length(database())<8)"時(shí)提示用戶名不存在,傳入"a'or(length(database())<9)"時(shí)提示密碼錯(cuò)誤,說(shuō)明當(dāng)前數(shù)據(jù)庫(kù)名長(zhǎng)度為8。
這里要注意,本題過(guò)濾了information/where/is/=/like等關(guān)鍵詞,所以沒(méi)辦法(至少我想不到辦法)去爆表名,列名??戳藈p好像是猜出來(lái)的?
使用py腳本,繼續(xù)使用bool盲注的方式,爆出password,然后解密,登錄,即可。