본문 바로가기

분류 전체보기

(128)
dvwa file inclusion 저희는 웹 개발을 할 때 자주 쓰는 파일들을 만들어 두고 그 파일을 불러와 사용하는 경우가 있습니다. 예를 들면 아래 그림의 윗부분을 모든 페이지마다 만들려면 너무 힘듭니다. 만약 메뉴가 하나라도 추가되면 모든 페이지를 다 수정해 줘야 합니다. 이를 막기 위해 미리 메뉴를 만들어 두고 그 파일을 불러오는 것입니다. 그렇다면 불러오는 파일을 저희가 지정할 수 있다면 악성 코드를 실행할 수도 있을 것입니다. dvwa의 file inclusion으로 가봅시다. 위의 경로를 보면 page=include.php가 있는 것을 볼 수 있습니다.(물론 이렇게 대놓고 있는 경우는 없을 것입니다.) include.php를 /etc/passwd로 바꿔 봅시다.위에 유저 정보들이 쭉 나오는 것을 알 수 있습니다. 그럼 이 전..
dvwa 파일 업로드 취약점 virtual box에서 dvwa와 kali 리눅스를 실행합니다.dvwa에서 ifconfig를 입력해서 ip를 알아내고 kali 리눅스에 입력합니다.id는 admin password는 password로 바꿔서 로그인 하고 security level을 low로 바꿔줍니다. 이제 왼쪽 탭에서 upload 탭을 누르면 모든 준비가 끝납니다. leafpad를 쓰든 vi를 쓰든 해서 test_php.php 파일을 만듭니다. 해당 파일에를 입력해 줍니다. 이제 이 파일을 업로드 해 줍니다. 아주 친절하게 어디에 업로드가 되었는지 다 알려줍니다. 해당 경로로 들어가 봅시다.저희가 올린 파일이 실행되는 것을 볼 수 있습니다. 만약 hello가 아니라 악성 코드가 들어있다면 저희는 이 사이트를 털 수 있습니다. 터미널에..
dvwa sql injection 저번에 구축한 dvwa 실습 환경을 실행하고 ifconfig를 터미널에 입력해 줍니다. 그렇게 나온 ip을 브라우저에 입력해 주고 id에 admin, password에 password를 입력해 줍니다. 그리고 왼쪽에 있는 sql injection으로 들어가 줍니다.  유저 아이디를 넣으면 해당 정보가 나오는 창인 것 같습니다. 1을 넣어봅시다.아마 sql 쿼리가select * from user where id='{입력}' 이런 형식일 것 같네요. 그럼 입력으로 1' or '1'='1을 넣으면 어떻게 될까요? select * from user where id='1' or '1'='1' 이 되면서 모든 정보를 출력할 수 있습니다.
30294 - Flea 문제 번역더보기$N*M$크기의 격자 칸에 벼룩을 잡기 위한 트랩을 만들어 두었습니다. 이 트랩에는 약한 방향(상, 하, 좌, 우)이 있어 해당 방향으로 벼룩이 도망갈 수 있습니다. 벼룩의 최대 점프력은 $K$입니다. 벼룩이 $N*M$ 칸을 벗어나면 탈출했다고 표현합니다.벼룩이 여러 번 점프를 해서 탈출할 수 있는 칸의 개수를 모두 구하십시오.step 1더보기각 격자칸을 정점으로 생각합니다. 벼룩이 칸 $A$에서 칸$B$로 이동할 수 있다면 $B$에서 $A$로 가는 간선을 그려줍니다. 탈출할 수 있는 칸을 전부 구한 다음 그 위치에서 BFS를 돌리면 답을 구할 수 있습니다.step 2더보기각 칸마다 $K$개의 간선이 나올 수 있으므로 $N*M*K$의 시간이 필요합니다. 하지만 이러면 시간초과가 나옵니다.다..
14679 - 영우와 ‘갓4’ step 1더보기전투를 1000번만 치루면 모든 스탯이 몬스터보다 높고 공격도 먼저 합니다. 즉, 이 이후로는 항상 이긴다고 생각할 수 있습니다.step 2더보기현재 몬스터의 스탯을 알고 있을 때 다음 몬스터의 스탯은 $\log n$(https://codestudycafe.tistory.com/2)에 알 수 있습니다.step 3더보기몬스터는 50,000,000마리가 있고 모든 몬스터의 상태를 계산해 주긴 해야합니다. dp를 만들어서 해결할 수 있습니다. dp[i][j][k]: 현재 몬스터의 공격력이 i, 방어력이 j, 체력이 k일 때 다음 몬스터의 공격력, 방어력, 체력 이 dp를 만들면 시간을 줄일 수 있습니다.코드더보기#define _CRT_SECURE_NO_WARNINGS#include#includ..
11401 - 이항 계수 3 step 1더보기페르마 소정리에 의하면 $p$가 소수일 때 $a^{p-2} = a^{-1}$입니다. 즉, $x/y \pmod{p} = x*(y^{-1})\pmod{p} = x*(y^{p-2})\pmod{p}$ 입니다.step 2더보기${n \choose k} = \frac{n*(n-1)*...*(n-k+1)}{1*2*...*m}$ 입니다. 분모와 분자를 각각 계산한 다음 모듈러를 취해주면 됩니다.코드더보기#includelong long int pow(long long int x, long long int y) { if (y == 1) return x; if (y == 0) return 1; long long int p = pow(x, y / 2); if (y % 2 == 1) return p * p % ..
[논문 리뷰] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks faster R-CNN은 R-CNN(https://codestudycafe.tistory.com/63)을 조금 더 빠르게 바꾼 모델입니다. R-CNN에서 어떤 것이 달라졌는지로 시작해 보겠습니다.무엇이 달라졌나?R-CNN은 2000개의 영역을 뽑아내고(resion proposal) 각 영역에 대해 CNN을 돌립니다. 그러면 CNN을 2000번 돌리게 되는데 이것을 한 번으로 줄였습니다.end-to-end 학습이 가능합니다. SVM을 제거해서 한번에 학습이 가능합니다.3개의 모델을 합쳐서 만들었습니다.(CNN, resion proposan network, fast R-CNN)어떻게 진행되나?다음 과정을 거칩니다.먼저 CNN을 통과시켜 feature map을 뽑아냅니다.resion proposal netwo..
[논문 리뷰] Rich feature hierarchies for accurate object detection and semantic segmentation(R-CNN) 이 전의 논문 리뷰에서는 모델의 구조에 집중을 했었습니다. 이 논문에서 딥러닝스러운 부분은 사실 cnn이 전부고 이미지를 전처리하는 데에 신경을 많이 쓰고 있습니다. 따라서 이 리뷰도 전처리에 신경을 쓰도록 하겠습니다. 무엇을 하는 녀석인가각 객체들이 어디에 있는지 찾아주는 인공지능입니다.개요객체를 탐지하는데 크게 3 단계를 거칩니다.각 이미지를 적절한 영역(2000개)로 나눕니다.각 영역을 cnn에 넣습니다.그렇게 나온 정보를 이용해서 어떤 객체인지 분류합니다. 적절한 영역을 어떻게 나누는가?이 논문에서는 selective search 기법을 사용해서 구역을 나누었습니다. 헷갈릴 수 있으니 용어부터 잡고 진행합니다. resion proposal : 객체가 있을 만한 곳을 찾는 것selective sea..
ip 위치 추적 가끔 보면 ip로 위치 추적을 한다는 이야기를 듣습니다. 완벽한 것은 아니지만 대략 어디에 있는지 정도는 알 수 있습니다.집 위치 추적우선 자신의 집 주소를 알아낸다고 해 봅시다. cmd 창을 열어 ipconfig를 입력해 ip을 알아냅니다. 이제 ip location을 구글에 검색해서 해당 사이트에 들어갑니다(https://www.iplocation.net/).여기에 ip를 입력하면 위치가 나옵니다. 정확히 일치하거나 그러진 않지만 어느 지역인지는 대략적으로 알 수 있겠네요.남의 컴퓨터 위치 추적구글의 서버 위치를 알아봅시다. 다시 칼리 리눅스를 열고 터미널에 apt install dnsutils를 입력합니다. dns와 관한 일을 할 수 있게 해줍니다.이제 nslookup을 입력하고 www.google..
opencv - 프로젝트 2 - 3. 카드 인식 이전 프로젝트(https://codestudycafe.tistory.com/51)에서 전처리를 했습니다. 이번에는 직접 학습을 시켜 줍시다.그전에생각해 보니 모델의 마지막 레이어는 (None, 200, 200, 1)이 됩니다. 이 형식에 train_label을 맞춰줍시다.모델 생성이제 모델을 만들어 봅시다.from keras.layers import Dense, Input, Conv2D, MaxPool2D, Conv2DTranspose, Cropping2D, Concatenatefrom keras.models import Modelfrom keras.activations import sigmoidinput = Input(shape=(200,200,3))c_1_1 = Conv2D(32,(3,3),paddi..