實驗吧 WEB 程式邏輯問題

2021-09-18 01:36:14 字數 2129 閱讀 7697

直接檢視網頁源**

>

>

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一...