Http Talep Paketlerinde Parametre Gönderim Yöntemleri

(+) Birebir denenmiştir ve başarıyla uygulanmıştır.

Gereksinimler

/var/www/formEncTypeTurleri/   // Ubuntu 18.04 LTS Ana Makina Web Dizini

Html <form alanları içerisinde yer alan girdi alanlarını (parametreleri) karşı sunucuya gönderirken <form alanı enctype attribute’una (özelliğine) konulacak üç farklı değerle <form alanındaki parametreleri üç farklı syntax’ta karşı sunucuya gönderebiliriz.

  • application/x-www-form-urlencoded (varsayılan)
  • multipart/form-data
  • text/plain

Html <form alanı enctype attribute’u (özelliği) totalde yukarıdaki üç yoldan birini alır ve <form alanında tanımlı girdiler http talep paketinde parametre ve değer olarak belirtilen yola göre bir yapıda (syntax’da) taşınır. Bu durumu gözlemlemek için şimdi sırasıyla 3 farklı dosyada html <form alanı oluşturalım ve üç farklı enctype attribute değerini koyarak form alanını submit ettiğimizde parametrelerin http talep paketinde nasıl gönderiliyor olduğuna bakalım.

i. application/x-www-form-urlencoded (varsayılan)

Html <form alanında enctype attribute’u belirtilmediğinde (veya enctype attribute’u değeri olarak application/x-www-form-urlencoded değeri belirtildiğinde) form alanının girdileri karşıya & ile ardarda gönderilirler. Örneğin;

HTML / PHP:

/var/www/formEncTypeTurleri/formAlani1.php:

<form action="formAlani1.php" method="POST" enctype="application/x-www-form-urlencoded">
        <input type="text" name="param1">
        <input type="text" name="param2">
        <input type="submit" value="Gonder"/>
</form>

Form alanı submit’lendiğinde şu http talep paketi karşıya gider.

Http Request:

POST /formEncTypeTurleri/formAlani1.php HTTP/1.1
Host: 172.16.4.225
Content-Length: 32
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://172.16.4.225
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;
q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,
application/signed-exchange;v=b3;q=0.9
Referer: http://172.16.4.225/formEncTypeTurleri/formAlani1.php
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,tr;q=0.8
Connection: close

param1=fatih123&param2=deneme123

Görüldüğü gibi html <form alanı enctype özelliği enctype="application/x-www-form-urlencoded" şeklinde olduğu için gönderilen http talep paketi Content-Type’ı application/x-www-form-urlencoded olmuştur ve bu nedenle gönderilen http talep paketi içerisindeki parametreler param1=value&param2=value şeklinde ardarda & (ampersand) ile gönderilmişlerdir.

ii. multipart/form-data

Html <form alanında normal girdiler dışında “dosya girdisi” yer aldığı zaman bu türden girdinin application/x-www-form-urlencoded ile gönderimi yetersiz kalır. Çünkü bu girdiler büyük nicelikte binary veri veya ASCII olmayan karakter içeren veri gönderimi yapar. Bu durumda html <form alanında enctype özelliğine multipart/form-data değeri koyulur. Bu şekilde html <form alanında dosya içeren, yani ASCII olmayan veri içeren veya binary veri içeren girdilere sahip girdilerin submit’lenmesi mümkün hale gelir. Bu durumda html <form alanındaki girdilerin gönderiminde parametre ve değerler & yerine daha geniş ebatlı parametre değerlerini alabilen bloklar halinde alt alta gönderilirler. Örneğin;

HTML / PHP:

/var/www/formEncTypeTurleri/formAlani2.php:

<form action="formAlani2.php" method="POST" enctype="multipart/form-data">
        <input type="text" name="param1">
        <input type="text" name="param2">
        <input type="file" name="param3">
        <input type="submit" value="Gonder"/>
</form>

Form alanı submit’lendiğinde şu http talep paketi karşıya gider:

Http Request:

POST /formEncTypeTurleri/formAlani2.php HTTP/1.1
Host: 172.16.4.225
Content-Length: 23435
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://172.16.4.225
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarys89aFVifbfEYaKAp
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/
avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;
q=0.9
Referer: http://172.16.4.225/formEncTypeTurleri/formAlani2.php
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,tr;q=0.8
Connection: close

------WebKitFormBoundarys89aFVifbfEYaKAp
Content-Disposition: form-data; name="param1" // Parametre Adı (*)

fatih123				      // Parametre Değeri
------WebKitFormBoundarys89aFVifbfEYaKAp
Content-Disposition: form-data; name="param2" // Parametre Adı (*)

deneme123				      // Parametre Değeri
------WebKitFormBoundarys89aFVifbfEYaKAp
Content-Disposition: form-data; name="param3"; filename="icon.png" // Parametre Adı(*)
Content-Type: image/png
					      //Parametre Değeri
\89PNG#\00\00\00IHDR\00\00#\00\00\00#\00##\00\00\00\r\A8f\00
\00\00pHYs\00\00##\00\00###\00\9A\9C#\00\00BAiTXtXML:com.adobe.
xmp\00\00\00\00\00<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/"x:xmptk="Adobe XMP Core 5.6-c014 
79.156797, 2014/08/20-09:53:02">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:xmp="http://ns.adobe.com/xap/1.0/"
            xmlns:dc="http://purl.org/dc/elements/1.1/"
            xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
            xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
            xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
            xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
            xmlns:exif="http://ns.adobe.com/exif/1.0/">
         <xmp:CreateDate>2015-11-21T10:16:55Z</xmp:CreateDate>
         <xmp:ModifyDate>2015-11-21T17:33:16+05:30</xmp:ModifyDate>
         <xmp:MetadataDate>2015-11-21T17:33:16+05:30</xmp:MetadataDate>
         <xmp:CreatorTool>Adobe Photoshop CC 2014 (Macintosh)</xmp:CreatorTool>
         <dc:format>image/png</dc:format>
         <xmpMM:History>
            <rdf:Seq>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>converted</stEvt:action>
                  <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
              	<stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:33380B0C1F20681183D198339A97386A</stEvt:instanceID>
                  <stEvt:when>2015-11-21T16:00:27+05:30</stEvt:when>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>converted</stEvt:action>
                  <stEvt:parameters>from image/png to application/vnd.adobe.photoshop</stEvt:parameters>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:34380B0C1F20681183D198339A97386A</stEvt:instanceID>
                  <stEvt:when>2015-11-21T16:00:27+05:30</stEvt:when>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
	                  <stEvt:instanceID>xmp.iid:5e3a38f5-78a2-45c3-aada-2da2597e41a3</stEvt:instanceID>
                  <stEvt:when>2015-11-21T17:33:16+05:30</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>converted</stEvt:action>
                  <stEvt:parameters>from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>derived</stEvt:action>
                  <stEvt:parameters>converted from application/vnd.adobe.photoshop to image/png</stEvt:parameters>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:f1945919-5f0f-47f0-ad3e-e894540d7ca1</stEvt:instanceID>
                  <stEvt:when>2015-11-21T17:33:16+05:30</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CC 2014 (Macintosh)</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
            </rdf:Seq>
         </xmpMM:History>
         <xmpMM:DerivedFrom rdf:parseType="Resource">
            <stRef:instanceID>xmp.iid:5e3a38f5-78a2-45c3-aada-2da2597e41a3</stRef:instanceID>
            <stRef:documentID>xmp.did:33380B0C1F20681183D198339A97386A</stRef:documentID>
            <stRef:originalDocumentID>xmp.did:33380B0C1F20681183D198339A97386A</stRef:originalDocumentID>
         </xmpMM:DerivedFrom>
         <xmpMM:DocumentID>adobe:docid:photoshop:45ed2120-d0d6-1178-9554-c050520b6f31</xmpMM:DocumentID>
         <xmpMM:InstanceID>xmp.iid:f1945919-5f0f-47f0-ad3e-e894540d7ca1</xmpMM:InstanceID>
         <xmpMM:OriginalDocumentID>xmp.did:33380B0C1F20681183D198339A97386A</xmpMM:OriginalDocumentID>
         <photoshop:ColorMode>3</photoshop:ColorMode>
         <tiff:Orientation>1</tiff:Orientation>
         <tiff:XResolution>720000/10000</tiff:XResolution>
         <tiff:YResolution>720000/10000</tiff:YResolution>
         <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
         <exif:ColorSpace>65535</exif:ColorSpace>
         <exif:PixelXDimension>256</exif:PixelXDimension>
         <exif:PixelYDimension>256</exif:PixelYDimension>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
