CTF網絡安全大賽web題目:just_sqli

這道題目是bugku的web題目
題目的 描  述: KosenCTF{}

原文鏈接: CTF網絡安全大賽web題目:just_sqli - 紅客網-網絡安全與滲透技術

題目Web源代碼:

<?php$user = NULL;
$is_admin = 0;if (isset($_GET["source"])) {highlight_file(__FILE__);exit;
}if (isset($_POST["username"]) && isset($_POST["password"])) {$username = $_POST["username"];$password = $_POST["password"];$db = new PDO("sqlite:../database.db");$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);try {$db->exec("CREATE TABLE IF NOT EXISTS users (username TEXT UNIQUE, password TEXT, is_admin BOOL);");$q = "username, is_admin FROM users WHERE username = '$username' AND password = '$password'";if (preg_match("/SELECT/i", $q)) {throw new Exception("only select is a forbidden word");}$rows = $db->query("SELECT " . $q, PDO::FETCH_ASSOC);foreach ($rows as $row) {$user = $row["username"];$is_admin = $row["is_admin"];}}catch (Exception $e) {exit("EXCEPTION!");}}?><!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Just SQLi</title>
</head>
<body><h1>Just SQLi</h1>    <div><a href="?source=1">view source</a><?php if ($user) { ?><div>Nice Login <?= $user ?></div><?php if ($is_admin) { ?><div>And Nice to Get the Admin Permission!</div><div> <?= include("../flag.php"); ?></div><?php } ?><?php } ?><form action="" method="POST"><div>username: <input type="text" name="username" required></div><div>password: <input type="text" name="password" required></div><div><input type="submit" value="Login"></div></form></body>
</html>

從給定的PHP代碼中,有幾個關鍵的安全問題可以被利用來進行SQL注入。但首先,需要注意的是代碼中嘗試使用preg_match來防止"SELECT"關鍵詞的使用,然而這種嘗試是無效的,因為它并沒有在構造完整的SQL查詢時應用此檢查。

下面是一個可能的SQL注入攻擊步驟,來繞過身份驗證并獲取管理員權限:

?原文鏈接: CTF網絡安全大賽web題目:just_sqli - 紅客網-網絡安全與滲透技術

  1. 用戶名注入:由于用戶名和密碼直接插入到SQL查詢中,我們可以嘗試在用戶名字段中注入SQL代碼。但是,由于preg_match檢查,我們不能直接包含"SELECT"。但我們可以嘗試其他方法,如注釋掉原查詢的剩余部分。
  2. 構造注入語句:在用戶名字段中,我們可以嘗試使用SQL注釋(-- 在SQLite中是有效的)來截斷原始查詢的其余部分,并附加我們自己的查詢條件。由于代碼嘗試直接構造一個片段并添加到SELECT查詢中,我們可以利用這一點。
  3. 繞過preg_match:由于preg_match只檢查$q變量(這只是一個片段,不是完整的SQL查詢),我們可以構造一個不包含"SELECT"的片段,但在實際執行時,它將成為完整的SELECT查詢的一部分。

下面是一個可能的注入攻擊示例(請注意,這只是一個示例,實際情況可能有所不同):

在用戶名字段中輸入:

' OR '1'='1' --

在密碼字段中輸入任意值(例如"password123")。

提交表單后,生成的SQL查詢將是:

SELECT username, is_admin FROM users WHERE username = '' OR '1'='1' --' AND password = 'password123'

由于--是SQL注釋,所以查詢的剩余部分(包括密碼驗證部分)將被忽略。這樣,查詢將返回表中的所有用戶,無論他們的密碼是什么。

然而,為了獲取管理員權限,我們可能還需要進一步利用其他漏洞或嘗試其他注入方法,因為此查詢僅返回用戶名和is_admin字段,而不直接修改它們。

但請注意,這種攻擊是違法的,并且只應在法律允許和道德接受的環境(如安全培訓或測試環境)中進行。在實際環境中嘗試此類攻擊可能導致法律責任和其他后果。

?原文鏈接: CTF網絡安全大賽web題目:just_sqli - 紅客網-網絡安全與滲透技術

我們開始對這個題目進行sql注入吧
一開始我們先盲注,構造查詢語句

admin'or 1=1 -- 

發現行不通
接著我們開始聯合查詢

admin'union select 1,2#

