国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PbootCMS 3.0.4 SQL注入

這篇具有很好參考價值的文章主要介紹了PbootCMS 3.0.4 SQL注入。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.漏洞復現(xiàn)

PbootCMS 3.0.4,下載倉庫 · 星夢/PbootCMS - Gitee.com

復現(xiàn)

漏洞頁面:http://127.0.0.1/?search 或 http://127.0.0.1/?keyword

POST請求:1=select 1

2.正向分析

從可見功能點正向分析

index.php

...
//?引用內(nèi)核啟動文件
require?dirname(__FILE__)?.?'/core/start.php';

/core/start.php

...
//?啟動內(nèi)核
core\basic\Kernel::run();

/core/basic/Kernel.php

加密了,之后調(diào)用 IndexController類 的 _empty方法

...
*??翱云科技版權所有,未經(jīng)許可擅自破解本文件將依法追究法律責任。
...

/apps/home/controller/IndexController.php

在 _empty方法 的開頭添加:

//?空攔截器,?實現(xiàn)文章路由轉發(fā)
public?function?_empty()
{
??var_dump(debug_backtrace());

訪問主頁,可以知道是 Kernel.php 調(diào)用的

array(4)?{
??[0]=>
??array(7)?{
????["file"]=>
????string(108)?"D:\environment\phpstudy_pro\WWW\PbootCMS-V3.0.4\core\basic\Kernel.php(10)?:?eval()'d?code(1)?:?eval()'d?code"
????["line"]=>
????int(2)

通過對 search 或 keyword 進行 GET請求 都可以調(diào)用 SearchController類 的 index方法

//?空攔截器,?實現(xiàn)文章路由轉發(fā)
public?function?_empty()
{??...
??//?路由
??switch?($param[0])?{
????case?'search':
????case?'keyword':
??????$search?=?new?SearchController();
??????$search->index();
??????break;

/apps/home/controller/SearchController.php

調(diào)用了 ParserController類 的 parserSearchLabel方法

class?SearchController?extends?Controller
{
??...
??public?function?__construct()
??{
????$this->parser?=?new?ParserController();
????...
??}
??...
??public?function?index()
??{
????...
????$content?=?$this->parser->parserSearchLabel($content);?//?搜索結果標簽

ParserController類

/apps/home/controller/ParserController.php

class?ParserController?extends?Controller
{
??...
??public?function?__construct()
??{
????$this->model?=?new?ParserModel();
??}
??...
??//?解析內(nèi)容搜索結果標簽
??public?function?parserSearchLabel($content)
??{
????...
????//?數(shù)據(jù)接收
????if?($_POST)?{
??????$receive?=?$_POST;
????}?else?{
??????$receive?=?$_GET;
????}
?
????foreach?($receive?as?$key?=>?$value)?{
??????if?(!?!?$value?=?request($key,?'vars'))?{
????????...
????????$where3[$key]?=?$value;
????????...
??????}
????}
?
????//?去除特殊鍵值
????unset($where3['keyword']);
????...
????$data?=?$this->model->getLists($scode,?$num,?$order,?$where1,?$where2,?$where3,?$fuzzy,?$start,?$lfield,?$lg);

頁面中的搜索框是對 keyword 進行 GET請求 的,但是如果用 keyword 請求,變量會被銷毀

所以要自己進行 POST請求(1=select 1),請求會被 request函數(shù) 處理后賦值給 $where3,然后處理 SQL語句

/core/function/helper.php

request函數(shù)

function?request($name,?$type?=?null,?$require?=?false,?$vartext?=?null,?$default?=?null)
{
??if?(isset($_POST[$name]))?{
????$d_source?=?'post';
??}?else?{
????$d_source?=?'get';
??}
??$condition?=?array(
????'d_source'?=>?$d_source,
????'d_type'?=>?$type,
????'d_require'?=>?$require,
????$name?=>?$vartext,
????'d_default'?=>?$default
?
??);
??return?filter($name,?$condition);
}

設置了一個數(shù)組,然后通過 filter函數(shù) 進行過濾

array(5)?{
??["d_source"]=>
??string(4)?"post"
??["d_type"]=>
??string(4)?"vars"
??["d_require"]=>
??bool(false)
??[1]=>
??NULL
??["d_default"]=>
??NULL
}

filter函數(shù)

function?filter($varname,?$condition)
{
??...
??$vartext?=?$varname;
??...
??//?數(shù)據(jù)源
??if?(array_key_exists('d_source',?$condition))?{
????switch?($condition['d_source'])?{
??????case?'post':
????????$data?=?@$_POST[$varname];
????????break;
??...
??//?數(shù)據(jù)類型檢測
??if?(array_key_exists('d_type',?$condition))?{
????switch?($condition['d_type'])?{
??????...
??????case?'vars':
????????if?(!?preg_match('/^[\x{4e00}-\x{9fa5}\w\-\.,\s]+$/u',?$data))?{
??????????$err?=?'只能包含中文、字母、數(shù)字、橫線、點、逗號、空格!';
????????}
????????break;
??...
??//?返回收據(jù)
??return?escape_string($data);
}

就是,并且data 只能包含中文、字母、數(shù)字、橫線、點、逗號、空格,然后通過 escape_string函數(shù) 進行過濾

/core/function/handle.php

escape_string函數(shù)

Copy

//?獲取轉義數(shù)據(jù),支持字符串、數(shù)組、對象
function?escape_string($string)
{
??...
??$string?=?htmlspecialchars(trim($string),?ENT_QUOTES,?'UTF-8');
??$string?=?addslashes($string);
??...
??return?$string;
}

對 select 1 用 htmlspecialchars函數(shù) 和 addslashes函數(shù) 進行了轉義

ParserModel類

/apps/home/model/ParserModel.php

getLists方法

數(shù)據(jù)過濾完之后通過 ParserModel類 的 getLists方法 處理 SQL語句

//?列表內(nèi)容,帶分頁,不區(qū)分語言,兼容跨語言
public?function?getLists($scode,?$num,?$order,?$filter?=?array(),?$tags?=?array(),?$select?=?array(),?$fuzzy?=?true,?$start?=?1,?$lfield?=?null,?$lg?=?null)
{
??...
??return?parent::table('ay_content?a')->field($fields)
????...
????->where($select,?'AND',?'AND',?$fuzzy)
????...;
}

就在select數(shù)組 中,通過 where方法 進行了 SQL語句 拼接操作

Model類

/core/basic/Model.php

where方法

在 return 上面添加,看看最終的 SQL語句 是什么:

final?public?function?where($where,?$inConnect?=?'AND',?$outConnect?=?'AND',?$fuzzy?=?false)
{
??...
??var_dump($this->sql['where']);
??return?$this;
}

看到注入的 SQL語句 拼接到了最后

string(143)?"WHERE(a.scode?in?('5','6','7')?OR?a.subscode='5')?AND(a.status=1?AND?d.type=2?AND?a.date<'2023-05-05?14:09:11'?AND?a.acode='cn'?)?AND(select?1)"

本文為免殺三期學員筆記:https://www.cnblogs.com/Night-Tac/articles/17372836.html文章來源地址http://www.zghlxwxcb.cn/news/detail-683316.html

到了這里,關于PbootCMS 3.0.4 SQL注入的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【網(wǎng)絡安全】SQL注入--寬字節(jié)注入

    【網(wǎng)絡安全】SQL注入--寬字節(jié)注入

    寬字節(jié)注入,在 SQL 進行防注入的時候,一般會開啟 gpc,過濾特殊字符。 一般情況下開啟 gpc 是可以防御很多字符串型的注入,但是如果數(shù)據(jù)庫編碼不 對,也可以導致 SQL 防注入繞過,達到注入的目的。如果數(shù)據(jù)庫設置寬字節(jié)字 符集 gbk 會導致寬字節(jié)注入,從而逃逸 gpc 前提

    2023年04月13日
    瀏覽(57)
  • 網(wǎng)絡安全---SQL注入攻擊

    網(wǎng)絡安全---SQL注入攻擊

    ????????SQL 注入是一種代碼注入技術,可利用 Web 應用程序和數(shù)據(jù)庫服務器之間接口中的漏洞。當用戶的輸入在發(fā)送到后端數(shù)據(jù)庫服務器之前未在 Web 應用程序中正確檢查時,該漏洞就存在。 ????????許多 Web 應用程序從用戶處獲取輸入,然后使用這些輸入構建 SQL 查詢

    2024年04月12日
    瀏覽(23)
  • 【網(wǎng)絡安全】SQL注入詳解

    【網(wǎng)絡安全】SQL注入詳解

    SQL注入是比較常見的網(wǎng)絡攻擊方式之一,它不是利用操作系統(tǒng)的BUG來實現(xiàn)攻擊,而是針對程序員編寫時的疏忽,通過SQL語句,實現(xiàn)無賬號登錄,甚至篡改數(shù)據(jù)庫。 1:尋找到SQL注入的位置 2:判斷服務器類型和后臺數(shù)據(jù)庫類型 3:針對不同的服務器和數(shù)據(jù)庫特點進行SQL注入攻擊

    2024年02月06日
    瀏覽(23)
  • 【網(wǎng)絡安全】初探SQL注入漏洞

    【網(wǎng)絡安全】初探SQL注入漏洞

    要想玩SQL注入,一個簡單的數(shù)據(jù)交互頁面是需要的,故我們用PHP做一個簡易網(wǎng)頁,有登錄、注冊和首頁三塊內(nèi)容。 登錄需要輸入賬號密碼,等待提交后進入系統(tǒng); 注冊需要輸入名字,密碼,手機號,照片,等待提交后進入系統(tǒng); 首頁需要利用PHP和數(shù)據(jù)庫聯(lián)動后的查詢語句,

    2024年02月16日
    瀏覽(23)
  • 網(wǎng)絡安全必學SQL注入

    網(wǎng)絡安全必學SQL注入

    SQL注入漏洞可以說是在企業(yè)運營中會遇到的最具破壞性的漏洞之一,它也是目前被利用得最多的漏洞。要學會如何防御SQL注入,首先我們要學習它的原理。 針對SQL注入的攻擊行為可描述為通過在用戶可控參數(shù)中注入SQL語法,破壞原有SQL結構,達到編寫程序時意料之外結果的攻

    2024年02月03日
    瀏覽(25)
  • 網(wǎng)絡安全-初學SQL注入&基本概念

    SQL語句:解釋SQL(Structured Query Language)是一種用于與關系型數(shù)據(jù)庫進行交互的語言。SQL語句用于執(zhí)行各種數(shù)據(jù)庫操作,例如插入、更新、刪除和查詢數(shù)據(jù)。 用戶輸入與SQL查詢的拼接:說明應用程序通常會接受用戶的輸入,并將其用作構建SQL查詢語句的一部分。這種拼接用戶

    2024年02月13日
    瀏覽(27)
  • 「網(wǎng)絡安全」SQL注入攻擊的真相

    「網(wǎng)絡安全」SQL注入攻擊的真相

    點擊此處即可獲得282G網(wǎng)絡安全學習資料 我們生活在數(shù)據(jù)的黃金時代。有些公司將其分析為更好的自己,有些公司為了獲利而進行交易,沒有一家公司因其價值而自由放棄 - 對于他們的業(yè)務和犯罪分子。 SQL(結構化查詢語言)是一種非常流行的與數(shù)據(jù)庫通信的方式。雖然許多

    2024年02月07日
    瀏覽(25)
  • 網(wǎng)絡安全之SQL注入及防御(下篇)

    網(wǎng)絡安全之SQL注入及防御(下篇)

    目錄 什么是SQL注入? 一,SQL注入會導致什么呢? 二,SQL注入思想與步驟 三,SQL注入的繞過 四,sqlmap工具的使用 ?五,sql注入的防御方法 總結 什么是SQL注入? SQL注入(SQL Injection)是一種常見的網(wǎng)絡攻擊手段,是因為應用程序對用戶輸入的數(shù)據(jù)驗證不到位造成的。攻擊者在

    2024年04月28日
    瀏覽(28)
  • 【網(wǎng)絡安全】SQL注入漏洞的修復建議

    【網(wǎng)絡安全】SQL注入漏洞的修復建議

    SQL注入是Web應用程序常見的安全漏洞之一,攻擊者通過惡意構造的SQL查詢語句,成功在應用程序的數(shù)據(jù)庫中執(zhí)行任意操作,導致數(shù)據(jù)泄露、篡改或其他安全問題。 本篇技術博客將詳細介紹SQL注入漏洞的修復建議,包括過濾危險字符和使用預編譯語句,通過具體的代碼案例幫助

    2024年02月06日
    瀏覽(26)
  • 網(wǎng)絡安全B模塊(筆記詳解)- SQL注入

    網(wǎng)絡安全B模塊(筆記詳解)- SQL注入

    1.使用滲透機場景kali中工具掃描服務器場景,將apache的端口號和版本號作為Flag提交(格式:端口號_版本號) ?Flag:8081_7.5 2.使用滲透機場景windows7訪問服務器場景SQL網(wǎng)站,并將網(wǎng)站中概述頁面中的Flag提交; Flag:sql_is_good 3.使用滲透機場景windows7訪問服務器中的SQL網(wǎng)站中的數(shù)

    2024年01月20日
    瀏覽(48)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包