사진처럼 r <<< $(파이썬 코드1) <<< $(파이썬 코드2)
인자를 입력해서 디버거를 보고 있는데
파이썬 코드2만 정상적으로 첫번째 인자로 입력되고("cherry~"), 두번째 인자 파이썬 코드1은 입력이 되지 않습니다.
pwndbg에 인자 2개를 순서대로 입력하려면 run 명령어을 어떻게 주어야 하나요?
안녕하세요,
가장 먼저 해당 명령어가 동작하지 않는 것은 <<<
를 2개 사용한 리디렉션이 실제로는 생각하신 바와 같이 동작하지 않음에 있습니다.
$ cat <<< "test" <<< "string"
string
위 동작을 보면, cat
에 실제로 전해지는 문자열은 string
하나 뿐임을 확인할 수 있습니다. 아마도 pwndbg
내에서도, 비슷한 동작을 보일 것이기에 이런 문제가 발생하는 것이라고 생각됩니다.
그리고 pwndbg
에 인자 두 개를 넘기기 위한 방안에 대한 답변입니다.
<<<
의 경우 문자열 자체를 입력으로 넘기기 위해 사용하는 명령어이며, 문제에서 read()
를 이용해 입력을 받기 때문에 개행 문자를 이용한 방법도 통하지 않는 관계로, 해당 명령어를 이용해 두 개의 구분된 입력을 전송하는 것은 어려워보입니다(<<<
를 이용하는 것이 아니더라도, 만약 다른 방안이 있다면, 댓글로 남겨주시면 감사드리겠습니다)
대신, pwntools
에 내장된 gdb
integration을 사용하는 것을 추천드립니다. 해당 방안은, pwntools
를 이용해 gdb
가 부착된 프로세스를 열고, gdb
환경을 제공하는 동시에 익스플로잇 코드에 작성된 입력을 넘길 수 있도록 하는 것을 기본으로 합니다.
여기에 자세한 사용 방법을 적는 것은 어렵습니다만, 검색을 통해서 사용 방식에 대한 다양한 문서를 찾아볼 수 있을 것이라고 생각합니다. 해당 방안을 찾아보신 뒤 따라해보시면 좋을 듯 합니다.