write-up(web)

    [Lord of SQLInjection] hell_fire write-up

    [Lord of SQLInjection] hell_fire write-up

    문제의 소스 코드입니다. admin의 email을 알아내면 성공입니다. 일단 email을 넣어보면 admin, rubiya 2개의 데이터를 가지고 있습니다. order by에 대해 검색하던 중 case로 정렬하는 방법에 대해 찾았습니다. case when [조건] then [참일 때 값] else [거짓일 때 값] end 이 방법을 활용해 admin을 첫번째로 올린 다음 limit 1을 설정해서 해당 조건이 참일 때만 admin이 보이게끔 만들어 줍니다. id가 admin이면서 pwLen이 admin의 email 길이보다 작을 때 참이 됩니다. request 요청 결과를 beautifulsoup를 이용해 원하는 부분(table 태그)만 잘라내줍니다. 조건식이 참이면 table 태그 안에 admin이 있습..

    [Lord of SQLInjection] dark_eyes write-up

    [Lord of SQLInjection] dark_eyes write-up

    문제의 소스 코드입니다. 이전 문제인 iron_golem의 응용 문제입니다. col, if, case, when, sleep, benchmark를 필터링 합니다. iron_golem에선 if를 사용했었는데 이제 다른 함수를 찾아줘야 합니다. 찾아보니 cot()라는 함수가 있습니다. 이제 iron_golem 때 사용했던 코드에 cot함수를 적용시키면 됩니다. 코드에 대한 설명은 이전 글 참고해주세요. https://ssongkit.tistory.com/93 [Lord of SQLInjection] iron_golem write-up 문제의 소스 코드입니다. error based blind sql injection 문제입니다. pw를 정확하게 구하는 것이 목표입니다. 드림핵 강의 중 error based b..

    [Lord of SQLInjection] iron_golem write-up

    [Lord of SQLInjection] iron_golem write-up

    문제의 소스 코드입니다. error based blind sql injection 문제입니다. pw를 정확하게 구하는 것이 목표입니다. 드림핵 강의 중 error based blind sql injection에 관한 내용이 나옵니다. if 문의 조건이 참이 되면 mysql의 double 자료형 최대값을 초과하는 값(9e307*2)이 들어가면서 에러가 발생합니다 조건문에 원하는 구문을 넣어서 pw를 구할 수 있습니다. 파이썬 코드의 구조는 이전 xavis 문제와 같습니다. https://ssongkit.tistory.com/91 [Lord of SQLInjection] xavis write-up 문제의 소스 코드입니다. admin의 pw를 구하면 문제가 풀립니다. 이것 저것 해보다 알게 된 것이 멀티바이트..

    [Lord of SQLInjection] dragon write-up

    [Lord of SQLInjection] dragon write-up

    문제의 소스 코드입니다. id='guest' 뒤에 주석처리가 되어있습니다. id가 admin이 되면 문제가 풀립니다. mysql에서 #문자는 한 줄 주석 처리 문자입니다. 따라서 개행을 시켜주면 주석의 영향을 받지 않습니다. url에서 개행에는 %0a가 사용됩니다. mysql에서 세미콜론을 만나기 전까진 한 문장이 종료되지 않으므로 이어서 작성할 수 있습니다. mysql_fetch_array 함수는 한 행만 가져오므로 앞에 있는 guest에 대한 조건은 false로 만들어 주어야 합니다. 즉 and pw='' or id='admin'을 추가로 넣어주면 됩니다. 먼저 '문자로 pw를 닫아준 후 %0a로 개행합니다. 이후 and pw=''으로 id='guest'라는 조건을 false로 만든 뒤 or id='..

    [Lord of SQLInjection] xavis write-up

    [Lord of SQLInjection] xavis write-up

    문제의 소스 코드입니다. admin의 pw를 구하면 문제가 풀립니다. 이것 저것 해보다 알게 된 것이 멀티바이트 문자열이구나~ 였습니다. _ 문자를 쓸 수 없으므로 char_length와 bit_length 함수를 사용할 수 없습니다. 그래서 하나씩 넣어보면서 bit 길이를 찾아봐야 합니다. 먼저 pw의 length를 구해주면 12가 나옵니다. 각 문자의 bit length를 구하면 3번째 문자까진 16비트이고 나머지는 1비트입니다. 여기서 "아~ pw는 2바이트 3문자와 널 문자 9개로 이루어져 있구나"를 알 수 있습니다. 이제 이진 탐색으로 문자 3개를 찾아주면 됩니다. 0~65535(2^16)사이 범위 중 ord 함수로 구해준 각 문자의 ascii값이 뭔지 구해줍니다. 구해준 값을 pw에 넣어주면 ..