SQLI・ラボ(32)

0x1のソースを表示

(1)キーコード

    もちろん、コードは3つのシンボルのうち、フィルタリングされた[「」、/]正規と一致します 

preg_replace

 0x2のワイド文字注入

(1)はじめに

  MySQLでは、関数は状況magic_quote_gpcがある、などをmysql_escape_string、mysql_real_escape_stringのをにaddslashesをエスケープするために使用されているが、より高いPHPのバージョンは、この機能を削除します、射出バイト幅のHTMLページのコードは無関係です。

(2)の概念を

  文字、文字セットと文字列

   文字(文字)の文字セット(文字セット)で構成される基本単位です。文字セット内の文字の位置を決定する文字の数(符号化)を割り当てます。

  UTF8

  ASCII文字が表されているためだけで128、したがって、オンラインの世界は、UNICODEコーディングを使用することで調整するが、ASCII表現でUNICODE文字を使用することは効率的ではありません。このように、中間キャラクタ・セット形式があった、ユニバーサルフォーマット変換と呼ばれています。

  バイト幅

  GB2312、GBK、GB18030、BIG5は、このようなシフトJISは、多くの場合、実際には、バイトが広いだけで2バイトを言われています。バイト幅の潜在的な安全性の問題は、ASCII文字(1バイト)現象を食べています。

(3)注意点

      一般的に言えば、文字エンコーディングのGBKは、2つのバイトを占有します。UTF-8でエンコードされた文字は、3つのバイトを占めます。PHPで、我々ができる出力エコーSTRLEN( "中"); 2 GBKページ入力を符号化するとき入力3 UTF-8。

(4)原理

  MySQLのGBKエンコーディングを使用する場合、我々は、2つの漢字を考慮し、例えば%のAAの%5cは、文字(より大きい128文字の範囲に前ASCIIコード)です。私たちは、フィルタリングコンバート\ '「彼らはしばしばアイデアがあるに使います」 。

 0x3の実用的なアイデア

(1)思考:

  でurlencode(\「)=%5Cの27%は、我々が追加特にので、単一引用符ので、濾過し、私たちは%DF \食べる使用される以前%DF%5C%27、%DF%5C%27に形成され、また、私たちに会っている間とMySQL上記のようにして、2バイト文字を符号化する際に、問題%DF%5cは外側に単一の記号として漢字、27%であるGBKます目的。

(2)2つのアイデア

  濾過\で\」は、例えば、ここ%**%5C%5C%27設定することができ、後者は、コメントに先行%5C%5Cのであろう。これはまた、迂回する方法です。

注射の0x4の実用的な操作

0X01閉じた構成

「私の日コメントアウトされることがわかっ入会

Baiduはあなたがバイパス教えます

 php会针对URL编码进行decode

decode后,url参数为 ?id=10 0xD60×20 AND 0×20 1=2 0×23

magic_quotes_gpc处理时会自动转义,即在‘前面加一个\

处理后url参数变成: ?id=10 0xD6 0x5c0×20 AND 0×20 1=2 0×23

可以看到,在‘前面PHP会自动加一个0x5c(注:0x5c为\),也就是会自动转义成\’

由于汉字是双字节的,所以0xD6 0x5c被转为謀这个汉字,’之前的\就这样消失了

最后的%23为#,在sql中#是注释,所以后面的’就没用了

最终sql中projectid = ’10謀’在sql执行的时候,由于projectid为int类型字段,mysql会自动intval()处理一下 详情见这里
?id=-1%df%27%20%20union%20select%201,database(),3%23

第二种思路

思路二没有试验成功

 

 

切 记 学习之路 少就是多 慢就是快

 

おすすめ

転載: www.cnblogs.com/-zhong/p/10952990.html
おすすめ