diff --git a/Stack.drawio b/Stack.drawio new file mode 100644 index 0000000..8f86748 --- /dev/null +++ b/Stack.drawio @@ -0,0 +1 @@ +7Vhfb9owHPw0PG5K7JCEx0LLpqmTqlVatafJiX9JrDk2MqbAPv1s4oSEpBqryqgEEgLn/Dd3lzPxCM/KzSdFFsVXSYGPkEc3I3w7QsgPEBrZj0e3FRLFuAJyxahrtAce2W9woOfQFaOw7DTUUnLNFl0wlUJAqjsYUUquu80yybuzLkgOPeAxJbyPPjGqiwqNx94e/wwsL+qZfc/VlKRu7IBlQahctyB8N8IzJaWuSuVmBtySV/NS9Zu/UNssTIHQx3T4cXP3hf28f1iKp+2tf5supvPnD76T55nwlbtjt1q9rSkwC1/YIpXpqtxNNl0XTMPjgqQWXxvlDVbokpsr3xQTuRIU6H1SA8tKV++jF8SRH02ab8PCNGOczySXajcdzrIMpantpJX8Ba0aGibhODQ1bs2gNGxeZMNvODbmBFmCVlvTxHWInCrOlkHgrtd7kf1auaIlMKobEmesvBl6z70pOPr/RQo8IEXILd2UPZtibovfiWIk4eaRcHVmrlb1QI+5IiVYbiQTGtTR/b6BXilh75RSBctmwkQddjoc6sA/qnKD1f/v1jkwAx1DTIMhM8QoweGZzdA87G9vhqBnhofqdkyGrUSqmRQ9og0BustmlzUhBRxQ7CDCWS7MZQo7i+CppZOZFLxxFSWj1E4zKF9X4DfQo8nMWpC4L0gw9HCeTI7xhcYkit9fTobXnDxTTr7aDScMyuiSgzLA7y0o4wsNymDy/oJycg3KMwXlq91wuqCsb+LqhrYbCMTZYDaEaQxJdpptE6Nj3XCynK5jueWGWcE4vYhd8/D1Akdn3jVR/21v3qjggaA9Ldoi1OdKlh1KlkVD1fG011tyucntMd7H6uQMVb922O1ut7XpuDvaC+zwQuq0cFP19lwIX9hzo0nivdW/H6+rIxoPPFfegJDRyYTsvye2hDTM86uSQ0r68f9T0lzuD113da2ja3z3Bw== \ No newline at end of file diff --git a/Stack.png b/Stack.png new file mode 100644 index 0000000..677cc95 Binary files /dev/null and b/Stack.png differ diff --git a/index.html b/index.html index 5418b18..7a8788e 100644 --- a/index.html +++ b/index.html @@ -148,9 +148,13 @@ layout: false ## Introduction ] .right-column[ -- C is full of holes, let's get to know one. +C is full of holes, let's get to know one. -- Old skool, so no OS or hardware protections. +Old skool, so no OS or hardware protections. Which today is mostly relevant in IoT. (Remember, the `S` in `IoT` stands for Security.) + +Stack smashing is making use of a buffer overflow vulnerability in code using variables on the stack. This type of vulenrability has been known for a long time. This attack was first properly documented in Phrack #49. + +.footnote[Phrack #49(http://www.phrack.org/issues/49/14.html#article)] ] --- template: inverse @@ -171,6 +175,22 @@ For x86 systems the stack grows from the largest memory address up. .footnote[Borrowed from [wikipedia](https://en.wikipedia.org/wiki/Stack-based_memory_allocation)] ] --- +.left-column[ +## Say wut? +] +.right-column[ +Whenever a function is called a frame is added to the stack. Whenever a function ends the frame is deleted. + +Such a frame consists of variables, a stored stack pointer and a return address. +] +--- +.left-column[ +## This is not helping you know... +] +.right-column.center.middle[ + +] +--- template: inverse # How does this work? ---