전체 글

전체 글

    Overthewire : Bandit  Level 1 ~ Level26

    Overthewire : Bandit Level 1 ~ Level26

    마크다운으로 했는데 이미지를 많이 넣었더니 수정하기가 귀찮다..... 그래서 걍 pdf 로 올려놔야겠다... 아님 이걸로도 볼 수는 있다 www.notion.so/week-1-db52270206584ba9b10cfc0b8a4e05ff

    webhacking.kr : challenge 33

    webhacking.kr : challenge 33

    첫번째 소스코드는 다음과 같다. Challenge 33-1 view-source ?get=hehe를 넣어줬다. _____________________________________________________________________________________ 다음 소스코드가 나왔는데 Challenge 33-2 view-source 이번에는 get 방식이 아니라 post 방식으로 받는다. 즉 입력을 다른 방식으로 해주되, post랑 post2로 해줘야한다. 문제 출제의도자체가 get이랑 post 차이점을 파악하는거 같다. get 방식 자체는 ?를 이용해서 input값을 넣어주어야 하는데, post 방식은 그게 아니고, 코드 안에 직접 넣어주는 형태로 들어간다. 즉 소스코드에 다음과 같이 추가해준다. ..

    webhacking.kr : challenge 27

    필터링 항목부터 체크하자 if(preg_match("/#| select | \( | | limit | = | 0x /i",$_GET['no'])) exit("no hack"); select, \(, limit, =, 0x를 필터링한다. 못봤는데 공백도 필터링한다. $r=mysqli_fetch_array(mysqli_query($db,"select id from chall27 where id='guest' and no=({$_GET['no']})")) or die("query error"); 여기서 인증을 해주는데, GET방식으로 가져오는거 확인했다. 가져오는 대상은 no다 . where id ='guest' and no=('false') or id='admin' and no=('2') 를 주면 될 거같은..

    webhacking.kr : challenge 25

    일단 flag.php 를 열어보면, FLAG is in the code 라고 나오는데, hello 파일은 기본으로 열려있는 것이고, index 에는 아무것도 들어있지 않다. 일단 개발자 도구에 있는 파일을 index.php?fille=flag 파일이다. 즉 우리가 원하는 flag.php가 아니다. RFI 와 LFI (Local File Inclusion) 공격을 이용해서 할 수 있다고 한다. 여기서는 LFI를 사용하는데, php 코드상에서 include() 사용시 input 에 대한 적절한 필터링이 이루어지지 않아 발생하는 취약점이라고 한다. 우선 wrapping 방식들 중에서 php://filter 를 이용해서 푼다. 주로 인코드/디코드 옵션을 이용해서 서버안의 문서를 열람할 수 있다. 파일값을 bas..

    webhacking.kr : challenge 24

    webhacking.kr : challenge 24

    여기서 모르는 것부터 먼저 찾아봅시다. htmlspecialchars(); -> 특수문자를 일반 문자열로 인식할 수 있도록 바꿔주는 역할. ip = 127.0.0.1 이 되면 인증이 될 것 같다. 이렇게 넣어주게 된다면 127.0.0.1 ->7.0.0.1->0.0.1->1 이렇게 된다. 역과정을 보면 112277...0.0.1 127.1 0.0. 이 없어지는 것을 우회하면 될듯 112277...00...00...1 정답

    webhacking.kr : challenge 23

    webhacking.kr : challenge 23

    Your mission is to inject 이게 궁극적 목표다 일단 제출 칸의 값의 이름은 code다. 필터링 목록이 없다. 알파벳을 연속되게 해주면 필터링하는거같다. 일단 html로 인코딩해서 넣어주었다. Your mission is to inject alert(1); 이렇게 들어갔는데 왜 안되누 일단 이게 코드값으로 들어가서 안되는거같다. 이걸 실행으로 해주려면 .. 문자 사이사이에 NULL문자를 넣어주면 된다. 그러면 필터링에 안걸리니까 ?code=a%00l%00e%00r%00t%00(1);

    webhacking.kr : challenge 22

    webhacking.kr : challenge 22

    admin 으로로그인 해야되는게 목표다. 회원가입창이 있으니까 일단 간단하게 가입해서 로그인 해보자. hi! starson1 your password hash : bf69a4c3b0da457bf159b60ca2ff230a 이렇게 로그인 해쉬를 준다. 실제로 비밀번호를 해쉬해서 보관하나 보다. decode 해보자. md5 로 해쉬되어있으면서 뒤에 apple이라는 값이 별도로 붙는다 (salt)인듯. 컬럼 이름은 id pw 로 주어진 상황이다. 즉 이렇게 생겼겠지. id pw guest ~~ admin ~~~ starson1 hash('2019330012+apple') 로그인 창 자차에서 인젝션을 시도하기는 힘들듯 하다.ㅠㅠ 해쉬되버려서, join 에서 admin 값으로 아이디를 만들수 있다면 할수 있을 것..

    webhacking.kr : challenge 21

    제목에 대놓고 Blind SQL Injection 이라고 써있다. 별도의 소스는 없어서 필터링 항목이 뭔지는 모르겠다. 국룰로 id : guest pw : guest 를 넣어본 결과 login success 가 떴다. guest의 비밀번호를 찾아보는 식으로 해보자. union에 필터링 걸려있는거같다. id=%27admin%27%20and%20length(pw)>0%23&pw=1 참인 문장을 주었을 때 wrong password 라고 나온다. 거짓인 문장을 주면 login fail이라고 나온다. 참거짓을 판단할 수 있으니 다했다. python 코드 짜서 보자 found the length : 36 길이가 36이다. 이제 문자열을 찾아주면 되겠지 import requests url="https://webha..