# 簡介:
邏輯錯誤漏洞是由于程序邏輯不嚴謹或者邏輯太復雜,導致一些邏輯分支不能夠正常處理或處理錯誤。一般出現在任意密碼修改(沒有舊密碼驗證),越權訪問,密碼找回,交易支付金額等處
# 圖片及短信驗證碼邏輯漏洞:
* 圖片內容清晰可識別(機器識別)
* 驗證碼采用前端js刷新
* 驗證碼不過期
* 驗證碼本地校驗
* 刪除數據包中的驗證碼參數
* 短信驗證碼4位數字且不過期
* 短信驗證碼未綁定用戶
* 短信驗證碼本地校驗
* 短信驗證碼編碼后存在數據包中(可導致短信內容可控)
* 短信驗證碼復用
# 找回密碼的邏輯問題:
* 找回密碼的驗證碼是4位數字,可爆破
* 采用本地驗證:可以先嘗試修改自己的賬號密碼,保存正確的返回包,然后修改他人密碼的時候替換返回包
* 最終修改密碼的數據包,以另外的ID作為身份判斷(如userid),而該ID可以再別處獲得
* 接受驗證碼的手機號修改為自己的號碼,然后輸入自己的號碼去接受驗證碼,進行密碼重置
* 獲取驗證碼的時候,會生成一個身份標識(如cookie),我們就替換他人賬號的身份重置他人的密碼
* referer:https://www.ichunqiu.com/course/59045
# 在線購買商品的邏輯漏洞:
* 添加兩個商品,其中一個商品的數量為負數,在總價上抵消另外一個商品的價格,例如100*1+99*(-1),即支付1元
* 使用滿200-100的優惠券,然后在交易過程中替換商品價格為101元的商品id,支付1元
* 支付結果判斷采用本地驗證,通過修改返回包讓系統認為已經成功支付
* 限量購買的商品,如果缺少數據加鎖機制,則可以通過數據包并發的方式來突破限制
* 購買商品未支付的時候,商品庫存值已經扣掉相應的數量,且訂單未設置自動取消時間,批量操作即可導致商城所有商品無法購買
* 越權使用他人余額來給我們支付商品。付款的時候修改數據包中的用戶ID即可,有些需要支付密碼的,可以通過暴力破解的方式進行測試
* 商品下單的時候,一般通過暴力修改數據包的地址id,然后去查看訂單的時候就可以獲取他人的地址等信息
# 后臺管理系統中,如何通過普通賬號,嘗試獲取管理員權限
* 編輯個人信息的時候,修改權限組的id,一般管理員的值為0或者1
* 后臺修改密碼的地方,如果是根據userid來修改密碼的,可以修改id的值來修改管理員的密碼
* 在個人資料處插入xss腳本,獲取管理員cookie
* 查看個人資料的時候,如果根據id來顯示,遍歷id獲取管理員信息
* 測試后臺功能,找到注入,上傳,命令執行等漏洞,直接拿下數據庫權限或者shell,再獲得管理員權限
# 顯示個人用戶信息的地方會出現的問題:
* XSS:一般只能打到自己或者管理員,而只有后者有用
* 越權:一般是越權查看和編輯他人的個人信息;有時候可以通過數據包來修改手機號,用戶名等
* 信息泄露:后臺執行了select * , 導致用戶所有的信息都在返回包李,包括用戶的密碼,密保答案等
* 頭像處的文件上傳:任意文件上傳漏洞,ImageMagick命令執行,XSS,越權等問題
* sql注入:一般存在于個人用戶信息,可輸出的地方