본문 바로가기

분류 전체보기278

[TIL] 2024.11.08 ~ 2024.11.09 보호되어 있는 글 입니다. 2024. 11. 9.
[TIL] 2024.11.07 11.07 유저 프로필 조회 로직 수정 어제 특정 유저의 기록을 볼 수 있는 api를 연결해서 유저의 프로필 화면을 보면 전체 공개인 기록들을 볼 수 있게 했고, 팔로잉 중인 유저일 경우 팔로워 한정 공개인 기록 또한 볼 수 있도록 구현했다.하지만 내 프로필을 볼 경우에는 내가 나를 팔로잉 중이지 않기 때문에 팔로워 한정 공개인 기록들이 나에게 보이지 않는 문제가 있었다.  백엔드 팀원과 상의한 결과, api를 수정할 시간이 부족해서 프론트 단에서 처리를 하게 되었다.  내 기록만 모아 볼 수 있는 api는 정상적으로 기록이 잘 뜨기 때문에 유저 프로필을 불러올 때 프로필을 조회하고자 하는 유저 id가 로그인 중인 id와 같다면 내 기록을 불러오는 getmyRecord 함수를 호출하고, 그렇지 않을 경우.. 2024. 11. 7.
[TIL] 2024.11.06 11.06 특정 유저 기록 조회 api 연결 진행중인 프로젝트에서 유저 프로필 조회를 하면 해당 유저가 남긴 기록들을 볼 수 있는 기능이 있다.해당 기능을 하는 api가 완성되지 않아 임시로 내 기록만 불러오는 api를 연결해두었는데, 드디어 완성되어서 api 연결 작업을 했다.  처음에 api만 추가하고 myRecord에서 userRecord로 바꿔주었더니 아래 사진처럼 아무것도 안 뜨는 상황이 발생했다. 왜 그런가 했더니 바보같이 테이블뷰에서 데이터를 불러오는데 사용하는 로직들까지 바꾸지 않았던 것이었다...   수정하는 과정에서 데이터를 불러오는 함수는 userRecord로 잘 바꿨으면서 불러온 데이터를 테이블뷰 셀에 적용하는 코드들은 여전히 myRecord에 한한 코드였었다... 그래서 기존 my.. 2024. 11. 6.
TIL 기록을 시작하며... TIL이란? TIL은 Today I Learned의 약자로, 간단하게 정리하자면 오늘 하루동안 내가 배운것을 정리하는 것이다.  어떤 내용을 쓸 것인가? 포멀한 규칙을 정해서 쓸 생각은 아니고 상당히 자유로운 방식으로 일기 적듯이 편하게 적을 생각이다. 강의 내용 정리무엇에 대한 강의였는지, 기억에 남는 내용은 무엇인지, 실제 적용해보는 과정이 있었다면 어떤 어려움이 있었는지 등프로그래밍 문제 풀이 과정 정리문제 해결 알고리즘은 무엇인지, 어려움이 있었다면 무엇인지 등개발 공부 내용 정리어떤 내용을 공부했는지, 개발 관련이면 어떻게 개발하는지 등프로젝트 진행 과정 정리어떤 내용을 진행했는지, 어떤 어려움이 있었는지, 에러가 있었다면 어떤 과정을 거쳐 해결했는지 등하루 돌아보기팀원과 회의를 했다면 무슨 일.. 2024. 11. 3.
[BOJ] 2022 SISS 2학기 스터디 - 4주차 #5568 : 카드 놓기 (자료구조 Silver 4) [문제] [코드 및 결과] #include #include #include using namespace std; int n, k; bool check[10]; vector v; set s; void solve(int cnt, string str) { if (cnt == k) { s.insert(stoi(str)); } for (int i = 0; i < n; i++) { if (check[i] == true) { continue; } check[i] = true; string result = str; result += to_string(v[i]); solve(cnt + 1, result); check[i] = false; } } int main() {.. 2022. 10. 2.
[Dreamhack System Hacking Advanced] STAGE 4 - 혼자 실습 보호되어 있는 글 입니다. 2022. 9. 25.
[Dreamhack System Hacking Advanced] STAGE 4 - 함께 실습 Exploit Tech: overwrite _rtld_global 프로그램에서 리턴 명령어를 수행하면 라이브러리와 로더에서 다양한 함수를 호출하면서 정상 종료한다. 이 과정에서 읽고 쓸 수 있는 영역에 존재하는 함수 포인터를 호출하기 때문에 임의 주소 쓰기 취약점이 있다면 해당 포인터를 덮어써서 프로그램의 실행 흐름을 조작할 수 있다. 코드 분석 다음은 이번 실습에서 사용할 코드이다. // Name: ow_rtld.c // Compile: gcc -o ow_rtld ow_rtld.c #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int main() { long addr; long data; int i.. 2022. 9. 25.
[Dreamhack System Hacking Advanced] STAGE 4 Background: _rtld_global 이번에는 프로그램을 종료하는 과정을 이용한 공격 기법을 알아보기에 앞 라이브러리의 코드를 분석하면서 어떤 방식으로 프로세스를 종료하는지 알아보도록 하자. 다음 코드는 종료하는 과정을 알아보기 위한 예제로, 컴파일해두자. // Name: rtld.c // Compile: gcc -o rtld rtld.c int main() { return 0; } _rtld_global __Gl_exit 바로 위에서 컴파일한 예제 코드는 별다른 코드를 실행하지 않고 프로그램을 종료한다. 프로그램을 종료할 때에는 우리가 모르는 많은 코드들이 내부적으로 실행되는데, 디버깅으로 한번 살펴보자. 먼저 다음과 같이 main 함수 내 리턴하는 명령어에 BP를 설정하고, step into를.. 2022. 9. 25.
[BOJ] 2022 SISS 2학기 스터디 - 3주차 #1269 : 대칭 차집합 (자료구조 Silver 4) [문제] [코드 및 결과] #include #include using namespace std; int main() { int N, M, num; map m; cin >> N >> M; for (int i = 0; i > num; if (m[num] == true) { m.erase(num); } else { m[num] = true; } } cout num; if (m[num] == true) { m.erase(num); } else { m[num] = true; } N과 M을 입력받아 N+M만큼 반복하는데, 수를 입력 받을 때마다 이 수가 map에 없으면 m[num]을 true로 바꿔주고, 이미 그 값이 tr.. 2022. 9. 25.