ssunarme의 등록된 링크

 ssunarme로 등록된 티스토리 포스트 수는 30건입니다.

[자료구조] 덱(Deque) [내부링크]

Double-Ended Queue 큐의 front와 rear에서 모두 삽입 삭제가 가능한 큐 연산 create : 덱을 생성한다 init : 덱을 초기화한다. is_empty(dq) : 덱이 비어있는지 검사한다. is_full(dq) : 덱이 가득찼는지 검사한다. add_front(dq, e) : 덱의 앞에 요소를 추가한다. add_rear(dq, e) : 덱의 뒤에 요소를 추가한다. delete_front(dq) : 덱의 앞에 요소를 반환하고 삭제한다. delete_rear(dq) : 덱의 뒤에 요소를 반환하고삭제한다. get_front(dq) : 덱의 앞에 요소를 반환한다. get_rear(dq) : 덱의 뒤에 요소를 반환한다. 이중연결리스트를 이용한 구현 #include typedef int ele..

[자료구조] 큐(Queue) [내부링크]

선입선출(FIFO : First-In First-Out) 먼저 들어온 데이터가 먼저 나가는 것. 맛집 웨이팅처럼! 연산 create : 큐를 생성한다 init : 큐를 초기화한다. is_empty(q) : 큐가 비어있는지 검사한다. is_full(q) : 큐가 가득찼는지 검사한다. enqueue(q, e) : 큐의 뒤에 요소를 추가한다. dequeue(q) : 큐의 앞에 있는 요소를 반환한 다음 삭제한다. peek(q) : 큐에서 삭제하지 않고 앞에 있는 요소를 반환한다. 배열을 이용한 선형큐 front : 첫번째 요소 하나 앞의 인덱스 rear : 마지막 요소의 인덱스 #include #define MAX_QUEUE_SIZE 3 typedef int element; typedef struct { ele..

[baekjoon] 2001 [내부링크]

보석 줍기 문제 n(1 ≤ n ≤ 100)개의 섬이 m(1 ≤ m ≤ 1,000)개의 다리로 연결되어 있다. 각각의 다리는 서로 다른 두 섬을 연결하고 있으며, 서로 다른 두 섬은 최대 한 개의 다리로만 직접 연결되어 있다. 각각의 다리들의 튼튼한 정도는 서로 달라서, 각각의 다리마다 견딜 수 있는 무게의 제한이 다를 수 있다. 섬들 중, K(1 ≤ K ≤ 14)개의 서로 다른 섬에 각각 한 개씩 보석이 있다. 당신은 1번 섬에서 빈손으로 출발하여 최대한 많은 보석을 줍고 1번 섬으로 돌아오려 한다. 주의할 것은, 보석을 너무 많이 줍다 보면 다리를 건널 때 다리가 무게를 견디지 못하고 무너질 수 있다는 점이다. 따라서 당신은 다리가 무너지지 않는 한도 내에서 보석을 주워야 한다. 한 번 지난 적이 있는..

[baekjoon] 16118 [내부링크]

달빛 여우 문제 관악산 기슭에는 보름달을 기다리는 달빛 여우가 한 마리 살고 있다. 달빛 여우가 보름달의 달빛을 받으면 아름다운 구미호로 변신할 수 있다. 하지만 보름달을 기다리는 건 달빛 여우뿐만이 아니다. 달빛을 받아서 멋진 늑대인간이 되고 싶어 하는 달빛 늑대도 한 마리 살고 있다. 관악산에는 1번부터 N번까지의 번호가 붙은 N개의 나무 그루터기가 있고, 그루터기들 사이에는 M개의 오솔길이 나 있다. 오솔길은 어떤 방향으로든 지나갈 수 있으며, 어떤 두 그루터기 사이에 두 개 이상의 오솔길이 나 있는 경우는 없다. 달빛 여우와 달빛 늑대는 1번 나무 그루터기에서 살고 있다. 보름달이 뜨면 나무 그루터기들 중 하나가 달빛을 받아 밝게 빛나게 된다. 그러면 달빛 여우와 달빛 늑대는 먼저 달빛을 독차지하..

[baekjoon] 2212 [내부링크]

