출처: http://vallista.tistory.com/entry/Syntax-Highlighter-티스토리에서-코드-이쁘게-넣기 [VallistA]>

posted by ddanss 2019. 10. 7. 01:27
728x90

이렇게고, 언더플로우를 이용한 문제다.

이런식으로 코드를 짜서 숫자들을 찾아보았다.

%u는 -인 값이 없으므로 -를 입력하면 언더플로우가 된다.

 

이렇게하면 둘다 4918보다 작거나 같고 앞에값(4918) - 뒤에값(-1) 이 4919가 된다.

 

이제 nc로 저 값들을 쓰면 flag가 나온다.

 

반응형

'System, Pwn > pwnable.xyz' 카테고리의 다른 글

pwnable.xyz - challenge  (0) 2019.10.07
posted by ddanss 2019. 10. 7. 01:03
728x90

어우.. 너무어렵다

read, write함수 이용해서...하는건가...했는데 아니다.

이건 malloc 함수를 이용해 푸는 문제라고 한다.

 

앞으로 내용을 요약하면,

아이거 malloc이 결국 너무 큰값을 해서

v5가 0이 되어가지고 떠돌이 신세가 된다.

이제 size를 통해서 heap에 접근한다음, v5[(heap-1)+1] = 0

이런식으로 접근하는 것이다.

이렇게 Leak에대한 주소를 주고 밑에 길이와 message를 입력받는다.

출력되는 Leak : 주소는 v3의 첫 주소일 것이다. (heap영역주소)

 

gdb에서 어떻게 main에서 break를 걸까 고민했는데

 

r 치고 Length of your message: 여기 입력 부분에서 break 걸면 디버깅할수 있게끔 나온다.

ni 겁나쳐서 main부분 찾았따.

여기서보면 

[rbp+rdx*1-0x1] 에 0을 넣는다.

그리고 우리가 비교해야하는 v3값은 rbx에 있다.

그럼 우리는 rdx값을 rbp, 즉 rbx값에 맞춰주면 된다.

 

 

와;;;;;;;살벌하게 어렵구만

반응형

'System, Pwn > pwnable.xyz' 카테고리의 다른 글

pwnable.xyz - sub  (0) 2019.10.07
posted by ddanss 2019. 10. 1. 11:38
728x90

코드를 해석해보면

main함수에서

putenv("PATH=/thankyouverymuch") 를 쓴다.

이 함수는 thankyouverymuch라는 곳으로 시작하면 간 다는 것이다.

그리고 filter함수에서

flag,sh,tmp라는 단어의 사용을 막고있다.

그리고 system함수를 통해 argv[1]을 넘길 수 있다.

/bin디렉토리에는 기본적인 명령어들이 들어있는데

/bin/cat 을하면 cat이라는 명령어를 쓸 수 있다.

그래서 우리는 첫번째 인자에

"/bin/cat fl*"을 사용하면

fl로 시작하는 파일들을 cat명령어를 이용해 출력할 수 있게된다.

반응형
posted by ddanss 2019. 9. 30. 00:44
728x90

p32(0x12345678) = \x78\x56\x34\x12

u32(\x78\x56\x34\x12) =  305419896(0x12345678)

 

p32는 리틀엔디언으로

u32는 숫자형식으로.

반응형

'System, Pwn > 개념' 카테고리의 다른 글

syscall  (0) 2019.09.29
Heap overflow  (0) 2019.09.22
posted by ddanss 2019. 9. 29. 23:43
728x90

https://sens.tistory.com/34

반응형

'System, Pwn > 개념' 카테고리의 다른 글

u32와 p32  (0) 2019.09.30
Heap overflow  (0) 2019.09.22
posted by ddanss 2019. 9. 25. 22:34
728x90

passcode1입력하니까 ...ㅠ

 

이게 코드고 welcome 갔다가 login을 간다.

좀 이상한건 login부분에 scanf가 scanf("%d",passcode); 이다. &passcode가 아니라...

저렇게하면 입력된게 저 주소로 들어가버린다.

 

