$sql='select * from users where username='$username' and password='$password';
**邏輯(建議閱讀)來自:假如我們想登入username為1的使用者
我們應該怎麼構建的sql語句???
如下例子
select * from users where username=1 and password=正確密碼
select * from users where username=1
當然我們不知道正確密碼我們可以試試第二種怎麼實現(遮蔽 and password=***
mysql怎麼實現注釋遮蔽那?? 答案就是#號就是注釋號 #後面的內容都被注釋yes!! 我們找到了 現在開始構造語句
select * from users where username=1 # and password=***
這個語句等效於
select * from users where username=1
那麼我們怎麼又不是去提交sql語句給後端
我們看看後端**
<?php
include_once("function/database.php");
// $username = $_post['username'];
// $password = $_post['password'];
$username = addslashes($_post['username']);
$password = addslashes($_post['password']);
getconnect();
$loginsql = "select * from users where username='$username' and password='$password'";
..... (省略
我們提交的賬戶就是變數 username 密碼就是變數 password
但是這裡使用addslashes函式(函式過濾了 單引號(』)雙引號(")反斜槓(\))
呵???這就剛剛好沒遮蔽#號我們你像推理可以得出
賬戶應該是 1
密碼可以隨便填(因為被#號注釋了 導致這個邏輯始終成立
1.替換引數各種敏感字元(# 』 or and 等) 僅僅用addslashes函式是不安全的
2.使用pdo分兩次發生sql語句
現在程式的php sql注入機率很小,加上如果使用pdo 就基本不可能了
漏洞利用與滲透測試基礎(PWN基礎知識)
上面兩張圖是linux下的。ollydbg是乙個windows下用來反彙編以及動態除錯的工具,這裡我使用的吾愛破解版的ollydbg。我們可以看到介面有四大塊,載入可執行檔案後得到以下介面 左上角 反彙編 左下角 記憶體空間 右上角 暫存器 右下角 棧 ollydbg比較好用的幾個功能有 在反彙編視...
談談PHP反序列基礎和簡單利用
序列化其實就是將資料轉化成一種可逆的資料結構,自然,逆向的過程就叫做反序列化。php 將資料序列化和反序列化會用到兩個函式 serialize將物件格式化成有序的字串 unserialize將字串還原成原來的物件 序列化的目的是方便資料的傳輸和儲存,在php中,序列化和反序列化一般用做快取,比如se...
django基礎入門 2 建立專案和應用
django簡單工作流程如下,瀏覽器發出請求,web伺服器接受瀏覽器請求,將請求的具體處理交給django框架,django框架通過將客戶端請求的url和django配置的url正則進行匹配,來決定呼叫那個檢視。檢視中通過模型和模板相關操作,渲染出最終的html頁面,再傳送給瀏覽器顯示。在當前使用者...