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

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. 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도 입력해봤는데 성공했다..

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

반응형