IMyoungho 2019. 3. 25. 23:55

이제부터는 pwnable.kr을 풀어보도록 하겠다~ 새로운 시작!!ㅎㅎ

그 첫 번째 문제는 fd이다

fd.c의 소스코드를 보도록 하겠다.

 

 

 

코드를 보면 atoi함수를 이용해서 argv[1] 값을 인자로 넘겨준다.

이 코드의 의미는 즉, string을 숫자형태로 바꾸겠다는 의미이다.

그 값을 fd에 저장하고 이 fd는 read함수의 인자로 넘겨준다.

read함수의 첫번째인자는 fd = file descriptor를 의미하며

파이프 ,FIFO, 소켓, 터미널 디바이스, 파일 등 종류에 상관없이 

모든 열려있는 파일을 참조할 때 사용한다고한다.

 

 

이 코드에서는 read함수를 이용해서 buf에 입력을 진행하기 때문에 

fd값이 stdin을 의미하는 0이 되어야한다. 그러므로 argv[1]은 0x1234가

되어야하며 이는 10진수로 4660이다. 그러므로 4660을 argv[1]로 넘기면

buf에 입력을 할 수는 read함수가 실행된다. 다음으로는 strcmp가 있는

if문을 만나게 되는데 거짓이 되어야 if문이 진행되면서 "/bin/cat flag"가 실행되어

flag값을 볼 수 있도록 되어있다. 그러므로 우리는 strcmp의

 return값을 0으로 되게만들어야 하므로 "LETMEWIN"을 입력해주자!

 

 

깔끔하게 flag를 볼 수 있었다.

반응형