$ 웹 해킹 $
-
webhacking.kr 2번 [500p]$ 웹 해킹 $/webhacking.kr 2019. 4. 9. 23:24
해당 화면이 첫 문제를 들어가면 보이는 화면 입니다. 일단 소스코드부터 확인 하겠습니다. 주석으로 시간이 있습니다. 목차의 BOARD를 들어가 보면 oldzombie의 이름으로 게시물이 하나 있는데 password가 걸려 있습니다. 그 외에 아무것도 찾지 못했습니다. 그렇다면 주어진 2가지를 가지고 문제를 접근 해야 하는데 쿠키 값을 보니 Time 이라는 쿠키 값이 있습니다. SQL Injection을 통해서 확인해 보도록 하겠습니다. ↓거짓 일 때 거짓일때 입니다. ↓참 일 때 참 일 때 입니다. 그렇다면 해당 데이터베이스 테이블 명을 통해서 password의 길이를 찾을 수 있습니다. 하지만 테이블 명을 아무리 찾아도 없었는데 아는 분께서 예전에는 힌트로 줬다고 하셔서 받아 왔습니다. bbs 페이지의..
-
회원가입$ 웹 해킹 $/webhacking.kr 2019. 4. 9. 23:09
주소 : http://webhacking.kr/ 웹해킹 연습으로 유명한 사이트인 webhacking.kr 에서 공부를 해보겠습니다. 문제는 총 66문제 정도 보유하고 있는 웹해킹 사이트 입니다. 하지만 주소로 들어가면 문득 드는 생각이있습니다. 나 여기서 나가야하나?.. 뭘해야하지?.. 그이유는 바로.. 화면이 다음과같이 생겼기 때문입니다. 하하..하.. 분명 아이디 비번 입력창인데.. 회원가입은 없고 막막합니다 회원가입부터 웹의 기초를 알고있어야지 가능한것 같네요..ㅜㅜ 웹의 시작은 페이지소스 보기인거같아요 페이지 소스보기 한번 해볼게요 마우스 우클릭 하고 페이지 소스보기 누르시면 다음과 같이 나옵니다. 저기 39번부터 44번까지 주석처리 되어있는 부분이 매우 수상합니다. 주석내용을 보면 Registe..
-
[Lord of SQL_injection] #21 iron_golem$ 웹 해킹 $/los.rubiya.kr 2019. 4. 6. 01:03
이번 문제부터는... Hello admin이 출력하지 않습니다. 출력해주는것은 mysql_error()났을때 나오는 것입니다. mysql_error()을 일으키는법은 서브쿼리를 이용해서 단일행 서브쿼리, 다중행 서브쿼리, 다중열 서브쿼리 이라는 것이 있는데 다중행 서브쿼리에 단일행 서브쿼리 를 서브쿼리로 넣으면 다르기 때문에 에러가 난다고 합니다. if문을 이용한 서브쿼리 , case를 이용한 서브쿼리 등을 이용하면 에러를 만들수 있습니다. ?pw=' or id='admin' and if(length(pw)=길이 값,(select 1 union select 2),1)%23이라고 작성을 하면 됩니다. 여기서 select 1 union select 2는 2개의 필드를 출력하는 것인데 에러에 출력되는 값을 보..
-
[Lord of SQL_injection] #19 xavis$ 웹 해킹 $/los.rubiya.kr 2019. 4. 6. 01:00
문제를 보고 19단계인데 왜이리 쉽지라는 생각이 들었다. 필터링은 like와 regex뿐이고 똑같은 평범한 blind sql injection이네 라는 생각이 들었다. 그래서 저는 바로 참값을 확인해 보았다. 바로 코드를 실행해 보았습니다. 해당 코드의 결과 값으로 12가 나왔습니다. 하지만 값을 하나씩 알아보니 아예나오지 않습니다. 그래서 다음과 같이 각자리의 값의 길이가 몇인지 알아보았습니다. 오잉..? 첫자리의 길이가 4라고 합니다. 이를 보고 저는 아? hex값일수도 있겠구나 라는 생각을 하게 되었습니다. 그렇다면 pw는 총 3자리의 문자열이고 총 길이 12가 나온 이유는 아마.. 4 * 3 이지 않을까 라는 생각을 했습니다. 그렇다면 코드를 수정해 보겠습니다. 모든 pw변수에 hex()를 붙여서..
-
[Lord of SQL_injection] #18 nightmare$ 웹 해킹 $/los.rubiya.kr 2019. 4. 6. 00:58
새로운 방식의 문제가 나온것 같습니다. pw의 길이는 6문자이고 pw의 파라미터로만 입력을 하는것입니다. mysql에서 문자열과 0을 비교했을때 항상 참을 반환한다는것을 알게 되어있습니다. 이름 Mysql의 auto type cast라고 하는데 string의 column값을 int형과 비교를 하게 되면 string은 항상 0을 return 하게 됩니다. 그래서 해당 리턴값과 0을 비교하게 되면 항상 참을 반환하게 되는 것이지요 정확히 6글자 여야 하기 때문에 #과 -가 필터링된 주석처리문제는 %00으로 대체 하겠습니다 ?pw=')=0;%00
-
[Lord of SQL_injection] #17 succubus$ 웹 해킹 $/los.rubiya.kr 2019. 4. 5. 19:20
이문제는 preg의 취약점을 없앤 문제입니다. 싱글쿼터가 필터링 되기 때문에 우리가 los 를 처음할때 사용한 \(백슬래시)를 사용해 보겠습니다. ?id=\&pw= or 1# clear가 되는 이유를 다시 이야기 해보면 id를 닫는 싱글쿼터를 \로 인해서 닫는 역할이 아닌 문자열화가 되었기때문에 빨간색 사각형이 id의 값이 됩니다. 그래서 자연스럽게 or 1를 작성하고 뒤에 pw가 닫히는 싱글 쿼터가 잇기때문에 주석으로 지워준것 입니다.