直接檢視網頁源**
>
>
welcome to ******xue
head
>
>
/>
>
noticeb
>
: use of undefined constant user - assumed 'user' in
>
c:\h43a1w3\phpstudy\www\web\5\index.phpb
>
on line
>
9b>
/>
/>
>
noticeb
>
: undefined index: user in
>
c:\h43a1w3\phpstudy\www\web\5\index.phpb
>
on line
>
9b>
/>
發現存在index.txt
<?phpif (
$_post
[user]
&&$_post
[pass])
$user
= $_post
[user]
;$pass
= md5($_post
[pass]
);$sql
= "select pw from php where user=
'$user'
";$query
= mysql_query($sql
);if (!$query
) $row
= mysql_fetch_array($query
, mysql_assoc);
//echo $row
["pw"];
if (($row
[pw]
) && (!strcasecmp($pass
, $row
[pw]
)))
else
}
mysql_query()函式
mysql_query() 函式執行一條 mysql 查詢。mysql_fetch_array()函式
mysql_fetch_array() 函式從結果集中取得一行作為關聯陣列,或數字陣列,或二者兼有返回根據從結果集取得的行生成的陣列,如果沒有更多行則返回 false。strcasecmp()函式
strcasecmp() 函式比較兩個字串(不區分大小寫)。通過**可以了解它從資料庫中查詢user使用者的pw值;將pass值進行md5加密後賦給pass變數;最後判斷資料庫中的pw值是否與加密後的pass變數一致。
$sql
="select pw from php where user='$user'"
;
在這裡我們可以利用sql語句,直接給$sql
返回乙個值。也就是說,不需要訪問題裡的資料庫,只要我們修改了$sql
的值,然後使得它與加密後的pass值一致即可拿到flag。
可以用union select聯合查詢來繞過,構造如下payload:
程式邏輯問題 實驗吧
題目提示是繞過,本題考點 sql語句注入 初了解 可略 mysql fetch array 中可選的第二個引數 result type 是乙個常量,可以接受以下值 mysql assoc,mysql num 和 mysql both。本特性是 php 3.0.7 起新加的。本引數的預設值是 mysq...
程式邏輯問題 實驗吧
今天有點時間就多寫幾篇解題思路吧,希望能夠幫助到那些需要幫助的人,所有的wp都是以一題一篇的形式寫出 主要是為了能夠讓讀者更好的閱讀以及查詢,希望你們不要責怪哦!共勉!永遠愛你們的 新寶寶 難度 中 參與人數 8729人 get flag 2738人 答題人數 2840人 解題通過率 96 繞過 解...
實驗吧 程式邏輯問題
右鍵檢視原始碼 進入後看到 根據原始碼可以看到兩處特別需要重視的地方。很明顯1處sql語句存在注入漏洞,但是密碼欄不能通過一般的注入來繞過,但是可以發現,只要滿足了 row pw strcasecmp pass,row pw 就可以拿到flag,也就是說,我們輸入的 pass與從資料庫取出來的pw一...