다중 파이프 페이로드
해킹/개념 정리 2015. 11. 24. 23:15
예컨데 어떤 문제에서 입력을 여러번 받는다면 하나의 파이프로는 입력을 전부 못할 수 있습니다. 운좋게 scanf만 사용한다면야 공백문자를 중간에 넣어서 구분해 줄 수 있겠지만 다른 입력함수는 공백역시 입력으로 받아버리는 경우가 많습니다.
이럴때 불편해서 실험해보고 알게된 사실인데 '|'(파이프) 를 여러개 이용해서 여러개의 인자를 프로세스로 전달할 수 있더군요.
ex) (python -c 'print "인자2";cat)|(python -c 'print "인자1"';cat)|./프로그램
위 예시와 같이 인자는 뒤에서부터 먼저 들어갑니다. 헷갈리지 않게 조심!
또한 이 방법을 이용해서 gdb에서 파이썬 파이프를 사용할 수 없었던 불편함을 조금이나마 줄일 수 있습니다.
ex) (python -c 'print "인자2"';cat)|(python -c 'print "인자1"';cat)|(python -c 'print "r"';cat)|(python -c 'print "b bp주소"';cat)|gdb 프로그램
이런식으로 특정 라인에 bp를 걸고 실행후 인자 전달까지 python을 이용해서 입력한 후 동적 디버깅을 할 수 있습니다.
'해킹 > 개념 정리' 카테고리의 다른 글
ASLR의 개념 (0) | 2016.01.13 |
---|---|
함수의 프롤로그와 에필로그에 관한 고찰 + fake ebp(실패) (0) | 2016.01.13 |
GOT overwrite (0) | 2015.11.24 |
UPX (0) | 2015.11.24 |
file destriptor (0) | 2015.11.24 |