센서 문제 한국도로공사는 고속도로의 유비쿼터스화를 위해 고속도로 위에 N개의 센서를 설치하였다. 문제는 이 센서들이 수집한 자료들을 모으고 분석할 몇 개의 집중국을 세우는 일인데, 예산상의 문제로, 고속도로 위에 최대 K개의 집중국을 세울 수 있다고 한다. 각 집중국은 센서의 수신 가능 영역을 조절할 수 있다. 집중국의 수신 가능 영역은 고속도로 상에서 연결된 구간으로 나타나게 된다. N개의 센서가 적어도 하나의 집중국과는 통신이 가능해야 하며, 집중국의 유지비 문제로 인해 각 집중국의 수신 가능 영역의 길이의 합을 최소화해야 한다. 편의를 위해 고속도로는 평면상의 직선이라고 가정하고, 센서들은 이 직선 위의 한 기점인 원점으로부터의 정수 거리의 위치에 놓여 있다고 하자. 따라서, 각 센서의 좌표는 정수..

[c++] ios::sync_with_stdio, cin.tie, cout.tie [내부링크]

백준을 풀다가 시간제한이 발생했는데 해결 방법을 찾다가 아래 코드를 넣어주니까 해결됐었다. tie? sync? 가 뭐길래!! ios::sync_with_stdio(false) cin.tie(nullptr) cout.tie(nullptr) sync_with_stdio(bool) C와 C++ 표준 stream의 동기화 여부를 설정한다. stream이란 프로그램과 입출력을 하는 단말기 사이에 연결된 통로이다. 일반적으로 C와 C++의 stream은 동기화되어 있다. 한 코드 안에서 C와 C++ 스타일을 혼용하더라도 정상적으로 입출력이 가능한 이유이다. 동기화를 해제한다면 C와 C++은 각각 독립적인 버퍼를 가지게 된다. 동기화를 한하기 때문에 연산이 줄어들게 된다. 이게 바로 ios::sync_with_std..

[baekjoon] 3020 [내부링크]

개똥벌레 문제 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 번갈아가면서 등장한다. 아래 그림은 길이가 14미터이고 높이가 5미터인 동굴이다. (예제 그림) 이 개똥벌레는 장애물을 피하지 않는다. 자신이 지나갈 구간을 정한 다음 일직선으로 지나가면서 만나는 모든 장애물을 파괴한다. 위의 그림에서 4번째 구간으로 개똥벌레가 날아간다면 파괴해야하는 장애물의 수는 총 여덟개이다. (4번째 구간은 길이가 3인 석순과 길이가 4인 석순의 중간지점을 말한다) 하지만, 첫 번째 구간이나 다섯 번째 구간으로 날아간다면 개똥벌레는 장애물 일곱개만 파괴하면 된다. 동굴의 크기와..

[baekjoon] 1937 [내부링크]

욕심쟁이 판다 문제 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 대나무를 먹는다. 그런데 단 조건이 있다. 이 판다는 매우 욕심이 많아서 대나무를 먹고 자리를 옮기면 그 옮긴 지역에 그 전 지역보다 대나무가 많이 있어야 한다. 이 판다의 사육사는 이런 판다를 대나무 숲에 풀어 놓아야 하는데, 어떤 지점에 처음에 풀어놓아야 하고, 어떤 곳으로 이동을 시켜야 판다가 최대한 많은 칸을 방문할 수 있는지 고민에 빠져 있다. 우리의 임무는 이 사육사를 도와주는 것이다. n × n 크기의 대나무 숲이 주어져 있을 때, 이 판다가 최대한 많은 칸을 이동하려면 어..

[baekjoon] 2470 [내부링크]

