KDHzoot's Github

Code for study, project, etc

자세히보기

전체 글 90

[pwnable.kr] echo1

NX는 안걸려있지만 서버환경상 aslr이 걸려있으므로 스택영역에 쉘코드를 쓰고 그 주소를 RET값에 넣는 방법은 안된다. bss영역은 aslr이 적용되어도 주소가 변하지 않음으로 id가 bss영역에 있는 것을 이용하여 쉘코드를 실행 시킬 수 있다. 버퍼오버플로우가 발생하는 echo1함수다. 먼저 id에 "\xff\xe4" 값을 넣는다.이는 어셈블리어로 jmp esp명령어와 같다. >>> payloaddump(40) + id_addr(8) + shellcodex64는 주소가 8바이트이다.쉘코드도 x32와 다른 코드를 사용해야한다. echo1함수의 에필로그에서 leave ret후 eip는 id의 주소를 가르키고 esp는 id_addr다음 쉘코드를 가르키게된다.id에는 jmp esp명령이 있으므로 eip가 e..

[백준 14442] 벽 부수고 이동하기 2

다익스트라와 dp를 사용한 문제 dp[x][y][k]로 dist배열을 선언한다.x,y까지 벽을 k만큼 뚫으면서 갔을 때 최단거리 기본적으로 bfs를 돌리면서 dp배열을 업데이트 시켜준다.que에는 다 넣을 필요 없이 dp배열을 업데이트 시킬 때마다 넣어준다. 출처 : http://wookje.dance/2017/02/22/boj-14442-%EB%B2%BD-%EB%B6%80%EC%88%98%EA%B3%A0-%EC%9D%B4%EB%8F%99%ED%95%98%EA%B8%B0-2/ 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869..

알고리즘/PS 2018.07.23

[백준 14432] 우물

출력범위가 int를 벗어나는 것을 주의하면 된다. 아무 노드나 루트 노드로 잡고 A노드에 있을 때, 자식 노드가 B, C, D가 있으면A노드는 자식 B, C, D가 요구하는 우물 중 가장 큰 수만큼 우물을 지으면 되고,A노드는 자신의 부모에게 자신이 필요한 우물에서 자신과 자식노드에 있는 우물의 수만큼을 뺀 값을 요구한다. 위 방식으로 dfs를 하면 최적의 값이 나온다.

알고리즘/PS 2018.06.06

[백준 14671] 영정이의 청소

곰팡이가 이동하는 것을 보면 좌푯값 i, j의 i+j가 짝수인 줄과 홀수인 줄이 독립적이라는 것을 알 수 있다.그리고 시간이 무한히 흘러간다고 가정하면 곰팡이가 한번 증식할 때마다 i의 좌표가 짝수->홀수, 홀수->짝수로 감을 알 수 있다. 따라서 초기 곰팡이의 위치가 4가지 경우가 모두 있으면 된다.i+j가 홀수고 i가 홀수i+j가 홀수고 i가 짝수i+j가 짝수고 i가 홀수i+j가 짝수고 i가 짝수 123456789101112131415161718192021222324252627#include #include using namespace std;bool chk[2][2]; int main(void) { int n, m, k; scanf("%d %d %d", &n, &m, &k); for (int i =..

알고리즘/PS 2018.05.26

[백준 14670] 병약한 영정

간단한 매핑문제배열을 -1로 초기화 해놨지만 입력되는 증상이 배열의 크기를 초과해 고칠 수 없지만 0을 받아오는 경우가 생겼다.고쳐야하는 증상 S가 범위가 없음을 유의하면 된다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include using namespace std;int n, m;int arr[105];int brr[105]; int main(void) { int a; scanf("%d", &n); memset(arr, -1, sizeof(arr)); for (int i = 0; i

알고리즘/PS 2018.05.26