|
Autor |
Nachricht |
boris
Beiträge: 11154
|
Titel: Snippet: Knuffel-Fix gegen Hacking attempts
Verfasst am: Mo, 29 Okt 2007, 21:52 |
|
|
Bei Knuffel kann man extrem einfach bescheißen: einfach im Quelltext die Werte für "id" und "check" nachkucken, sich dann eine "score" ausdenken und ratzfatz führt man die Rangliste an.
knuffel.php?id=173&score=206&check=716665
Hier die Abhilfe:
- beim Abschicken des Ergebnisses wird zunächst per AJAX eine Datei aufgerufen, die in der Datenbank die tatsächlich erreichten Punkte hinterlegt - allerdings nur, wenn die aufrufende Datei auch die knuffel.php ist (sonst könnte man ja einfach vor dem Hacken einfach die Speicher-Datei aufrufen und hätte dasselbe Ergebnis)
- beim tatsächlichen Speichern der Punktzahl wird verglichen, ob die übergebende Punktzahl mit der vorher gespeicherten übereinstimmt - wenn nicht: hacking attempt !
Zunächst die Tabelle erweitern:
Code: |
ALTER TABLE `phpbb_knuffel` ADD `prescore` SMALLINT( 3 ) NOT NULL AFTER `name`; |
Und jetzt die Änderungen in den Dateien:
Code: |
#
#-----[ OPEN ]------------------------------------------
#
knuffel.php
#
#-----[ FIND ]------------------------------------------
#
if ( $row['checker'] != $submitcheck ) {
die("Hacking attempt");
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
if ( $row['prescore'] != $submitscore ) {
die("Hacking attempt");
}
#
#-----[ OPEN ]------------------------------------------
#
knuffel/script/d6.js
#
#-----[ FIND ]------------------------------------------
#
function Submit() {
var url;
if (sum <= 0) {
url = 'knuffel.php';
}
else {
url = 'knuffel.php?id='+id+'&score='+sum+'&check='+control;
}
top.location = url;
}
#
#-----[ REPLACE WITH ]------------------------------------------
#
var http = createRequestObject();
function Submit() {
if (sum > 0) {
http.open('get', 'knuffel/save.php?id='+id+'&score='+sum);
http.onreadystatechange = handleResponse;
http.send(null);
}
}
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}
function handleResponse() {
if(http.readyState == 4){
top.location = 'knuffel.php?id='+id+'&score='+sum+'&check='+control;
}
}
#
#-----[ CREATE FILE ]------------------------------------------
#
# Dateiname: knuffel/save.php
<?
$str_knuffel = "[DEINFPADZUR]knuffel.php"; // PFAD ANPASSEN !!
if ((!empty($_REQUEST['id'])) && (!empty($_REQUEST['score'])))
{
// phpBB
define('IN_PHPBB', 1);
$phpbb_root_path = "../";
require($phpbb_root_path.'extension.inc');
include($phpbb_root_path.'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_KNUFFEL);
init_userprefs($userdata);
if ($userdata['user_id'] == $_REQUEST['id'])
{
if ( $_SERVER['HTTP_REFERER'] == $str_knuffel )
{
$prequery = "UPDATE " . KNUFFEL_TABLE . " SET prescore = '" . $_REQUEST['score'] . "' WHERE user = '" . $_REQUEST['id'] . "'";
}
else
{
$prequery = "UPDATE " . KNUFFEL_TABLE . " SET prescore = 0 WHERE user = '" . $_REQUEST['id'] . "'";
}
$result = $db->sql_query($prequery);
}
}
?> |
Bei mir läufts damit - bisher keine Idee, wie man noch hacken könnte.
____________ beehave - home of humbug ... [we can't afford to be neutral]
|
|
Nach oben |
|
svenfranzisko
Beiträge: 777
|
Titel: (Kein Titel)
Verfasst am: Di, 30 Okt 2007, 12:27 |
|
|
Danke!
Haste dem Entwickler schon bescheid gesagt?
____________ Wer andern eine Bratwurst brät, hat ein Bratwurstbratgerät
http://spackonauten.de
|
|
Nach oben |
|
boris
Beiträge: 11154
|
Titel: (Kein Titel)
Verfasst am: Di, 30 Okt 2007, 12:28 |
|
|
svenfranzisko @ Di, 30 Okt 2007, 12:27 gab folgendes von sich: |
Haste dem Entwickler schon bescheid gesagt? |
Nope, mach ich mal eben ...
____________ beehave - home of humbug ... [we can't afford to be neutral]
|
|
Nach oben |
|
boris
Beiträge: 11154
|
Titel: (Kein Titel)
Verfasst am: Do, 01 Nov 2007, 21:04 |
|
|
Hier die Antwort:
Zitat: |
Hi,
danke für die Mail, das "Problem" ist mir seit Anfang klar...
Ich habe diesen rudimentären Sicherheitscheck nur eingebaut, um es dem Standard-User, der noch nicht mal weiss, was Quelltext ist, das cheaten zu erschweren.
Deine Snipplets beziehen sich auf Knuffel 1, was ich immer nur als "1. Versuch" betrachtet habe...
Inzwischen gibt es Knuffel v2, wo ich das Problem des Cheatens etwas anders angehe. Da es aber beim Beta-Test bei 1 von 100 Usern noch Probleme gab, ist dort bislang noch der alte Code integriert, inzwischen bin ich aber dazu gekommen, es nochmal zu überarbeiten und im nächsten oder übernächsten Update wird die neue Cheat-Protection enthalten sein (läuft dann über Session-Variablen).
Trotzdem Danke!
Gruss
Mike |
Neue Version ziehe ich mir gleich und passe die dann hier ein.
____________ beehave - home of humbug ... [we can't afford to be neutral]
|
|
Nach oben |
|
|
|
ähnliche Beiträge |
|
Thema
| Autor
| Forum
| Antworten
| Verfasst am
|
|
Aischylos - Sieben gegen Theben |
boris |
kühnes mittelscharfer |
0 |
Do, 23 März 2023, 08:47 |
|
Film: Gegen den Strom |
boris |
zelluloid |
0 |
Di, 10 Jan 2023, 17:02 |
|
Joris-Karl Huysmans - Gegen den Strich |
boris |
kühnes mittelscharfer |
0 |
So, 17 Jul 2022, 10:24 |
|
John Updike - Gegen Ende der Zeit |
boris |
kühnes mittelscharfer |
0 |
Mi, 04 Okt 2017, 21:56 |
|
Knuffel Statistik Mai 2017 |
Pfeife |
laufmasche |
0 |
Mi, 31 Mai 2017, 23:00 |
Schreiben: nein. Antworten: nein. Bearbeiten: nein. Löschen: nein. Umfragen: nein.
|