發現還是不行
看了下代碼, preg_match("/SELECT/i", $q這個對select進行了處理。
接著我們開始下一個方法就是用values進行替換select就行了

admin'union values('password',1) -- 

屏幕截圖 2024-05-15 135422.png


也是成功拿到答案

紅客網(blog.hongkewang.cn)

?原文鏈接:

CTF網絡安全大賽web題目:just_sqli - 紅客網-網絡安全與滲透技術

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

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

相關文章

齊護K210系列教程(二十七)_語音識別

語音識別 1.燒錄固件和模型2.語音識別程序2.1訓練并識別2.2使用本地文件語音識別 3.課程資源聯系我們 1.燒錄固件和模型 注&#xff1a;本應用只適用于有麥克風功能的型號&#xff1a;AIstart_pro、AIstart_掌機、AIstart_Mini, 其它型號不支持&#xff01; 機器碼生成以及模…

linux中遠程服務器上傳輸文件的10個sftp命令示例

目錄 1. 如何連接到 SFTP 2. 幫助 3.檢查當前工作目錄 4. 使用 sftp 列出文件 遠程 本地 5. 使用 sftp 上傳文件 6. 使用 sftp 上傳多個文件 7. 使用 sftp 下載文件 8. 在 sftp 中切換目錄 遠程 本地 9. 使用 sftp 創建目錄 10. 使用 sftp 刪除目錄 11. 退出 sf…

(001)apidoc 的安裝

安裝 1.確定 node 和 npm 的匹配版本 node -vv10.14.1# 切換node 版本 nvm list nvm use 20.12.22.安裝 apidoc。 npm install -g apidoc3.生成文檔&#xff1a; apidoc -i ../ -o document/ -f ".java$"-i &#xff1a;指定掃描路徑。-o&#xff1a;輸出目錄。…

golang并發(同步)多任務高性能執行聚合

taskgroup golang并發執行多任務&#xff0c;并聚合多任務結果。 使用文檔、 項目github 使用: go get github.com/mlee-msl/taskgroup 功能特點 并發安全的執行多個任務將多個任務的結果進行聚合通過扇出/扇入模式&#xff0c;結合線程安全channel實現高效協程間通信多任務復…

【Linux:環境變量】

環境變量一般是指在操作系統中用來指定操作系統環境的一些參數 常見的環境變量&#xff1a; PATH 指定可執行程序的搜索路徑 系統級的文件&#xff1a;/etc/bashrc 用戶級文件&#xff1a;~/.bashrc ~/.bash_profile HOME 指定用戶的主要工作目錄&#xff08;當前用…

kettle從入門到精通 第六十一課 ETL之kettle 任務調度器,輕松使用xxl-job調用kettle中的job和trans

想真正學習或者提升自己的ETL領域知識的朋友歡迎進群&#xff0c;一起學習&#xff0c;共同進步。若二維碼失效&#xff0c;公眾號后臺加我微信入群&#xff0c;備注kettle。 1、大家都知道kettle設計的job流程文件有個缺點&#xff1a;只能設置簡單的定時任務&#xff0c;無法…

DPDK:用rte_wmb()來保序,對ARM和IA而言,RTE_WMB()的實現有何不同

rte_wmb()函數在DPDK中用于實現寫入屏障&#xff08;Write Memory Barrier&#xff09;&#xff0c;它的作用是確保在CPU執行寫操作之前&#xff0c;所有先前的寫操作已經被完全刷新到內存中。這個函數在IA和ARM處理器上的實現有一些不同。 對于Intel Architecture (IA)處理器而…

PHP黑魔法之既是0又是1/switch/$a==0可用.繞過(非數字都可繞過)/PHP://偽協議繞過

1、既是0又是1的情況 $a==1 & $test[$a]=t 時 知識點1)php在處理數字時,如果數字的位數超過 16 位是可以弱等于1的,也就是 var_dump( 9999999999999999999 == 1 );//true 因為當數字位數超過 16 位時,是將該數字轉換成了數值為 1 的字符串進行處理 知識點2)在科學…

LabVIEW和usrp連接實現ofdm通信系統 如何實現

1. 硬件準備 USRP設備&#xff1a;選擇合適的USRP硬件&#xff08;如USRP B210或N210&#xff09;&#xff0c;并確保其與計算機連接&#xff08;通常通過USB或以太網&#xff09;。天線&#xff1a;根據頻段需求選擇合適的天線。 2. 軟件安裝 LabVIEW&#xff1a;安裝LabVI…

【Golang】 Golang 的 GORM 庫中的 Rows 函數

文章目錄 前言一、Rows 函數解釋二、代碼實現三、總結 前言 在使用 Go 語言進行數據庫操作時&#xff0c;GORM&#xff08;Go Object-Relational Mapping&#xff09;庫是一個常用的工具。它提供了一種簡潔和強大的方式來處理數據庫操作。本文將介紹 GORM 庫中的 Rows 函數&am…

數據庫-索引(高級篇)

文章目錄 索引概念&#xff1f;索引演示&#xff1f;索引的優劣&#xff1f;為什么使用索引就快&#xff1f;本篇小結 更多相關內容可查看 索引概念&#xff1f; 索引&#xff08;index&#xff09;是幫助MySQL高效獲取數據的數據結構(有序)。在數據之外&#xff0c;數據庫系統…

生成完美口型同步的 AI 數字人視頻

目錄 摘要 關鍵詞 1 前言 1.1 研究背景 1.2 研究意義 2 技術框架 2.1 深度學習框架 2.2 語音識別 2.3 面部動作捕捉和口型同步 2.4 綜合項目 3 實現過程 3.1 環境搭建 3.2 代碼開發 3.3 整合代碼 3.4 部署 3.5 更多細節 4 測試過程 4.1 數據準備 4.2 面部檢測…

語法分析-文法

如果對于一部文法中&#xff0c;存在至少一個句子有兩個或者兩個以上的語法樹則該文法是二義性的。 我們可以以上面的例子進行解釋&#xff0c;對于第棵個語法樹&#xff0c;我們可以看到是先進行了加法運算再進行的乘法運算&#xff0c;因為需要先把EE作為整體運算完后再成為E…

上海亞商投顧:滬指低開低走 兩市成交額跌破8000億

上海亞商投顧前言&#xff1a;無懼大盤漲跌&#xff0c;解密龍虎榜資金&#xff0c;跟蹤一線游資和機構資金動向&#xff0c;識別短期熱點和強勢個股。 一.市場情緒 市場全天震蕩走低&#xff0c;三大股指尾盤均跌近1%。地產股逆勢走強&#xff0c;光大嘉寶、天地源、云南城投…

幻獸帕魯Palworld服務器手動+docker部署方法+備份遷移

目錄 帕魯部署官方文檔帕魯手動安裝法手動安裝steamcmd通過steamcmd安裝帕魯后端 docker容器一鍵部署幻獸帕魯綠聯云NAS機器部署幻獸帕魯客戶端連接附錄1&#xff1a;PalServer.sh的啟動項附錄2&#xff1a;配置文件游戲存檔保存和遷移 關于阿里云計算巢 帕魯部署官方文檔 htt…

學習MySQL(五):窗口函數

窗口函數介紹 窗口函數的引入是為了解決想要既顯示聚集前的數據&#xff0c;又要顯示聚集后的數據&#xff1b;窗口數對一組值進行操作&#xff0c;不需要使用GROUP BY子句對數據進行分組&#xff0c;能夠在同一行中同時返回基礎行的列和聚合列。 強調&#xff1a;使用MySQL …

?學者觀察 | 從區塊鏈應用創新看長安鏈發展——CCF區塊鏈專委會榮譽主任斯雪明

導語 2024年1月27日&#xff0c;斯雪明教授在長安鏈發布三周年慶暨生態年會上發表演講&#xff0c;認為在區塊鏈發展過程中&#xff0c;不僅需要技術創新&#xff0c;同時需要有價值、有特色、有示范意義的應用創新。斯雪明教授介紹了國內區塊鏈技術與應用發展的現狀、趨勢與挑…

【數據結構】排序(直接插入排序,希爾排序)

目錄 一、排序的概念 二、常見的排序算法 三、插入排序 1.直接插入排序 1.直接插入排序實現 2.直接插入排序特性及復雜度 2.希爾排序 1.排序思路 2.希爾排序實現 3.希爾排序的特性及復雜度 一、排序的概念 排序&#xff1a;所謂排序&#xff0c;就是使一串記錄&#x…

python手寫數字識別(PaddlePaddle框架、MNIST數據集)

python手寫數字識別&#xff08;PaddlePaddle框架、MNIST數據集&#xff09; import paddle import paddle.nn.functional as F from paddle.vision.transforms import Compose, Normalizetransform Compose([Normalize(mean[127.5],std[127.5],data_formatCHW)]) # 使用tran…

[Java基礎揉碎]多線程基礎

多線程基礎 什么是程序, 進程 什么是線程 什么是單線程,多線程 并發, 并行的概念 單核cpu來回切換, 造成貌似同時執行多個任務, 就是并發; 在我們的電腦中可能同時存在并發和并行; 怎么查看自己電腦的cpu有幾核 1.資源監視器查看 2.此電腦圖標右鍵管理- 設備管理器- 處理器…