SQL(89)
-
[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 -
[WriteUp]/[Lord Of SQLInjection] darkknight
여기서 살펴봐야하는 부분은if(preg_match('/prob|_|\\.|\\(\\)/i', $_GET[no])) exit("No Hack ~_~");if(preg_match('/\\'/i, $_GET[pw])) exit("HeHe");if(preg_match('/\\'|substr|ascii|=/i', $_GET[no])) exit("HeHe");$query = "select id from prob_darkknight where id='guest' and pw='{$_GET[pw]}' and no={$_GET[no]}";→ 위의 코드에서 no를 받을때, prob와 _,.,(.)을 필터링하고 추가로 ‘와 substr와 ascii, =을 필터링한다.→ pw를 받는 변수에서는 ‘를 필터링한다.⇒ 둘 다 i를..
2025.03.05 -
[WriteUp]/[Lord Of SQLInjection] golem
#7번째 줄$query = "select id from prob_golem where id='guest' and pw='{$_GET[pw]}'";#15번째 줄if(($result['pw']) &&($result['pw'] == $_GET['pw'])) solve("golem");→ 이 두 줄을 해석해보면 id는 guest로 고정되어있고, pw는 입력 받은 값을 처리하는 것인데, 입력받은 pw랑 결과 값이랑 일치해야 클리어 값이 나오는 것 같다.#5-6번째 줄if(preg_match('/prob|_|\\.|\\(\\)/i', $_GET[pw])) exit(No Hack ~_~");if(preg_match('/or|and|substr\\(|-/i', $_GET[pw])) exit("HeHe");→ 필터링이 ..
2025.03.05 -
[Writeup]/[Lord Of SQLInjection] vampire
→ 문제를 보면,$_GET[id] = str_replace("admin", "", $_GET[id]);→ admin이 “”로 치환되고 있음을 확인할 수 있다.→ admin을 리턴하되 인식시키는 방법을 사용하기 위해 다음과 같이 브라우저에 접속한다.[도메인값]?id=adadminmin→ 클리어 창이 뜬다.
2025.03.05 -
[Writeup]/[Lord Of SQLInjection] cobolt
→ 해당 브라우저로 접속하면 바로 이런 코드가 나온다.→ gremlin 문제와 매우 유사하나 md5로 암호화된 채 쿼리가 전송된다는 점에서 차이를 지닌다.if($result['id'] == 'admin') solve("cobolt");해당 코드를 보면 id는 admin이어야하고, pw=md5('{$_GET[pw]}')의 암호화 자체가 무시되어야하므로[도메인 값]?id=admin' or '1'='1이렇게 평문을 작성해서 브라우저 접속하면 인코딩 되어 페이로드에 접속할 수 있고→ 클리어한 화면을 볼 수 있다.
2025.03.05