9oat's LAB
C프로그래밍에 대한 지식은 거의 없다시피 해서 푸는데 꽤 고생하고 오래 걸린 문제였는데, 문제랑 직접적으로 관련 없는 부분에서 이해가 안가는 점이 생겼었다. 먼저 문제에 대해서 설명을 하자면 코딩을 이용해 문제 이름 처럼 여러가지 input(argv,env,socket)으로 값을 넘겨나가는 문제였다.코딩을 해야하니까 일단 파일을 만들어야 하는데, input 바이너리가 있는 홈 디렉토리(/home/input2)에는 쓰기권한이 없어서, /tmp에 작업공간을 만들어서 풀어야했다. 그리고 [사진 1] input 코드 일부 input 문제코드 중에는 파일을 읽어들이는 코드(\x0a)가 있었는데, 내 생각엔 위와같은 코드일 때 input 바이너리와 동일한 디렉토리에 '\x0a'가 만들어져야 input이 해당 파일을..
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253from socket import *from struct import * HOST = '127.0.0.1'PORT = 8888 p = lambda x: pack("
Memory Leak 기법을 정리한 게시물의 내용 중 아무 함수로 RTL하는 건 아니고 send나 write같은 함수를 이용한다. 이 같은 함수들은 특정 값(buf 등)을 출력하거나 전송할 수 있는 함수들인데, 이 특정 값을 내가 원하는 주소로 인자를 구성한 뒤 RTL하여 값을 출력시키는 것이다. 라는 내용을 적었었다. RTL로 Memory Leak을 발생시키는 것에 대한 내용인데, 보통 CTF 문제들로 공부한 내용을 기반으로 정리하다 보니 send, write 함수를 사용하는 게 많아서 저렇게 적었었다. 근데 이 방법의 기본적인 원리는 단순히 출력(또는 전송)함수를 이용한 RTL로 임의의 주소의 값을 출력하는 것이기 때문에 send나 write가 아니더라도 뭐 printf라던가 puts도 똑같은 역할을..