->裡面我們可以看到這一行我們可以知道要兩個都過才能拿到flag
$query = "SELECT 1 FROM users WHERE name='$username' AND password='$password'";
->接下去看 我們可以發現他只有檢查輸入進去的username的部分密碼沒有去做檢查
//validation check
$pattern ="/.*['\"].*OR.*/i";
$user_match = preg_match($pattern, $username); $password_match = preg_match($pattern, $username);
->這裡我們就可以想辦法再密碼做壞壞的事情
->我們可以使用SQL injection去做攻擊 在網路上可以找到很多資料下面的補充也會放一些我看的資料
->我們帳號的部分就亂打不能打他限制那些喔!密碼的部分就打' or 1=1—
->我們就能拿到我們的flag
->Your flag is: picoCTF{w3lc0m3_t0_th3_vau1t_c09f30a0}
->至於為啥會跑出flag呢 因為我們剛剛打的密碼會傳到源碼那而源碼那邊會因為我們輸入的東西改動到源碼變成
$query = "SELECT 1 FROM users WHERE name='$username' AND password=' ' or 1=1—";
->這邊密碼就變成'' or 1=1 --後面的程式碼會被註解掉
我之前對於SQL injection的印象都只是輸入' or 1=1— 就過了沒有深入的去看看還有啥現在回來看看一些資料發現有一些延伸出去的東西可以是我以前沒想過的