(요청)[pwnable.kr] - fsb

해킹대회 문제 풀이 연습장소

Moderator: amesianx

Post Reply
KSH
Posts: 24
Joined: Thu Jul 21, 2016 5:39 pm

(요청)[pwnable.kr] - fsb

Post by KSH » Fri Sep 23, 2016 9:58 pm

pwnable.kr FSB 문제입니다.

<전역변수와 fsb함수>
1.png
1.png (16.75 KiB) Viewed 623 times
<메인함수>
2.png
2.png (6.66 KiB) Viewed 623 times
메인함수를 보면 fsb함수를 포맷스트링 버그로 익스플로잇 하라고 합니다.
fsb함수의 for문을 보면 read함수로 4번 입력받습니다. 그리고 printf(buf) 에서 포맷스트링 버그가 발생합니다.

포맷스트링 버그를 이용하여 어떤 위치에 값을 덮어씌울지 조사해보기 위해 for문 안에있는 read함수 뒤에있는 printf함수에 브레이크를 걸었습니다.
3.png
3.png (15.18 KiB) Viewed 623 times
4.png
4.png (10.49 KiB) Viewed 623 times
4번 입력하였습니다.
5.png
5.png (7.67 KiB) Viewed 623 times
for문을 빠져나간 뒤에 있는 puts함수의 got를 execve함수의 주소로 덮어씌우면 문제가 풀릴 것 같습니다.
그런데 어느 위치에 주소를 덮어씌워야 할지 모르겠습니다. 그 위치와 그곳에 덮어씌워야 하는 이유를 가르쳐주시면 감사하겠습니다.
읽어주셔서 감사합니다.

hackhack
Posts: 14
Joined: Mon Sep 26, 2016 1:12 am

Re: (요청)[pwnable.kr] - fsb

Post by hackhack » Wed Sep 28, 2016 8:26 am

복잡하게 생각할 필요가 없는, 간단한 문제입니다.
소스코드를 보면, format string 을 4번 실행시켜준 다음에, 입력을 받아서, 전역변수 key와 같을경우 쉘을 실행시켜줍니다.
즉, 따로 got를 덮어쓴다던지 할 필요가 없습니다.
pargv 변수를 이용하여, 스택에 key의 메모리를 쓰고, 또 그 쓴 내용을 이용하여 전역변수 key에 덮어쓸 수 있습니다.
pargv는 argv의 주소를 담고 있고, pargv를 이용하여 %n 으로 값을 쓰면, argv에 값이 써집니다.
또한, pargv는 %15x 에 해당하고, argv는 %21x에 해당합니다.
0.png
0.png (5.64 KiB) Viewed 611 times
key 의 메모리 주소는 0x0804A060 == 134520928 입니다.

첫번째 :
%134520928c%15$n
두번재 :
aaaa%21$llnaaaaaaa
세번째 :
aaaaaaaaaaaaaaaaaaaaaaaa
네번째 :
aaaaaaaaaaaaaaaaaaaaaaaa
키 :
4

이렇게 하면 쉘이 실행됩니다.

여기서 두번째의 %21$lln 이 중요한데, key가 8바이트이므로, 8바이트만큼 써야합니다. 그런데, 그냥 %n를 하면 4바이트밖에 안써집니다.
https://en.wikipedia.org/wiki/Printf_format_string
여기 Length field 항목을 보시면, hh가 붙으면 char, h는 short, ll은 8바이트라는걸 알 수 있습니다.
그래서, %lln 으로 ll 을 붙여서 8바이트를 쓰도록 하는 것입니다.

KSH
Posts: 24
Joined: Thu Jul 21, 2016 5:39 pm

Re: (요청)[pwnable.kr] - fsb

Post by KSH » Wed Sep 28, 2016 9:40 am

시간을 내주셔서 감사합니다.

hackhack
Posts: 14
Joined: Mon Sep 26, 2016 1:12 am

Re: (요청)[pwnable.kr] - fsb

Post by hackhack » Wed Sep 28, 2016 7:38 pm

혹시 이해가 안되는 점이나, 궁금한게 있으면 더 물어보세요.

Post Reply

Who is online

Users browsing this forum: No registered users and 20 guests