2016. 10. 29. 16:43

## Format String Bug 팁들


1. 스택 내 멀리 있는 주소의 값을 printf("%x%x...%x")로 찍어내지 않고 한 번에 출력하는 방법

=> printf("%길이$08x") -> ex) printf("%1337$08x")

=> 위와 같이 fsb를 터뜨리면 스택에 1337번째의 값을 HEX값으로 출력해줌(info leak할때 사용)


2. 스택 내 멀리 있는 주소의 값에 printf("%x%x...%x%n")로 주소 값 변조를 하지 않고 한 번에 변조를 하는 방법

=> printf("%길이$n") -> ex) printf("%12$n")

=> 위와 같이 fsb를 터뜨리면 스택의 12번째의 값에 저장되어 있는 주소에 앞에 출력된 바이트 수만큼 덮어씌울 수 있음.


3. 64bit Format String Bug에서의 특별한 점

=> 메모리 릭을 할때는 %x대신 %lx를 하여 8바이트 릭을 할 수 있음. 당연히 %12$lx도 사용 가능

=> 32비트에서는 바로 스택 $esp + 4부터 릭이 가능하지만, 64bit에서는 바로 스택이 안나옴.

=> 64비트 환경에선 %rdi, %rsi, %rdx, %rcx, %r8, %r9 순서로 릭이 된 다음 스택이 릭 된다.

=> 이런 이유는 64비트 환경에서는 함수 호출 시 레지스터로 인자 값을 활용하기 때문

=> memory write 할 때, 32비트에서는 %12$n으로 해도 되지만, 64비트에서는 "%12ln" 이런 식으로

     하면 된다.(0xffff이상의 값을 덮어씌울 수 있다.)

Posted by holinder4S
2016. 4. 3. 04:02

## Python 으로 프로그램 실행시키기


1
2
3
4
5
6
7
8
9
10
import os
 
TARGET = os.getcwd() + "/a.out"
 
argv0 = "AAAA"
argv1 = "BBBB"
argv2 = "CCCC"
 
os.execv(TARGET, (argv0,argv1,argv2))
 
cs


위 소스코드와 같이 python의 os 모듈을 이용하여 리눅스에서 프로그램의 인자 값을 지정하여 실행할 수 있다.


이 때 특이한 점은 보통 argv[0]에는 프로그램 실행 경로가 들어가지만 위와 같은 경우 원하는 대로


argv[0] 조작을 할 수 있다.


Posted by holinder4S
2016. 3. 3. 23:33

## Linux Program에 python으로 값 넣기


1. (python -c 'print "name\n1\n" + "A"*44';cat) | echo1


2. gdb에서 python으로 프로그램에 값 넣기

  -> r < <(python -c 'print "name\n1\n" + "A"*44')


3. 인자 값 넣기

  -> ./program `python -c 'print "A"*44'` `python -c 'print "B"*44'`





Posted by holinder4S
2015. 12. 30. 00:55

## 리눅스에서 프로그램 인자를 python으로 넣기


 리눅스에 다음 [그림 1]과 같이 문자열을 입력받는 간단한 프로그램이 있다. 
이 경우 프로그램의 취약점(bof)을 발견하기 위해 문자를 많이 집어넣어야 할 때가 있는데 손으로 일일이 집어넣기에는 너무 양이 많다. 



[그림 1] a


이 때 python을 이용하여 인자의 길이를 길게 집어넣을 수 있다. 하는 방법은 다음과 같다.

root@kali:~# (python -c 'print "A"*4 + "B"*4') | ./a

그럼 [그림 2]와 같은 결과가 나타난다.






Posted by holinder4S
2014. 2. 7. 09:08

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2014. 2. 7. 09:08

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2014. 1. 8. 17:02

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2014. 1. 7. 17:39

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2014. 1. 6. 12:00

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2014. 1. 3. 01:03

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.