일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 클라우드란?
- col -1 from CursorWindow
- 코틀린
- Make sure the Cursor is initialized correctly before accessing data for it.
- SQLiteConstraintException
- UNIQUE constraint failed
- 6566
- 페니빙
- Drive-By-Download
- pwnable.kr
- 클라우드가 뭐야
- 애너그램 그룹
- pwable.kr
- 10814
- 액션바 필요없숴
- 파이썬
- 포너블
- cmd2
- java.lang.IllegalStateException
- cmd1
- Docker
- pwnable
- 백준
- kotlin
- 나이순 정렬
- Couldn't read row 0
- 블록체인
- 쏘큩
- python
- tlqkf
- Today
- Total
목록포너블 (3)
푸르미르
main 함수부터 보자. delete_env()함수를 대뜸 실행한다. 이 아이는 뭐하는 아이잉고.. delete_env()함수는 바로 위에 나와있다. 현재 저장되어있는 환경변수를 모두 삭제하는 함수인가보다. 이 함수를 실행하고 PATH 바꿔주고,, filter함수를 실행하는데, ㅎ 이 함수는 cmd1에서 했던 filter에서 조금 더 추가된 모습을 하고있다. strstr()함수를 통해 "=", "PATH", "export", "/", "`", "flag" 문자열들의 존재를 확인한다. 일단 cmd1에서 했던 방법에서 /bin/cat 명령어를 사용하여 flag를 조회하였는데, 여기 cmd2에서는 '/'이 필터링이 되기 때문에 불가능하다. 그럼 어떻게 하란말이야!!!!!!!!!!!!!!!!!!!!!!!!!!!..
cmd1.c 의 코드를 잘 살펴보겠다. main함수부터 보면, PATH를 /thankyouverymuch로 설정한다. 그리고 filter함수를 argv[1]인 아이를 매개변수로 전해주며 실행한다. 이 filter함수의 결과가 true(1)이면 프로그램 종료가 되고 그렇지 않으면(false, 0) system( argv[1] ); 명령을 실행한 후 프로그램 종료가 된다. 그렇다면 filter함수는 뭐하는 함수인가? filter함수에서, strstr함수는 매개변수로 들어온 아이(문자열)에서 "flag", "sh", "tmp" 이 3개의 문자열이 있을 경우 인덱스의 값을 리턴하지만, 존재하지 않을 경우, null갑을 리턴해주는 함수이다. 그런데 이 strstr함수의 리턴값이 0과 다를 경우, 즉 주어진 문자열..
리버싱에 관련있는 거 같은데 문제에서 하라는 대로 다운을 받았다. 다운 받은 파일에 대해 궁금하니 ls -al 해당 파일을 실행파일로 바꿔보자 chmod +x flag 실행파일로 바꾼 flag파일을 실행시켜보자 I will malloc() and strcpy the flag there. take it. => malloc,strcpy, flag를 그곳에 둘것이니 가져가시오. 이것으로 본다면 flag는 c언어로 작성된 파일이라는 것을 알 수 있다. gdb로 flag 파일을 디버깅 하려했더니 No debugging symbols found in flag => 가능성 1. 파일 손상 2. 암호화 되어있어 읽지 못함 flag파일을 윈도우로 가져와서 freeware을 돌려보았다. 맨아래 unpack info에서 d..