분류 전체보기 172

python 자료형 - 딕셔너리

딕셔너리 (dictionary) 0. 생김새 dict ={'a': 'apple', 'b': 'banana', 'c': 'cawai'} 이렇게 정의한다. 앞에 있는 'a, 'b', 'c'를 key라고 하고, 뒤에 있는 값들을 value라고 한다.딕셔너리는 key를 통해서 value로 접근한다. 1. 값 추가 및 수정dict['three'] = 3 // 값 추가dict['a'] = 23 // 값 수정 2. 값 삭제리스트와 동일하다.del dict['a'] 3. 존재 확인'a' in dict.keys() // 참 반환'cawai' in dict.values() // 참 반환

Programming/python 2016.04.20

for문

for문에서 list를 쓸 수 있다. list = [1, 2, 3] for x in list: print x 1, 2, 3을 출력한다. list 대신 range함수를 쓸 수 있다. 결과는 같다. for x in range(1, 4): print x enumerate라는게 있다. list=[1, 'apple', 2, 'banana'] for i, a in enumerate(list): print i, a enumerate를 쓰면 리스트의 index와 value를 동시에 가져올 수 있다. ==================================================== 이제 dictionary의 경우를 보자. 아래와 같은 dictionary가 하나 있다고 하자. ages {'a': 12, 'c'..

Programming/python 2016.04.20

57번

$_SESSION[id]와, 입력받은 값, php변수($secret_key)를 테이블에 넣는다. 출력해주는 부분도 딱히 없는데, 이 $secret_key를 알아내야 한다. php변수값을 알아내는 방향으로 접근하면 답이 없다. 테이블에 있는 데이터를 추출한다는 방식으로 접근해야 한다. 우리가 이용할 수 있는 쿼리는 insert문 뿐이다. $_GET[se]부분에 쿼터가 없어서 인젝션이 가능해보인다. if문을 이용하여 time based sql injection공격을 했다. if(length(pw)>6, sleep(1), 0) length(pw)=10일 때 참이므로, 길이를 알아냈으니 이제 한 글자씩 추출해내면 된다. import urllib2 import time url = "http://webhacking..

51번

소스를 보면... 자세히 보면 md5함수의 두 번째 인자가 true이다.php의 md5함수는 두 번째 인자가 TRUE이면, 해시를 길이 16의 바이너리 형식으로 반환한다. 기본값은 FALSE이다.(PHP Manual : http://php.net/manual/kr/function.md5.php) $str = "129581926211651571912466741651878684928"라는 문자열을 예로 들면, md5($str)은 06da5430449f8f6f23dfc1276f722738이지만,md5($str, true)는 ÚT0DŸo#ßÁ'or'8이다. id에 admin, pw에 위의 문자열을 입력했다면 전체 쿼리는 select id from challenge_51_admin where id='admin'..

56번

게시판이다.admin이 쓴 글은 access denied로 안 읽어지고, guset가 쓴 글의 내용은 hi~이다.검색창에 여러 가지 입력해보니, h, i, hi라고 검색했을 때는 guest글이 검색이 된다.제목이나 내용을 검색하는 듯 하다.제목을 검색하는가 싶어 readme를 검색하니 아무것도 안 나온다. 내용을 검색하는 것 같다.admin이 쓴 글의 내용을 읽어내면 클리어인듯 k를 검색하면 admin이 쓴 글만을 읽어온다. 내용에 k가 있는 것 같다. 예상되는 쿼리는select * from table where contents like '%%' like절에 %가 양 끝에 붙은 것으로 추정 가능한 이유는i를 검색했을 때 guest가 쓴 글의 내용인 hi~를 검색하기 때문이다. 언더바(_)로 글자 수를 추..

53번

hidden table에서 test1값을 가져와서 출력해주고 있다.val값을 변화하면서 출력값을 살펴보면, test, guest, admin 등 있다. 테이블 이름을 알아내야하는데....union, select가 막혀있어서 information_schema를 못 쓴다... procedure analyse()함수를 사용하자.procedure analyse()에는 테이블의 데이터에 대한 통계정보가 들어있다.첫 번째 열에는 테이블의 컬럼 이름이 들어있다. ?val=1 procedure analyse() 테이블명과 컬럼 명을 토해냈다.