<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ariane djad </title>
    <description>The latest articles on DEV Community by ariane djad  (@djad04).</description>
    <link>https://dev.to/djad04</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3365331%2Fb598c561-3366-4011-9567-b73617126de1.png</url>
      <title>DEV Community: ariane djad </title>
      <link>https://dev.to/djad04</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/djad04"/>
    <language>en</language>
    <item>
      <title>PHP2Shell: From Source Code and Memory Analysis to a Working Exploit</title>
      <dc:creator>ariane djad </dc:creator>
      <pubDate>Sun, 08 Nov 2026 10:39:11 +0000</pubDate>
      <link>https://dev.to/djad04/php2shell-from-source-code-and-memory-analysis-to-a-working-exploit-5g1b</link>
      <guid>https://dev.to/djad04/php2shell-from-source-code-and-memory-analysis-to-a-working-exploit-5g1b</guid>
      <description>&lt;p&gt;When the PHP vulnerabilities were first announced, I spent a HUGE amount of time trying to figure out the logic behind them.&lt;/p&gt;

&lt;p&gt;As many others who tried investigating them probably noticed, there was barely any technical information available at the time. We had a few basic hints: something related to PHP_SESSION_UPLOAD_PROGRESS, some kind of Out of Memory condition, and, of course, that video Calif published showing a dancing girl with a shell running the exploit in the background. 😂&lt;/p&gt;

&lt;p&gt;I found that pretty funny, especially considering the scale of the vulnerabilities and how many servers around the world could potentially be affected. Anyway, that was pretty much all we had to work with!&lt;/p&gt;

&lt;p&gt;Even AI assistants weren't particularly helpful. At the time, they were heavily restricted when it came to this subject. A simple technical question about an internal PHP function could get flagged just because you mentioned PHP and something technical in the same sentence. For those of us without access to a more cybersecurity-focused model, even asking basic questions and using AI to help investigate things was practically impossible.&lt;/p&gt;

&lt;p&gt;So I started digging into the PHP codebase myself (I was honestly getting a little mentally insane by that point).&lt;/p&gt;

&lt;p&gt;I spent countless hours going through the source code, tracing functions, setting up experiments, debugging, and trying to understand exactly what was happening behind the scenes. There were long days and endless nights spent following one thing after another, trying to connect all the pieces until things finally started making sense.&lt;/p&gt;

&lt;p&gt;The more I investigated, the more I realized that I wanted to put everything together somewhere. Not just the final explanation, but the entire process: the PHP internals behind the vulnerabilities, what's happening in memory, why certain things happen the way they do, and how all of this eventually leads to a working exploit.&lt;/p&gt;

&lt;p&gt;That's how this research project started.&lt;/p&gt;

&lt;p&gt;I structured the write-up to start from the basics and gradually build up to the actual exploitation. Each part builds on what came before, with the explanations becoming progressively more technical until we get to the real thing. I wanted someone with little or no experience in low-level memory exploitation to be able to follow along and understand how all the pieces fit together.&lt;/p&gt;

&lt;p&gt;The write-up also goes through the actual exploit code used to solve the "Steal My Bitcoin" challenge, breaking it down step by step rather than simply showing the final result.&lt;/p&gt;

&lt;p&gt;Everything is based on my own research, local experiments, and understanding of the PHP engine. I'm not claiming this is an official analysis or that everything is necessarily correct. I'm still learning, and there might be mistakes or things I've misunderstood.&lt;/p&gt;

&lt;p&gt;And honestly, I was getting tired of explanations that only scratched the surface without actually showing what was happening internally. I wanted to do something different: a proper, in-depth technical walkthrough covering the entire process, examining the important details and explaining not just WHAT happens, but WHY and HOW it happens.&lt;/p&gt;

&lt;p&gt;You can read the full write-up here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://djad04.github.io/php2shell-deep-dive/" rel="noopener noreferrer"&gt;PHP2Shell: From Memory to C Internals to Real Exploit Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here's the GitHub repository, which also includes the project files and the backstory behind the research:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/djad04/php2shell-deep-dive" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt; &lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>exploit</category>
      <category>php</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Understanding Text-block Metrics in Qt framework</title>
      <dc:creator>ariane djad </dc:creator>
      <pubDate>Thu, 17 Jul 2025 23:00:16 +0000</pubDate>
      <link>https://dev.to/djad04/understanding-text-block-metrics-in-qt-framework-2el6</link>
      <guid>https://dev.to/djad04/understanding-text-block-metrics-in-qt-framework-2el6</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4rxhl180nikz34tu96ap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4rxhl180nikz34tu96ap.png" alt=" " width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Text‑Block Metrics in Qt
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Text Block
&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;QTextBlock&lt;/code&gt; represents one “paragraph” or line of text in a &lt;code&gt;QTextDocument&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  blockBoundingRect()
&lt;/h3&gt;

&lt;p&gt;Returns &lt;strong&gt;only the size&lt;/strong&gt; (width &amp;amp; height) of that block , &lt;strong&gt;no&lt;/strong&gt; positional information.&lt;/p&gt;

&lt;h3&gt;
  
  
  blockBoundingGeometry()
&lt;/h3&gt;

&lt;p&gt;Returns the block’s &lt;strong&gt;full rectangle&lt;/strong&gt; in the document’s coordinate system, giving both its size &lt;strong&gt;and&lt;/strong&gt; its original position in the unscrolled document.&lt;/p&gt;

&lt;h3&gt;
  
  
  contentOffset()
&lt;/h3&gt;

&lt;p&gt;Reports the current &lt;strong&gt;scroll translation&lt;/strong&gt; of the viewport (how far the content has shifted).&lt;/p&gt;

&lt;h3&gt;
  
  
  Geometry + Offset → On‑Screen Position
&lt;/h3&gt;

&lt;p&gt;By translating the block’s document‑coordinates rectangle by the content offset, you compute exactly &lt;strong&gt;where&lt;/strong&gt; that block appears in the &lt;strong&gt;visible&lt;/strong&gt; viewport—essential for drawing aligned overlays (e.g., line numbers, custom highlights).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The black rectangle in the diagram represents the &lt;em&gt;visible&lt;/em&gt; portion of the document. In reality, each &lt;code&gt;QTextBlock&lt;/code&gt; may have a different width depending on its content; we’ve simplified it to a single rectangle here for clarity.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>qt</category>
      <category>cpp</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
