분류 전체보기

    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..

    webhacking.kr : challenge 20

    먼저 맨 위에 time limit: 2second 가 있다. nickname 과 comment 를 입력해주고 captcha를 적어줘야할꺼같다. 2초안에 하려면, 제한시간을 늘려주거나, timer를 멈춰주어야한다. st가 timer 역할을 해주는것같은데 시작 타이머 값을 늘려주었다. 너무 늘려준건지 No cheat 문구가 뜬다 이렇게 하는게 맞는듯 대충 중간값에 끼도록 범위에 넣고 Burp suite 를 이용해서 공격해줬다. 근데 이게 되려면 하나 공격하는데 걸리는 시간이 1초보다 짧아야 될텐데 느리다. 일단 python 으로 해서 해보자. 먼저 파이썬으로 해야하는 것을 적어보자면 ________________________________________ 웹사이트에서 captcha 값을 읽어와야한다. 그리고..

    webhacking.kr : challenge

    webhacking.kr : challenge

    admin 을 제외하고 다른 아이디로는 다 로그인이 된다. guest도 되고, admin으로 로그인하면 3초걸리고 timeout되서 나가진다. 일단 입력은 get 방식으로 받는데 코드를 보고싶다. 이거는 admin을 아이디로 쳤을 때 코드값이다. 3초뒤에 정해진 url로 이동하는 것이다. 그래서 admin으로 들어가 있는 동안, 주소 뒤에 ./을 넣어줬더니 풀렸다. 이유를 생각해보자 부분에서 http-equiv ="refresh"는 새로고침 해주는 역할이라고한다. content에서 3은 리프레쉬하는 시간이고, url은 이동 url이라고 한다. 정확히는 id를 admin./로 주면 일어나는 일이었다. 참 신기한데 이유를 모르겠는데 입력으로 admin./a 를 주면 admina가 나온다. 즉 아무 의미없는 ..

    webhacking.kr : challenge 14

    문제를 보아하니 기본적인 sql injection 문제같다. 근데 function을 보면 아닌거같다. function ck(){ var ul=document.URL; // 주소를 문자열로 반환 ul = www. ~ ul=ul.indexOf(".kr"); // ul = 18 ul=ul*30; // ul = 540 if(ul==pw.input_pwd.value) { location.href="?"+ul*pw.input_pwd.value; } else { alert("Wrong"); } } 즉 540을 input으로 주면 풀리는 문제다 혹은 주소창에 ?ul*pw.input_pwd.value 를 넣어주면 되는데 이거는 계산이….ㅎㅎ 암튼 이정도로 끝

    webhacking.kr : challenge 12

    webhacking.kr : challenge 12

    javascript 난독화 문제다. 우선 난독화 해제부터 해보자. 콘솔창에 난독화부분을 복사해서 붙여넣기해주면 에러가 뜬다. ( function anonymous() { var enco=''; //var 는 변수선언 var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); // ck = / for(i=1;i

    webhacking.kr : challenge 8

    돌아가는 순서를 파악해 보고 뭐를 할지를 생각해 보자 agent 변수에 웹사이트를 접속한 CPU의 웹브라우저 정보를 저장 ip 에 접속자의 ip정보를 저장 agent 변수에 from 이라는 값이 있으면 필터링. -> access denied db 변수에 db연결정보저장 count_ck 변수에 array 값 가져온거 저장 배열의 0번째 인덱스의 크기가 70 이상이면 -> delete from chall8 뭘 지운다는 건지 모르겠다. result 변수에 query 저장 ck 변수에 result 에 대한 arr 가져옴 ck 변수의 값이 존재한다면 hi _____ 출력 ck[0]이 admin이면 문제 해결 ck 변수에 값이 들어있지 않다면 done! 출력 q 변수이용해서 정보 집어넣거나, query error ..

    webhacking.kr : challenge 7

    Admin page 딱 써있고 auth 라는 버튼이 있다. 소스를 보자 val 이라는 변수를 get 방식으로 가져오고 go 변수에 저장 아무값도 안넣으면 초기값으로 돌아가고, 필터링해서 go 변수에 2,-, +,from , _ , = , \\s, \*. \ 가 있으면 access denied!가나옴 이외의 경우에는 db에 접속한다. 접속할 때 rand라는 random 변수에 들어가는데 ( )의 개수가 다른거 빼고는 다 똑같다. 저거를 이용해야 하는 문제겠지. 어느 rand를 가져오던지 result 값을 가져오게 되어있다. 그걸 data 변수에 저장한다. data[0]이 1인 경우에 alert 창으로 Access_Denied가 뜨고, data[0]이 존재하지 않으면 나가고, data[0]이 2인 경우에 문..

    webhacking.kr : challenge 6

    소스를 보면 상당히 길다. 입력받는 id 랑 pw 값을 replace 함수에 의해서 바뀌는 거같다. id : guest pw : 123qwe str_replace 함수가 있는데 첫인자는 변경대상의 문자 두번째 인자는 변경하려는문자, 세번째 인자는 replace 가 바꾸고자 하는 문자열. 즉 1번째인자를 2번째 인자로 다 바꾼다는 뜻이다. 여기서는 기존의 숫자를 다 쉬프트 누른 값으로 바꾸는 거같은데 결론적으로 decode_id = "admin" , decode_pw ="nimda" 일 경우에 성공한다. val_id 랑 val _pw 의 경우 는 먼저 20번 인코딩하는데, base64로 한다. 또 setcookie 함수는 setcookie( 쿠키이름, 쿠키값, 만료시간, 경로, 도메인); 밑에 디코딩 있네..

    webhacking.kr : challenge 5

    회원가입과 로그인 버튼이 있다. 먼저 아무 아이디로 회원가입을 해보자 회원가입이 막혀있다. 그럼 로그인을 먼저 해보자 sql injection 같다. 로그인도 안된다. guest 로그인조차 되지 않는것 같으니 Blind sql injection 인가? 몰라 로그인이 안된다. login.php대신에 join.php를 쳤더니 들어가진다. 참 찍기의 영역이다. 코드가 난독화 되어있는데 복호화하면 다음과같다. l = 'a'; ll = 'b'; lll = 'c'; llll = 'd'; lllll = 'e'; llllll = 'f'; lllllll = 'g'; llllllll = 'h'; lllllllll = 'i'; llllllllll = 'j'; lllllllllll = 'k'; llllllllllll = 'l..