목록분류 전체보기 (124)
minhui study
Python 문자열 함수에 대해 알아보자 1) 문자열 대소문자 변환 upper() - 대문자로 변환 lower() - 소문자로 변환 swapcase() - 대문자 -> 소문자, 소문자 -> 대문자 capitalize() - 첫문자를 대문자로 변환 title() - 단어의 첫문자를 대문자로 변환 2) 문자열의 편집 및 치환 strip() - 좌우 공백을 없앰 rstrip() - 오른쪽 공백을 없앰 lstrip() - 왼쪽 공백을 없앰 replace('A', 'B') - A를 B로 바꿈 format() - 틀(포맷)을 만들어놓고 문자열 생성 3) 문자열 검색 count('a') - 문자열에서 'a'라는 문자가 있는 갯수 find('a') - 문자열에서 첫번째 'a'인덱스 반환 ( 찾는 문자열이 없을 경우 -..
Challenge orc GET 방식으로 pw를 입력받고 addslashes()함수를 통해 pw를 변환하고 그 비밀번호에 일치하는 비밀번호를 테이블에서 찾아낸 뒤 GET방식으로 받아온 pw와 같으면 문제가 풀린다. 여기서 addslashes()함수에 대해 잠깐 알아보고 넘어가자 만약에 I'm a girl 이라는 문자열을 전송하게 되면 '(따옴표)때문에 오류가 발생하게 된다. 이 때 addslashes함수가 I(역슬래쉬)'m a girl로 바꾸어 주는 작업을 해준다. 그리고 DB에서 다시 꺼내왔을 때 추가됐던 백슬래쉬를 제거해주는 함수가 바로 stripslashes()함수이다. 자 이제 문제는 pw를 어떻게 찾나 이다. 먼저 pw길이부터 알아보자 select id from prob_orc where id=..
Challenge goblin url에 ?no=1이라고 치면 다음과 같이 나온다. 코드를 보면 no에 따옴표가 필터링이 된다. 그리고 문제가 해결되려면 id가 guest가 아닌 admin이어야 한다. 그러므로 쿼리문은 no에 1이 아닌 다른 값을 넣어주어 거짓으로 만든 다음 뒤에 id='admin'을 붙여서 select id from prob_goblin where id='guest' and no=2 or id='admin' 이런식으로 보내면 문제가 해결될 것이다. 하지만 이대로 넣어주면 '이 필터링이 된다. 일단 첫번째 방법은 a=97(아스키 코드)이므로 id에서 맨 왼쪽 값이 a(97)을 찾아라라는 의미의 쿼리를 넣는 것이다. select id from prob_goblin where id='gues..
challenge cobolt 리턴되는 id값이 idmin이면 문제가 해결된다. select id from prob_cobolt where id='admin'-- a' and pw=md5('') 다음과 같이 id에 admin값을 넣어주고 뒤를 주석처리 해주었다. 그랬더니 문제 해결~! 주석처리는 다음과 같이 -- 말고도 #으로도 가능하다.
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은..