!D1:000000
cHRM0000z%000080830000F9FF000080E90000u00000EA`0000:980000 o92_C5F0000
BIDATxDAEC9DytUE5B9C6E7E484̆ F"H80F900( Zł`ADAD8B5 8A0A2 DB{97CAFuACB3u
hqhK/AED5ZZKD1 A2E2]VA1B5*T+*X81@E e 88"98908193E4DC?F6 ͊9C3>E7|{EFE7B7D
6^ 89g9FE7{DFgF3 qUE1iF281 E6EA F4 6WCF6W>P DCCCF EDާ h 9A81ZF3F3NE0F
36W8DF9s B0 F8ȼNx9488$F0 C0`A0 j92BDBFB9 uF13F699BY BFF7A91838DC0 A0D
Ak8DA9 80H80"`4p,0 r,BDDFCCDu|BBo D6 EF ˁA5C0BBC0 B1=84D4
C8:E5C08`ACB986FAؘ9B81D5C0EBE6zCD4'84 0 E381o99khC0F5A8 ^ FE , EA
"200BF....................böyle devam ediyor......
------WebKitFormBoundarys89aFVifbfEYaKAp--

Yani parametreler Content-Disposition başlığı blokları halinde alt alta şekilde gönderilmişlerdir. Aşağıda binary verinin özet haline taşındığı daha öz bir http talep paketi görüntüsü yer almaktadır.

POST /formEncTypeTurleri/formAlani2.php HTTP/1.1
Host: 172.16.4.225
Content-Length: 23435
...
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarys89aFVifbfEYaKAp
...

------WebKitFormBoundarys89aFVifbfEYaKAp
Content-Disposition: form-data; name="param1"

fatih123
------WebKitFormBoundarys89aFVifbfEYaKAp
Content-Disposition: form-data; name="param2"

deneme123
------WebKitFormBoundarys89aFVifbfEYaKAp
Content-Disposition: form-data; name="param3"; filename="icon.png"
Content-Type: image/png

((( Resim Binary Verisi )))
------WebKitFormBoundarys89aFVifbfEYaKAp

Yukarıdaki parametre gönderim yapısına bakılacak olursa parametre isimleri Content-Disposition başlığında yer almaktadır ve parametre değerleri blokların içerisinde yer almaktadır.

Görüldüğü gibi html <form alanı enctype özelliği enctype="multipart/form-data" şeklinde olduğu için gönderilen http talep paketi Content-Type’ı multipart/form-data olmuştur ve bu nedenle gönderilen http talep paketi içerisindeki parametreler Content-Disposition başlığı halinde sıralı alt alta bloklar halinde gönderilmişlerdir.

Sonuç olarak parametre ve değerler multipart/form-data Content-Type’ında önceki & (ampersand) ‘lı gönderime nazaran farklı bir syntax’la gönderilmişlerdir. Ancak farklı sytanx’da gönderilseler de sonuçta gönderilen şey parametre ve değerdir. Yani aynı şey karşıya gitmektedir. Fark mutlipart/form-data’da parametre değerleri büyük veri taşıyabileceğinden bloklar halinde verileri taşıma syntax’ına sahiptir. Yani sadece syntax’lar farklıdır.

iii. text/plain

Html <form alanında girdiler gönderilirken gönderilen parametreleri debugging amaçlı kontrol etmek gerekebilir. Bu gibi durumlarda html <form alanının encType özelliğine text/plain konulur. Bu şekilde html <form alanının gönderdiği parametreler her biri ayrı satırda yer alacak şekilde alt alta gönderilirler. Örneğin;

HTML / PHP:

/var/www/formEncTypeTurleri/formAlani3.php:

<form action="formAlani3.php" method="POST" enctype="text/plain">
        <input type="text" name="param1">
        <input type="text" name="param2">
        <input type="submit" value="Gonder"/>
</form>

Form alanı submit’lendiğinde şu http talep paketi karşıya gider:

Http Request:

POST /formEncTypeTurleri/formAlani3.php HTTP/1.1
Host: 172.16.4.225
Content-Length: 35
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://172.16.4.225
Content-Type: text/plain
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,
image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-
exchange;v=b3;q=0.9
Referer: http://172.16.4.225/formEncTypeTurleri/formAlani3.php
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,tr;q=0.8
Connection: close

param1=fatih123
param2=deneme123

Görüldüğü gibi html <form alanı enctype özelliği enctype="text/plain" şeklinde olduğu için gönderilen http talep paketi Content-Type’ı text/plain olmuştur ve bu nedenle gönderilen http talep paketi içerisindeki parametreler

param1=value
param2=value

şeklinde alt alta ayrı satırlar halinde gönderilmişlerdir.

Örneğin html <form’unda dosya girdisi de yer aldığında ve enctype’ı text/plain yapıldığında gönderilen parametreler yine her biri ayrı satırda yer alacak şekilde alt alta gönderilir.

HTML / PHP:

/var/www/formEncTypeTurleri/formAlani4.php:

<form action="formAlani4.php" method="POST" enctype="text/plain">
	<input type="text" name="param1">
	<input type="text" name="param2">
	<input type="file" name="param3">
	<input type="submit" value="Gonder"/>
</form>


Form alanı submit’lendiğinde şu http talep paketi karşıya gider:

Http Request:

POST /formEncTypeTurleri/formAlani4.php HTTP/1.1
Host: 172.16.4.225
Content-Length: 83
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://172.16.4.225
Content-Type: text/plain
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,
image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://172.16.4.225/formEncTypeTurleri/formAlani4.php
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,tr;q=0.8
Connection: close

param1=fatih123
param2=deneme123
param3=Screenshot from 2022-04-18 15-36-19.png


Görüldüğü gibi html <form alanı enctype özelliği enctype="text/plain" şeklinde olduğu için gönderilen http talep paketi Content-Type’ı text/plain olmuştur ve bu nedenle gönderilen http talep paketi içerisindeki tüm parametreler

param1=value
param2=value
param3=value

şeklinde alt alta ayrı satırlar halinde gönderilmişlerdir.

Not:

Html <form alanında dosya girdisi gönderilirken debugging amaçlı encType’ı text/plain olduğunda dosya parametresinde gönderilen dosyanın içerisindeki veri yerine gönderilen dosyanın adı gönderilir.

Yararlanılan Kaynaklar

  • https://www.m5bilisim.com/webokulu/etiketler/ozellik-form-enctype.php
  • https://yazilimcorbasi.blogspot.com/2015/11/http-post-ve-multipartform-data.html
  • https://stackoverflow.com/questions/38017123/is-form-enctype-application-json-available
  • https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-enctype
  • Paketleme İçin Gözden Geçirilecekler / WAP SAST Tool Nedir.docx
  • https://github.com/sqlmapproject/sqlmap/issues/4069
  • https://www.liquidmatrix.org/blog/sql-injection-using-sqlmap-multipartform-data-encoding/
Bu yazı 04.10.2024 tarihinde, saat 05:10:21'de yazılmıştır. 04.10.2024 tarihi ve 02:47:59 saatinde ise güncellenmiştir.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 56
Yorumlar
Henüz yorum girilmemiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :