pwndbg run 명령어 사용법


사진처럼 r <<< $(파이썬 코드1) <<< $(파이썬 코드2) 인자를 입력해서 디버거를 보고 있는데
파이썬 코드2만 정상적으로 첫번째 인자로 입력되고("cherry~"), 두번째 인자 파이썬 코드1은 입력이 되지 않습니다.
pwndbg에 인자 2개를 순서대로 입력하려면 run 명령어을 어떻게 주어야 하나요?

#pwndbg
작성자 정보
답변 1
avatar
fow
대표 업적 없음

안녕하세요,
가장 먼저 해당 명령어가 동작하지 않는 것은 <<<를 2개 사용한 리디렉션이 실제로는 생각하신 바와 같이 동작하지 않음에 있습니다.

$ cat <<< "test" <<< "string"
string

위 동작을 보면, cat에 실제로 전해지는 문자열은 string 하나 뿐임을 확인할 수 있습니다. 아마도 pwndbg 내에서도, 비슷한 동작을 보일 것이기에 이런 문제가 발생하는 것이라고 생각됩니다.

그리고 pwndbg에 인자 두 개를 넘기기 위한 방안에 대한 답변입니다.
<<<의 경우 문자열 자체를 입력으로 넘기기 위해 사용하는 명령어이며, 문제에서 read()를 이용해 입력을 받기 때문에 개행 문자를 이용한 방법도 통하지 않는 관계로, 해당 명령어를 이용해 두 개의 구분된 입력을 전송하는 것은 어려워보입니다(<<<를 이용하는 것이 아니더라도, 만약 다른 방안이 있다면, 댓글로 남겨주시면 감사드리겠습니다)
대신, pwntools에 내장된 gdb integration을 사용하는 것을 추천드립니다. 해당 방안은, pwntools를 이용해 gdb가 부착된 프로세스를 열고, gdb 환경을 제공하는 동시에 익스플로잇 코드에 작성된 입력을 넘길 수 있도록 하는 것을 기본으로 합니다.
여기에 자세한 사용 방법을 적는 것은 어렵습니다만, 검색을 통해서 사용 방식에 대한 다양한 문서를 찾아볼 수 있을 것이라고 생각합니다. 해당 방안을 찾아보신 뒤 따라해보시면 좋을 듯 합니다.

2024.06.13. 18:39
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기