전체 글 172

pythonchallenge.com 2탄

주어진 문장을 아래와 같이 각각 치환해주면 된다. K -> M O -> Q E -> G g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj. strings = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm..

40번

admin으로 로그인 해야하는듯 하다.확인 결과, 필터링은 공백, or, and공백은 %0a로, or는 ||로, and는 &&로 우회해준다.단, &를 쓸 땐 %26로 써주어야 한다는 것을 주의하자. 여러 확인 결과, 예상되는 쿼리는,select * from table where id='$_GET[id]' and pw='$_GET[pw]' and no=$_GET[no]위와 같다. ?no=0 or no=2no가 1일 때 id는 guest이고, no=2일 때 id값이 admin이라는 사실을 알아내었다.예상할 수 있는 테이블의 형태는 +------+-----+----+| id | pw | no |+------+-----+----+| guest | guest | 1 |+------+-----+----+| admi..

35번

challenge35_list라는 테이블에 내 id, ip $_GET[phone]을 넣는다. $_GET[phone]이 int형이라 쿼터가 없어서 인젝션 가능 테이블에서 id='admin' and ip='내 ip'이면 클리어. 그런데 insert될 때는 항상 내 id와 내 ip로만 들어간다. (id='admin'을 만족시켜야 한다.) Multi Row Insert를 이용하여 insert 값을 주작한다. insert into table values (id, ip, phone), (id, ip, phone); 두 행이 동시에 들어간다. 첫 번째 id, ip값은 $_SERVER 변수로 조작 불가이므로, 두 번째걸 조작해준다. 문자열은 0x로 우회한다. 1), (0x61646d696e, 0x3139322e3136..

파이썬 문자열 formatting 네 가지 방법

문자열 포매팅 방법들 4 가지 a = 'string'i = 10 0. +이용print 'Hello' + a + str(i) 1. 콤마(,) 이용print 'Hello', a, i문자열 사이에 공백이 저절로 들어간다. 2. format string 이용print 'hello %s %d' % (a, i) 3. .format 함수 사용print 'hello {} {}'.format(a, i) 포맷스트링 사용시 아래 표를 참고하자. 특이사항 두 가지 확인하자. %s는 어떤 값도 쓸 수 있다.이를테면,print 'hello %s' % 3.14%s는 자동으로 % 뒤에 있는 값을 문자열로 바꾸기 때문이다. 포맷스트링 사용시 %를 사용할 때는 %%로 쓴다.이를테면,print 'percentage : %d%%' %30%..

Programming/python 2016.04.04

50번

소스를 보면... 간단하다. select 문에서 3만 추출하면 되므로,쿼리에서select lv from members where id='$_GET[id]' and pw=md5('$_GET[pw]')select lv from ~ where id='aa' or lv = 3 # ' and pw=md5('$_GET[pw]')이런식으로 조작해주면 된다. 그런데 mb_convert_encoding함수로 euc-kr에서 utf-8로 변환하고 있다.멀티바이트셋 환경이다.magic_quote_gpc 우회가 가능하다.=은 like로 우회해준다.공백도 적절히 우회해준다. ?id=%bf%27 or lv like 3 # 그런데 클리어가 안 된다. or 1 로 전체 참 주고 limit으로 레코드 조절해서 뽑아봐도 안 된다... ..

21번

파라미터는 no, id, pw이다. 폼을 통해 제출하는 파라미터는 no이다.이 문제는 소스를 안 보여준다. 쿼리를 유추해야 하는데, 여러 가지 해보면서 유추해보면select * from ~ where no={$_GET[no]} or id='{$_GET[id]}' and pw='{$_GET[pw]}'이다. no가 1 일 때 guest/guest이고no가 2 일 떄 admin/???? 이다.admin의 패스워드를 알아내야 한다. 우선 length함수로 길이를 뽑아낸다.?no=2 and length(pw)=19 이제 한 글자씩 뽑는다.mid(pw,1,1)ord(mid(pw,1,1))이런 식으로 아스키 범위에서 알아내면 되는데, 너무 오래걸린다. (아스키범위 32~127)이진수로 뽑으면 한 글자당 7회의 쿼리만..