목록Hacking (37)
minhui study
php코드를 보면 GET방식을 통해 id와 pw값을 받는 것을 알 수 있다. 그리고 쿼리문을 날렸을 때 만족되는 값이 있으면 성공이다. select id from prob_gremlin where id='' or 1=1-- a' and pw='' 가 되게끔 url에 ?id='' or 1=1-- a라고 입력하면 문제 해결~! 여기서 --는 한 줄 주석처리를 의미하는데 이후 공백 문자 1칸이 반드시 필요하다. -- 뒷 부분이 주석처리 되면 구문은 select id from prob_gremlin where id='' or 1=1 이 되어 항상 참 값을 갖게 된다.
Challenge tmitter - 259p 아마 admin 아이디로 로그인해야 문제가 풀리는 것 같고 tmitter_user table 에는 인덱스와 id, pw 칼럼이 있다는 것을 알 수 있다. 문제 화면은 다음과 같다. 회원가입 창에 들어가보면 id는 최소 4글자 비밀번호는 최소 7글자인 것을 확인할 수 있다. admin으로 로그인 해야 되므로 admin을 아이디로 회원가입을 하려고 하면 이미 있는 아이디로 회원가입이 불가능하다. 아까 문제 시작할 때 테이블 내 id 최대 글자 32라는 것을 알려줬는데 이를 이용하여 32를 초과하여 입력하게 되면 char()자료형은 수용량까지만 입력을 받고 32글자를 넘어가는 데이터는 받지 않는다. 그러므로 'admin 1'과 같이 입력한다면 데이터베이스에는 adm..
Challenge DB is really GOOD - 216p 코드를 한번 확인해 보자 admin이라고 입력하면 코드대로 dont access with admin이 뜬다. 아무 단어 hello를 입력해보면 다음과 같은 화면이 뜬다. 특수문자까지 입력해보다가 오류를 일으키는 문자가 /라는 것을 알아내었다. ./db/wkrm_(user).db 이런 형식으로 각 사용자의 데이터베이스 파일이 저장되는 것 같은데 /라고 치면 경로에 문제가 생겨서 그런 것 같다. -> ./db/wkrm_/.db 그래서 만약에 hello/라고 치면 ./db/wkrm_hello/.db가 되어 오류가 발생하는 것이다. admin에 대한 파일에 접근하기 위해서 ./db/wkrm_admin.db를 url에 입력해보면 다음과 같이 파일 하나..
Challenge md5 password - 207p md5('value', true)에 대해서 찾아보았다. md5같은 경우 인자로 들어온 문자열을 md5 해시하여 32bytes의 길이로 반환을 해주는데 여기서 두번째 인자 옵션을 디폴트 값 false가 아닌 true로 주면 Hex값을 16bytes의 바이너리 값으로 반환해준다. md5('문자열', false) / md5('문자열') -> 32자리의 16진수 값을 반환한다. md5('문자열', true) -> 16자리의 바이너리 형식으로 반환한다. 테이블에는 id : admin / pw : admin 인 값이 있다고 가정해보자 select id from table where pw='admin' ='abc'; 만약 위와 같은 쿼리문을 입력한다면 admin은..
Challenge WTF_CODE - 155p source_code.ws를 다운받아 보자 그러면 다음과 같이 빈 화면처럼 보이는 것이 나온다. .ws 확장자를 찾아보니 이것은 whitespace programming language라고 한다. https://ko.wikipedia.org/wiki/%ED%99%94%EC%9D%B4%ED%8A%B8%EC%8A%A4%ED%8E%98%EC%9D%B4%EC%8A%A4_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4) 화이트스페이스 (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 화이트스페이스(Whitespace)는 에드윈 브래디(Edwin Brady)와 ..
Challenge QR CODE PUZZLE - 111p QR 코드 퍼즐을 맞춰야 문제가 풀릴 것 같은데 우리가 직접 맞추는 것 같진 않으니 코드를 확인해 보자 하이라이트한 부분을 보면 join_img 요소의 src 속성(이미지) 값이 변경되는 걸 알 수 있다. 이미지를 변경하겠다는 의미로 원래 qr코드 완성된 이미지를 나타내는 경로일 가능성이 높다. 개발자 도구 (F12)의 Console 창에서 경로가 원래 어떤 문자열이었는지 확인해보면 다음가 같이 나온다. 해당 경로로 이동해보면 QR코드 이미지가 등장한다. https://zxing.org/w/decode.jspx 에 들어가서 QR코드 url을 치면 flag가 담긴 페이지의 url이 나온다. 이 방법 외에 개발자도구(F12)에서도 확인할 수 있는 방법..
Challenge flee button - 84p 다음과 같이 마우스 커서 옆에 버튼이 따라다니는 것을 볼 수 있다. 하지만 마우스가 움직일 때마다 버튼도 같이 따라 움직여서 버튼을 누를 수가 없다. 일단 코드를 확인해보자 여기서 onfocus는 무언가에 포커스가 잡혔을 때를 말하고 onclick은 무언가를 눌렀을 때를 의미한다. 버튼을 누르면 key값에 c767이 url로 넘어가다는 걸 알 수 있다. 다음과 같이 url에 입력해주면 다음과 같이 플래그 값이 나온다.