뭔가... login에 system 함수를 가져오고싶은데...ㅠ

welcome 입력부분은 0x70, login 첫번째 입력부분은 0x10, 두번째입력부분은 0xc

이걸 이용하면 된다.

fflush(stdin)함수와...

fflush got에 system("/bin/cat flag")를 덮어쓰자.

앞엔 0x70-0x10 = 112-16 = 96 

payload = "A"*96 + fflush_got + system("/bin/cat flag") 가 시작되는 주소!

fflush의 got주소는 이런식으로 구할 수 있다고 한다.

이 fflush 호출을 보고

fflush@got.plt 이렇게 보이는게 바로 got이다.

이게 바로 system 부분이고, 0x080485e3을 이용하면 된다. 근데 0x080485e3을 10진수로 바꾸어줘야한다.

왜냐하면 scanf("%d", 이기 떄문!!

0x080485e3 = ‭134514147‬

 

python -c 'print"A"*96+"\x04\xa0\x04\x08"+"134514147"' | ./passcode

 

 

반응형
posted by ddanss 2019. 9. 23. 22:24
728x90

char overflowme[32] 라 32겠거니와~ 생각하고 짰는데...ㅠㅠㅠ아니었따.ㅠㅠㅠㅠ

그래서 그냥 아이다를 바로 켜봤따

shit..... ebp-2Ch;;;;;;;

2C = 44개나 있네 흑흑

그래서 바로 익스 썻더니 땄따

 

버퍼44개 + sfp4개 + ret4개 -> 52개 에다가 뒤에 첫 인자일테니까 0xcafebabe를 했더니 땄따.

 

반응형
posted by ddanss 2019. 9. 23. 01:08
728x90

뒤에 인자가 하나 있어야하고, 길이가 20이어야 하고 hashcode와 길이가 같아야한다.

 

check_password를 해석하면 char* p 로 넘긴 함수를 int* ip로 하는데

이것은 char형이 1byte의 자료형이고 int 형이 4byte의 자료형이므로 4바이트씩 끊어서 읽겠다는 뜻이다.

그럼 아래를보면 4byte씩 끊어서 5번 더하니까

5번 더한값이 0x21DD09EC면 되는 것이다.

 

./col `python./col `python -c 'print"\x01"*16+"\xe8\x05\xd9\x1d"'` 

하면 답이 나온다.

반응형
posted by ddanss 2019. 9. 22. 23:52
728x90

이게 문젠데 도대체 buf에 LETMEWIN을 어떻게 집어넣어야...했다.

보니 file descriptor에 관한 문제다.

file descriptor

0 : 표준입력

1 : 표준출력

2 : 표준에러

인데

fd = atoi(argv[1]) - 0x1234(4660) 이것을 통해 fd가를 0으로 만들어 read(0,buf,32) 로 표준 입력을 받게끔 해야한다.

그래서 이런식으로 입력하면되는데

심심해서 4661, 4662도 입력해봤는데 성공했다..

시스템상 오류인건가...흠....ㅠ 모르겠다

반응형
posted by ddanss 2019. 9. 22. 18:38
728x90

메모리영역

1. 코드 영역 - 프로그램의 코드가 올라가는 영역 (컴파일된 기계어 코드)

2. 데이터 영역 - 전역변수, 정적변수 등이 할당되는 영역. 초기화된 영역 : data 영역, 초기화되지 않은 영역 : bss 영역

3. 스택 영역 : 지역 변수와 매개 변수가 저장되는 영역. 

4. 힙 영역 : 빈공간. 필요에의해 메모리를 할당하기도 하고 해제하기도 하는 영역.

 

ex)

char * input = malloc(40);

char * input2 = malloc(40);

read(0,input,100); // overflow

printf("%s\n",input);

 

printf함수는 문자열을 출력할 때 \x00을 만나면 출력하는데

read로 input2까지 채워주면 input2까지 출력해줄 것이다.

 

반응형

'System, Pwn > 개념' 카테고리의 다른 글

u32와 p32  (0) 2019.09.30
syscall  (0) 2019.09.29