<main+77> 264byte를 확장. 256byte + 8byte dummy인듯
소스를 보면 문장을 str로 입력받고 이를 그대로 출력하는데
인자 길이를 검사하지 않으므로 버퍼오버플로우 취약점이 있음을 알 수 있다.
level11과 비슷하게 쉘을 실행시켜주면 될 듯.
그런데 여기서는 level11과 다르게 main함수의 인자가 아니라 gets함수로 문장을 입력해야하므로,
(python -c 'print "A"*268+"\xc0\xf2\x03\x42"+"A"*4+"\xa4\x7e\x12\x42"';cat) | ./attackme
로 쉘을 획득 가능.
level13의 password는 "have no clue"
*세미콜론으로 명령어를 구분, 동시실행을 위해 () 괄호로 묶어줌
* |파이프는 왼쪽의 표준 출력을 오른쪽의 표준입력으로 넘겨준다.
ex) 명령어A | 명령어B
= 명령어 A의 표준출력이 명령어 B에 표준입력으로 들어간다.
* 표준 입력을 지원하는 명령어 cat과 python을 함께 쓰기 위해 세미콜론 이용
* python과 cat의 조합으로 나온 표준출력을 한번에 넘기기 위해 ()괄호로 묶어줌.
* cat을 쓰지 않으면 ./attackme가 표준 입력을 받지 못한다.
---> ftz에서 파이프와 cat을 동시에 사용해야 하는 이유
cat을 사용해야 하는 이유?
파이프라인 사용시에 왼쪽 표준 출력이 파이프라인 오른쪽의 표준 입력으로 들어가는데,
python이 실행되고 종료되면서 pipe broken오류로 인해 종료가 일어난다.
따라서 사용자 입력을 출력해주는 cat을 이용해서 stdin표준입력을 유지시키는 것이다.
그래서 쉘이 바로 종료되지 않고 사용자 입력을 대기하게 되는 것이다.
'System Hacking' 카테고리의 다른 글
[해커스쿨FTZ] Level10 (0) | 2020.01.06 |
---|---|
[해커스쿨FTZ] Level11 (0) | 2020.01.06 |
[해커스쿨FTZ] Level20 (0) | 2020.01.06 |
[해커스쿨FTZ] Level19 (0) | 2020.01.06 |
[해커스쿨FTZ] Level18 (0) | 2020.01.06 |