일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- VSCode C++ 표준 버전 수정
- add-apt-repository 에러
- wsl2 복구
- vhdx 파일 복구
- 리커버릿
- Python.h: No such file or directory
- Recoverit
- user or team does not exist.
- docker
- 개발
- 임베디드 시스템 해킹
- pwn
- z3 signed 이슈
- python3.11 설치
- GEF
- 실시간로깅
- ppa:deadsnakes/ppa
- pip 에러 해결
- c++
- pwntools
- DYNAMIC Section
- 지훈현서
- GDB
- tool
- OpenAI 개발
- python3.11 pip
- 공유 라이브러리는 왜 항상 같은 순서로 맵핑 될까?
- Seccomp bypass
- std::cerr
- Windows 부팅 오류
- Today
- Total
목록전체 글 (141)
OZ1NG의 뽀나블(Pwnable)
[개요] C++에서는 출력 스트림으로 stdout에 대응하는 std::cout가 존재하듯, stderr에 대응하는 std::cerr가 존재한다. 하지만, std::cerr를 실시간 로깅에 사용하는 경우, 특히 멀티 프로세싱 또는 멀티 스레딩 프로그램 개발에서의 실시간 로깅에 사용하는 경우 다음과 같은 문제가 발생할 수 있다. [문제 코드] std::cerr
[*] 문제 VSCode를 쓰는데, 컴파일러 버전이 충분히 높아 C++ 17 표준을 지원함에도 불구하고 VSCode에서는 C++ 14 표준으로 인식하여 std::any와 std::any_cast를 제대로 인식하지 못하는 문제가 있었다. [*] 해결 아래의 방법은 C/C++ Extention의 설정 값을 수정하는 방식이다. 1. 가장 먼저 좌측 하단의 톱니바퀴 모양을 눌러 Settings 페이지를 열어준다. 2. 검색창에 standard를 검색한다. 3. C_Cpp . Default의 값을 c++17과 같이 자신이 원하는 버전으로 셋팅해준다. 4. VSCode를 껐다 킨다. [*] 주의 - 위 설정 이후 Ctrl + Shift + P에서 C/C++: Edit Configuration (UI 또는 JSON)..
글을 쓰기 앞서 저는 머신러닝에 대해 학교 수업을 들어본게 전부인 대학생일 뿐 머신러닝 전문가가 아닙니다. 따라서 해당 글은 제가 이해한 내용만을 바탕으로 작성하였기 때문에 잘못된 내용이 있을 수 있습니다. 그래서 혹시라도 잘못된 내용이 있다면 댓글로 피드백 해주시면 감사하겠습니다! [*] 개요 요즘 OpanAI의 GPT API를 활용한 개발이나 프로젝트들에 관심이 생겨서 공부도 하고 귀찮음도 해결할겸 노션에 적어뒀던 많은 글들을 나의 티스토리 블로그 작성 형식에 맞춰 알아서 바꿔주고 업로드 해주는 GPT를 만들어보려하고 있었다. 근데 이놈의 MAX_TOKEN이 4K 밖에 안돼서 전체 문장을 이해하지 못해 결국 지금은 잠정적으로 중단한 상태인데, 실패하고나니 문득 이런 의문점이 들었다. ChatCompl..
쓰기전에 미리 말하지만, 이 글은 이곳에서 언급되는 '리커버릿'이라는 프로그램을 까는 글이 절대 아니다! 나같이 특수한 상황(SSD에 쓰기가 불가능하여 윈도우 초기화 파일에 접근이 불가능한 경우)이 아닌 경우에는 '리커버릿'이 훨씬 도움 될거고 GUI라 사용성도 편하기 때문에 오해없기 바란다. 또한 복구를 할 때 사진을 일일이 찍으면서 하지 않았기 때문에 복구 과정에 대한 사진이 없으니 참고하시길 바랍니다. [*] 약 1년 반정도 잘만 쓰던 밥트북의 MBR이 어느날 갑자기 날아가버렸다... 심지어 날아간 시점이 과제 제출 4시간 전 + 중간고사 4일전이었기 때문에 진짜 스트레스가 이만저만이 아니었다. 뭐 어찌되었건 과제 제출이랑 중간고사까지 필요한 데이터는 따로 복구 방법을 깊게 생각해볼 시간이 없었어서..
[*] strace는 PID 값으로 임의의 프로세스에 attach하여 트레이스 할 수 있다. python - pwntools와 같은 걸로 프로세스를 실행하고 strace로 attach를 해서 보면 gdb를 사용했을 때 처럼 계속 브레이크를 걸면서 특정 값을 확인 하는게 아니라 자동으로 찍히는 로그를 실시간으로 확인 할 수 있어서 이런 경우에는 매우 편하게 쓸 수 있다. 단, strace를 쓰면 그냥 돌릴 때보다 실행 속도가 느려지니 주의하자. [*] 명령어 // 방법 1 strace -if -p // 방법 2 strace -if -p $(pgrep ) [*] 결과 [*] 참고 - https://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_system&no=1859
[*] 목차 - 첫 번째 궁금증: 메모리에 맵핑된 공유 라이브러리의 순서는 실행하는 환경에 상관 없이 언제나 동일한 이유는? - 두 번째 궁금증: 동적 링커는 필요한 공유 라이브러리의 이름을 어떻게 알아내는 것일까? - 세 번째 궁금증: ELF의 DYNAMIC 섹션에 명시되어있지 않은 공유 라이브러리는 어디서 왜 불러온 것일까? - 마무리 - 참고 [*] 첫 번째 궁금증: 메모리에 맵핑된 공유 라이브러리의 순서는 실행하는 환경에 상관 없이 언제나 동일한 이유는? 리눅스에서 동적 링킹으로 컴파일된 ELF 파일을 실행시키면, dynamic linker(ld.so)에 의해 실행에 필요한 공유 라이브러리들을 읽어와 메모리(라이브러리 영역)에 맵핑 시킨다. 그런데 이때 메모리에 맵핑된 공유 라이브러리의 순서는 실..
[*] 이슈 z3에서 미지수를 만들때 사용하는 BitVec()은 기본적으로 모든 미지수를 signed 값으로 취급한다. 때문에 이런 이슈가 발생하게 된다. from z3 import * # 미지수 a0, a1을 1bit 크기의 미지수로 설정 a0 = BitVecs('a0', 1) a1 = BitVecs('a1', 1) s = Solver() s.add(a0 > a1) print(s.check()) print(s.model()) $ python3 z3test.py sat [a0 = 0, a1 = 1] # ?????????????????? 위와 같이 a1의 값이 1로 더 크게 나와버린다. - signed는 최상위 bit를 부호 비트로 사용하여 1이면 음수라고 인식하는데, a0과 a1은 1 bit 크기의 미지..
보호되어 있는 글입니다.