전체 글 173

53번

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

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으로 레코드 조절해서 뽑아봐도 안 된다... ..