日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP-代码审计-SQL注入

發(fā)布時間:2024/6/3 php 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP-代码审计-SQL注入 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

代碼審計

白盒測試

  • 搭建成功后 用WEB漏洞掃描工具
  • 利用網(wǎng)站的源碼進行代碼審計

準(zhǔn)備工作

  • 漏洞參數(shù)條件:函數(shù) 可控變量
  • 列如sql注入
  • 函數(shù)關(guān)鍵字:mysql_connect mysql_select_db mysql_query 等
  • 可控變量關(guān)鍵字:$_GET $_POST $_REQUEST $_SERVER等

定點漏洞挖掘

  • 分析漏洞產(chǎn)生條件
  • 得到漏洞關(guān)鍵字
  • 利用工具查找關(guān)鍵字
  • 分析文件名進行判斷篩選
  • 對文件進行代碼分析 跟蹤變量
  • 確定是否存在該漏洞

數(shù)據(jù)庫監(jiān)控工具挖掘

  • 打開審計插件mysql監(jiān)控工具

  • 輸入mysql賬號密碼點擊下斷和更新

  • 登陸要審計的頁面
  • 并且吧各個功能點都點一遍

  • 回到源代碼審計工具
  • 點擊更新
  • 看到變量中帶值的的sql語句就可能是注入點

  • 復(fù)制帶值的sql語句部分

  • 粘貼到包含文本,并輸入搜索的文件和范圍,一般文件就是php文件

  • 點開一個看起來不像配置文件的文件
  • crtl + f 搜索剛剛粘貼的關(guān)鍵字

  • 找到帶參數(shù)id的sql語句
  • 如果包含該參數(shù)有變量,就需要回調(diào)該變量,觀察該變量過濾規(guī)則,從觀察是否存在過濾不完整
  • dvwa用的isset函數(shù),沒有過濾的意思,所以不必回調(diào)
  • 所以該頁面沒有任何過濾,存在sql注入

SEAY源代碼工具挖掘

  • 首先打開seay源代碼審計工具
  • 點擊新建項目導(dǎo)入源碼
  • 點擊自動審計

  • 可以看到一堆漏洞
  • 我們點擊sql注入這個


產(chǎn)生漏洞 條件

  • 函數(shù)關(guān)鍵字:mysql_connect mysql_select_db mysql_query 等
  • 可控變量關(guān)鍵字:$_GET $_POST $_REQUEST $_SERVER等
  • 該沒有可控變量關(guān)鍵字,我們假設(shè)他有關(guān)鍵字$_GET

  • 可以看到使用了變量傳入,并且有函數(shù)包裹所以我們要回調(diào)函數(shù)
  • 我們復(fù)制該函數(shù)名

  • 在本文中查找該函數(shù)

  • 可以看到該函數(shù)的定義是
  • 如果條件存在就將輸入的字符轉(zhuǎn)義

  • 我們查一下該條件到底是什么
  • 使用了兩個函數(shù):function_exists()和get_magic_quotes_gpc()
  • 第一個是定義是否傳來字符串
  • 第二個是定義傳來的銘感字符添加轉(zhuǎn)義

  • 再回到這邊來
  • 如果那邊的條件成立,則根本不存在注入
  • 因為他規(guī)定了輸入必須是字符還有轉(zhuǎn)義威脅字符

  • 所以該位置不存在注入
  • 我們現(xiàn)在做一個假設(shè)
  • 如果沒有必須是字符串的條件
  • 他只是過濾了單引號等字符

  • 而該sql語句并沒有吧字符寫死在里面
  • 則該位置就存在漏洞,因為他過濾的是字符單引號等字符,但是我們可以不用字符,使用整形注入

  • 現(xiàn)在假設(shè)他真的就存在這么一個漏洞
  • 通常情況是觀察該類在那位置實例化可以是本文也可以是外部調(diào)用所以本文和外部調(diào)用我們都要搜索是否存在
  • 我們搜索該類的時候發(fā)現(xiàn)沒有任何文件調(diào)用(此處無圖),所以他肯定就是在本頁面中使用

三種情況

  • 一種是在其他文件實例化,一種是在本文件實例化,還有一種是在類中調(diào)用

  • 文件實例化:就要通過全文函數(shù)搜索,去找到實例化的文件,然后再通過該傳參條件,在外部文件構(gòu)造sql語句

  • 本文件實例化和類中調(diào)用都直接在當(dāng)前文件構(gòu)造sql語句即可


  • 通過在本文搜索,搜索他當(dāng)前所在的函數(shù)

  • 發(fā)現(xiàn)該函數(shù)就是在類中調(diào)用

  • 找到該語句,根據(jù)其條件,構(gòu)造出利用姿勢

  • 如:php?funcName=unique&value=1

  • 反正不是盲注就是顯注入或報錯注入

  • 觀察應(yīng)該是盲注

  • 如果真的要確定是什么注入就跟一下條件語句中的函數(shù),看他怎么處理即可

這里假設(shè)變量都是用get傳參(圖中小紅方塊),因為該源碼沒有吧參數(shù)傳遞給用戶,所以將就假設(shè)一下,方法都一樣

funcName=funcName=funcName=_GET[‘unique’];
value=value=value=_GET[‘unique’];

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的PHP-代码审计-SQL注入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。