Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

1. Consider the following C-code fragment: int main(int argc, char *argv[]){ char passwd[8]; int continue = 0; strcpy(passwd, argv[1]); if(strcmp(passwd, CS3750) == 0) continue =

1. Consider the following C-code fragment:

int main(int argc, char *argv[]){

char passwd[8];

int continue = 0;

strcpy(passwd, argv[1]);

if(strcmp(passwd, CS3750) == 0)

continue = 1;

if(continue)

login(); /* a method that logs in the user */

}

Note: In C, * indicates a pointer, which behaves similarly to a reference in Java. Therefore, char *argv[] indicates argv as an array of pointers (references to memory addresses) to characters.

(i) Explain how an attacker can achieve buffer-overflow attack with reference to the variables passwd[] and continue. [5 points]

(ii) Explain the ideal ordering of the memory cells (assuming memory addresses increases from left to right) that correspond to these two variables so that this attack can be avoided

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Business Process Driven Database Design With Oracle PL SQL

Authors: Rajeev Kaula

1st Edition

1795532386, 978-1795532389

More Books

Students also viewed these Databases questions

Question

Why is the System Build Process an iterative process?

Answered: 1 week ago