일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- rev-basic-7
- rev-basic-3
- off_by_one_000
- RCE
- coin1
- rev-basic-6
- basic_exploitation_001
- 코드엔진 베이직 13
- rev-basic-4
- Basic
- 코드엔진 베이직
- sint
- out_of_bound
- L18
- Pwnable
- pwnable.kr
- 드림핵
- rev-basic-2
- L17
- rev-basic-1
- off_by_one_001
- rev-basic-5
- basic_exploitation_000
- CodeEngn
- rev-basic-0
- 포너블
- sd카드 리더기
- L16
- Dreamhack
- L15
- Today
- Total
목록Pwnable/pwnable.kr (17)
서브웨이
너무 오랜만이네요. 이번 학기는 코로나라는 재앙때문에 아주아주 힘든 바쁜 학기였습니다. 오래간만에 문제를 풀어봅시다. 자 오랜만이라 새롭네요. 대충 읽어보자면 어머님꼐서 패스워드를 사용하는 로그인 시스템을 만들라고해서 C로 만들었는데 에러는 없지만 컴파일 할 때 경고가 뜬다. 뭐 이런 내용이네요. 이런 파일들이 있네요. 일단 코드를 봅시다. 자 그럼 컴파일 경고가 뜬 부분을 찾아봅시다. login 함수에서 scanf를 쓸 때 인자에 &를 안써줬네요(welcome에선 어차피 배열이니 안써도 된다는건 다 아실거라 믿습니다). 저렇게 되면 passcode1, passcode2에 있는 쓰레기 값이 가리키는 주소에 입력한 값을 넣게 됩니다. 이상한 주소에 접근하려하니 당연히 segmentation fault가 뜨..
일단 다운받아 봅시다. 실행을 해보니 동적할당을 해서 거기에 flag를 넣어놨다는 것 같습니다. 그럼 디버거로 디버깅을 해보면서 알아봐야할 것 같습니다. 디버깅을 하려고 시도를 해보니 잘안돼서 한번 툴을 돌려봅니다. UPX로 패킹이 되어있네요. 풀어줍시다. 자 이제 다시 분석을 해봅시다. 딱봐도 +32 부분이 수상해보입니다. 그러니 +39 부분에 중단점을 걸어봅시다. 그리고 실행. rdx에 flag값이 올라갔습니다.
언젠가 한번쯤은 들어본 BOF를 풀어봅시다. 일단 BOF(Buffer OverFlow)에 관한 설명은 아래에서 확인하시면 될 것 같습니다. https://namu.wiki/w/%EB%B2%84%ED%8D%BC%20%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C 버퍼 오버플로 - 나무위키 이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다. 나무위키는 백과사전이 아니며 검증되지 않았거나, 편향적이거나, 잘못된 서술이 있을 수 있습니다. 나무위키는 위키위키입니다. 여러분이 직접 문서를 고칠 수 있으며, 다른 사람의 의견을 ..
일단 문제를 읽어보니 MD5 해시값을 하나 주고 그 해시 값을 가지는 문자열을 찾아야할 것 같다. 일단 접속해보자. 코드를 보자. 20자리의 문자열을 int형으로 취급해서 4바이트씩 5번 반복한 값을 더한것이 0x21DD09EC이면 flag를 출력합니다. 간단하게 0x01010101 네번이랑 이 값을 넣어봅시다. 짜잔
자 일단 포너블은 거의 처음이라고 봐도 무방하다. 동아리 스터디에서 이것저것 배우긴 했지만 완벽히 소화하진 못했다. 일단 파일디스크립터에 대해 알아보자. https://dev-ahn.tistory.com/96 리눅스 - 파일 디스크립터 File Descriptor (파일 디스크립터) [출처: http://dev.plusblog.co.kr/22] 1. 파일 디스크립터 - 시스템으로부터 할당 받은 파일을 대표하는 0이 아닌 정수 값 - 프로세스에서 열린 파일의 목록을 관리하는 테이.. dev-ahn.tistory.com 자세한 설명은 이 블로그에서 보면 된다. 요약하자면 파일 테이블에서 해당 파일의 인덱스값을 정수로 나타낸 것을 파일 디스크립터라고 한다. 그럼 이제 리눅스 터미널에서 저걸 입력해보자. 그럼 ..