두 용액 문제 KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다. 예를 들어, 주어진 용액들의 특성값이 [-2, 4, -99, -1, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 용액을 혼합하면 특성값이 -1인 용액을 만들 수 있고,..

[TelegramAlarm] 호가 계산하기 (2) [내부링크]

[TelegramAlarm] 시작 [TelegramAlarm] 시작(1) 전략 대부분의 거래소에서 코인 목록은 한 번의 api 호출로 가져올 수 있다. 그런데 이때 제공해주는 코인 가격에 대한 정보는 best_bids, best_asks, last_price 이 정도만 제공한다. 제공하지 않을수도 ssunarme.tistory.com 전략 앞에 글에서 최근 체결가를 기준으로 가격차이가 발생하는 것들을 골라냈다. 그럼 이제 가격 차이가 발생한 두 거래소의 호가를 받아온다. 예시로 FRONT 가 빗썸에서는 304원, 바이낸스에서는 270원이라 하면 수익이 나는 범위를 다음과 같이 설정한다. 수익 범위 = (FRONT의 빗썸 - 바이낸스간의 시세차이) - (BTC의 빗썸 - 바이낸스간의 시세차이) / 2 이유..

[자료구조] 스택(Stack) [내부링크]

후입선출(LIFO : Last-In First-Out) 가장 최근에 들어온 데이터가 가장 먼저 나가는 것. 각티슈에서 가장 위에 있는 것부터 뽑아 쓰는 것처럼! 입력과 출력이 역순으로 필요한 경우 사용한다. (ex. undo, 함수 호출 스택) 연산 init(stack) : 스택을 초기화한다. create() : 스택을 생성한다. push(stack, data) : 데이터를 스택 가장 위에 삽입한다. pop(stack) : 스택 가장 위의 데이터를 삭제한다. is_empty(stack) : 스택이 비어있는지 검사한다. is_full(stack) : 스택이 가득 찼는지 검사한다. peek(stack) : 스택의 맨 위에 있는 요소를 삭제하지 않고 반환한다. 배열을 이용한 스택 #include #define..

[baekjoon] 23354 [내부링크]

군탈체포조 문제 군탈 체포조(Deserter Pursuit)란 탈영병을 추적/체포하는 군인들을 말하며, 줄여서 DP 라고도 한다. 어느 날 군탈 체포조인 호열이에게 활동비와 지도를 주고 탈영병들을 모두 잡아 부대에 복귀하라는 명령이 주어졌는데, 돈을 아껴 봉지라면을 사 먹고 싶은 호열이는 활동비를 최대한 아끼면서 탈영병을 모두 잡으려고 한다. 지도는 N×N 크기의 격자로 표현된다. 지도 위에는 부대와 탈영병들의 위치가 주어지며 부대나 탈영병이 없는 나머지 칸에는 모두 톨게이트가 존재한다. 각 톨게이트에는 내야 하는 통행료가 정해져 있고 톨게이트가 있는 칸을 방문하기 위해서는 반드시 통행료를 지불해야 한다. 또한 같은 칸을 여러 번 방문해도 매번 통행료를 내야 한다. 호열이는 부대에서 출발해 탈영병을 모두..

[TelegramAlarm] 시작(1) [내부링크]

전략 대부분의 거래소에서 코인 목록은 한 번의 api 호출로 가져올 수 있다. 그런데 이때 제공해주는 코인 가격에 대한 정보는 best_bids, best_asks, last_price 이 정도만 제공한다. 제공하지 않을수도 있다. T.T best_bids : 가장 위에 있는 매수 호가 best_asks : 가장 밑에 있는 매도 호가 last_price : 마지막 체결 가격 각 거래소별 코인 목록과 최근 거래가를 가져오고 거래별로 조합해서 겹치는 코인에 대한 차이를 계산한다. { "currency_pair": "BTC_USDT", "last": "27314.9", "lowest_ask": "27314.9", "highest_bid": "27312.1", "change_percentage": "-2.52"..

[Arbitrage Extension] 일단 여기까지...(2) [내부링크]

거래소에서 제공해주는 API를 통해서 가격데이터를 받아왔고 거래소 별로 키 값, 구조 등등.. 여러가지가 달라서 하나의 형식으로 맞춰줬다. 그 이후에는 그냥 단순하게 하나의 거래소를 기준으로 잡고 다른거래소와의 차이를 계산했다. 되돌아보면 너무 단순한 코딩이 된 것 같은데...ㅠㅠ 그리고 아직 공부가 부족해서인지 크롬 확장프로그램 개발중 여러 제약이 많아서..!! 우선 방향을 바꾸기로 했다. ㅎ 확장프로그램은 아래 사진처럼 단순히 거래시세만 볼 수 있게 사용하고 실제 호가에 따른 수익 발생 여부, 텔레그램 알림은 node.js에서 돌리기로... 배울 수 있었던 점. 1. chrome.storage 를 처음으로 사용해봤다. 2. JS 문법..? 3. 역시 생각했던거를 구현해내는건 어렵다. (공부..

[baekjoon] 7569 [내부링크]

토마토 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지 그 최소 일수를 알고 ..

[온체인] 빗썸 립체인 설거지를 피할 수는 없었을까? [내부링크]

※ 단순 분석일뿐 진실은 알 수 없습니다. 이틀만에 저점에서 고점대비 120배? 이런 상승이 가능했던 이유는 가두리가 있었기 때문이다. REAP 코인은 49억개 발행에 27억개 소각으로 2022년 4분기 기준 766,500,000개 유통중이다. (온체인상으로는 모르고 유통계획상) 26원기준 약 200억의 시총이다 그렇다면 고점 기준 시총이 3.5조...? 이런 상승이 가능했던 이유는 가두리였기 때문이다. (가두리라고 무조건 오르는건 아니다. 결국 누군가의 손길이 들어가야...) 흔히 말하는 가두리란 네트워크 점검, 지갑 점검 등의 이유로 입금이 불가능한 상태를 말한다. 이번의 경우에는 이더리움 상하이・카펠라 업그레이드로 4월 12일 18시부터 ERC 계열 코인들이 입출금이 불가능했다. 국내 거래소 빗썸과..

[Arbitrage Extension] 시작(1) [내부링크]

Arbitrage란? 차익거래라고도 하며 동일한 상품 가격이 두 시장에서 다를 때 저렴한 시장에서 매입한 상품을 비싼 시장에서 매도해 이익을 얻는 거래이다. 그래서 뭘 만드는데? 차익거래에 편리함을 위해 각 거래소별 차이를 보여주는 확장프로그램을 만든다. 이미 암호화폐 트레이딩하는 사람들이 시세차이를 볼때 주로 보는 사이트가 있다. 그럼에도 만드는 이유는 두 가지가 있다. 1. 위 사이트는 최근 체결가를 토대로 시세차이를 비교해준다. 거래량이 없어서 최신 체결가와 호가가 맞지 않는 경우가 있다. 2. 위 사이트는 비교 대상을 국내중 1곳, 해외 중 1곳을 고를 수 있는데 내가 설장한 거래소외에서 시세 차익이 발생하면 놓칠 수 밖에 없다. 하지만 난 처음인걸... 1. JS 공부하기 2. 크롬 확장프로그램..

[baekjoon] 7453 [내부링크]

합이 0인 네 정수 문제 정수로 이루어진 크기가 같은 배열 A, B, C, D가 있다. A[a], B[b], C[c], D[d]의 합이 0인 (a, b, c, d) 쌍의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다. 출력 합이 0이 되는 쌍의 개수를 출력한다. 예제 입력 6 -45 22 42 -16 -41 -27 56 30 -36 53 -37 77 -36 30 -75 -46 26 -38 -10 62 -32 -54 -6 45 예제 출력 5 풀이 이전에 풀었던 2470번 두 용액 문제와 비슷하다고 생각했다. 두..

[baekjoon] 1194 [내부링크]

달이 차오른다, 가자. 문제 지금 민식이가 계획한 여행은 달이 맨 처음 뜨기 시작할 때 부터, 준비했던 여행길이다. 하지만, 매번 달이 차오를 때마다 민식이는 어쩔 수 없는 현실의 벽 앞에서 다짐을 포기하고 말았다. 민식이는 매번 자신의 다짐을 말하려고 노력했지만, 말을 하면 아무도 못 알아들을 것만 같아서, 지레 겁먹고 벙어리가 되어버렸다. 결국 민식이는 모두 잠든 새벽 네시 반쯤 홀로 일어나, 창 밖에 떠있는 달을 보았다. 하루밖에 남지 않았다. 달은 내일이면 다 차오른다. 이번이 마지막기회다. 이걸 놓치면 영영 못간다. 영식이는 민식이가 오늘도 여태것처럼 그냥 잠 들어버려서 못 갈지도 모른다고 생각했다. 하지만 그러기엔 민식이의 눈에는 저기 뜬 달이 너무나 떨렸다. 민식이는 지금 미로 속에 있다. ..

[baekjoon] 12100 [내부링크]

2048 (Easy) 문제 2048 게임은 4×4 크기의 보드에서 혼자 즐기는 재미있는 게임이다. 이 링크를 누르면 게임을 해볼 수 있다. 이 게임에서 한 번의 이동은 보드 위에 있는 전체 블록을 상하좌우 네 방향 중 하나로 이동시키는 것이다. 이때, 같은 값을 갖는 두 블록이 충돌하면 두 블록은 하나로 합쳐지게 된다. 한 번의 이동에서 이미 합쳐진 블록은 또 다른 블록과 다시 합쳐질 수 없다. (실제 게임에서는 이동을 한 번 할 때마다 블록이 추가되지만, 이 문제에서 블록이 추가되는 경우는 없다) 입력 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수..

[baekjoon] 14502 [내부링크]

연구소 문제 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다. 예를 들어, 아래와 같이 연구소가 생긴 경우를 살펴보자. 2 0 0 0 1 1 0 0 0 1 0 1 2 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 ..

[baekjoon] 16234 [내부링크]

인구 이동 문제 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 동안 연다. 위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다. 국경선이 열려있어 인접한 칸만을 이용해 이동할 수 있으면, 그 나라를 오늘 ..

[baekjoon] 1090 [내부링크]

체커 문제 N개의 체커가 엄청 큰 보드 위에 있다. i번 체커는 (xi, yi)에 있다. 같은 칸에 여러 체커가 있을 수도 있다. 체커를 한 번 움직이는 것은 그 체커를 위, 왼쪽, 오른쪽, 아래 중의 한 방향으로 한 칸 움직이는 것이다. 입력 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 각 체커의 x좌표와 y좌표가 주어진다. 이 값은 1,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 수 N개를 출력한다. k번째 수는 적어도 k개의 체커가 같은 칸에 모이도록 체커를 이동해야 하는 최소 횟수이다. 예제 입력 4 15 14 15 16 14 15 16 15 예제 출력 0 2 3 4 풀이 체커를 최소로 이동시켜 k개의 체커가 같은 칸에 모이도록하는 좌표..

[baekjoon] 21315 [내부링크]

카드 섞기 문제 마술사 영재는 카드 더미를 이용한 마술을 개발하였다. 카드들에는 1부터 N까지의 숫자가 적혀있으며 초기 상태에는 1이 맨 위에 있으며 N개의 카드가 번호 순서대로 쌓여있다. 영재는 마술을 위해 (2, K) - 섞기를 만들었다. (2, K) - 섞기는 총 K + 1개의 단계로 이루어져있다. 첫 번째 단계는 카드 더미 중 밑에서 2K개의 카드를 더미의 맨 위로 올린다. 이후 i(2 ≤ i ≤ K + 1)번째 단계는 직전에 맨 위로 올린 카드 중 밑에서 2K - i + 1개의 카드를 더미의 맨 위로 올린다. 예를 들어, 카드의 개수가 5개 일 때 초기 상태에서 (2, 2) - 섞기를 하는 과정은 다음과 같다.(괄호 내에서 왼쪽에 있을수록 위에 있는 카드이다.) (1, 2, 3, 4, 5) → ..

[NOX2018] - believeMe [내부링크]

fsb가 발생한다. flag를 출력해주는 함수도 있다. fflush의 got를 덮으면 될 것 같았지만 noxFlag 함수에서도 fflush를 사용하면서 루프에 빠지게 된다. 문제에서 aslr이 꺼져있다는 정보를 통해서 stack leak을 하고 ret의 주소에 fsb를 통해 덮으면 될 것 같다. local에서 계산한 offset을 통해 ret지점을 계산해 내려고 했지만 서버의 offset과 차이가 있어서 반복을 통해 ret 주소를 얻어 낼 수 있었다.

[NOX2018] - TheNameCalculator [내부링크]

read 함수에서 bof 가 발생해서 v4를 덮는것이 가능하다. 이를 통해 if 문에 맞는 값으로 v4를 덮어 secretFunc 함수를 실행가능하다. 글자수만큼 반복문이 돌아가면서 buf에서 +1 씩 주소가 증가하면서 0x5F7B4153과 xor 연산을 한다. 그리고 마지막에 fsb가 발생한다. flag를 얻을 수 있는 superSecretFunc 함수가 있다. fsb를 통해 exit got overwrite를 해주면 main 에서 exit 함수를 호출할 때 exploit이 가능하다.

[Toddler's Bottle]fd [내부링크]

Fd 0 : 표준입력 STDIN 1 : 표준출력 STDOUT 2 : 표준에러 STDERR 표준입력을 해야하는 상황이므로 0x1234 (4660) 을 인자로 입력해준다. 그리고 LETMEWIN을 입력하면 완료.

[Toddler's Bottle]blukat [내부링크]

단순히 입력값과 password 속 값과 같으면 flag를 출력해준다. password 파일 그룹권한에 r이 있는데 계정의 권한을 확인해보면 해당 그룹에 속해있다. 당황할 수도 있지만 저게 파일안의 내용이다..

[Toddler's Bottle]blackjack [내부링크]

코드가 굉장히 길지만 이 부분만 보면된다. 배팅 금액을 입력하게 되는데 보유한 금액보다 더 많은 금액을 입력한 후 다시 입력했을때는 다시 검사를 하지 않는다. 그렇기때문에 큰 금액을 두 번 입력해주면 된다.

[Toddler's Bottle]passcode [내부링크]

login 함수에 scanf("%d", passcode1) 부분을 보면 passcode1에 저장된 값에 입력 값을 저장하게 된다. 그리고 welcome 함수에서 100byte를 입력 받는데 마지막 4byte가 passcode1의 영역이다. 즉 4byte 만큼 원하는 위치(passcode1 에 입력한 위치)에 값을 입력하는 것이 가능해진다. login 함수에 scanf("%d", passcode1) 이후에 실행될 아무 함수의 GOT를 system("/bin/cat flag") 부분으로 Overwrite 해주면 클리어다!