CTF/los16 [CTF] Lord of SQLInjection 16번 zombie_assassin Write-Up 15번 문제와 비슷한 코드인데, 이번엔 ‘ 검열 대신 strrev(addslashes()) 함수가 있습니다.select id from prob_zombie_assassin where id='{$_GET[id]}' and pw='{$_GET[pw]}'이 문제도 id와 pw를 입력받으며, 이것들을 잘 이용해 인젝션하면 됩니다.‘를 입력하게 되면, addslashes() \’가 되고, strrev()로 인해 최종적으로 ‘\가 됩니다.addslashes() 작동 범위는 ‘ ” \ NULL 입니다.NULL을 넣어보니 0\로 된 것을 확인할 수 있습니다.그러면, \%00을 넣으면 0\’\가 되어 \’가 생기게 됩니다. 이는 일반 문자열 역할을 하게 됩니다.select id from prob_zombie_assass.. 2026. 3. 10. [CTF] Lord of SQLInjection 15번 succubus Write-Up id, pw 둘 다 입력받으며, 싱글쿼터가 검열되고 있습니다.select id from prob_succubus where id='{$_GET[id]}' and pw='{$_GET[pw]}'이와 같은 쿼리에서 제한적으로 싱글 쿼터를 우회할 수 있는 방법이 하나 있습니다.싱글쿼터 ‘ 를 SQL에서 문자열 그 자체로 인식하기 위해서는 이스케이프 처리를 해야 합니다. 즉, \’ 이렇게 입력하면 SQL 문법이 아니라 문자열로 처리하게 됩니다.이를 이용하여 id 뒤쪽 ‘를 일반 문자열로 처리하여 무력화 시킬 수 있습니다.select id from prob_succubus where id='\' and pw=' or 1#'id에 \, pw에 or 1=1# (앞에 공백 포함)를 넣으면 \ 뒤에 있는 ‘가 문자열로 처.. 2026. 3. 10. [CTF] Lord of SQLInjection 14번 giant Write-Up ???from이랑 테이블 명이 붙어 있습니다. 이 사이에 값을 입력하여 떼어내는 것인가 봅니다.공백과, 공백으로 쓸 만한 것들은 검열되고 있습니다. (\n -> %0a, \r -> %0d, \t -> %09)\v(%0b)나 \f(%0c)로 우회하면 됩니다.입력하여 떼어내면 문제가 정답처리 됩니다. 2026. 3. 10. [CTF] Lord of SQLInjection 13번 bugbear Write-Up 검열 문자열이 많아졌습니다. 특히, 0x가 검열되어 hex로 문자열을 입력할 수 없습니다.select id from prob_bugbear where id='guest' and pw='' and no=1||id in(0b0110000101100100011011010110100101101110)hex가 안 되면 bin으로 입력하면 됩니다.admin의 bin값인 0b0110000101100100011011010110100101101110를 입력합니다. 공백은 tab 문자로 우회합니다.Hello admin이 뜬 것을 확인할 수 있습니다.select id from prob_bugbear where id='guest' and pw='' and no=1||id in(0b011000010110010001101.. 2026. 3. 10. [CTF] Lord of SQLInjection 12번 darkknight Write-Up Blind SQL Injection 문제인 것으로 보이며, 여기는 첫 번째 쿼리에 no라는 조건이 붙습니다. 여기서 no는 숫자 데이터임을 알 수 있습니다. (쿼터 미사용)select id from prob_darkknight where id='guest' and pw='' and no=select pw from prob_darkknight where id='admin' and pw=''그리고 pw와 no에서 검열되는 문자열이 차이가 있습니다.pw에서는 싱글쿼터만 검열되며, no에서는 싱글쿼터, substr, ascii, = 가 차단되고 있습니다.pw에서 ‘ 가 차단되기 때문에, 숫자형 데이터인 no에서 인젝션을 수행하도록 하겠습니다.select id from prob_darkknight where id.. 2026. 3. 10. [CTF] Lord of SQLInjection 11번 golem Write-Up Blind SQL Injection 문제입니다.특이사항으로는 or, and, substr, =가 검열당하고 있습니다.사실 MySQL에서는 or -> ||, and -> &&로 바꿔도 정상 동작하며, substr()과 mid()는 동일한 기능을 하는 함수입니다. 즉, substr() 대신에 mid() 쓰면 됩니다.문제는 = 기호입니다.값의 비교가 필요할 경우 > 문자열을 비교해야 할 경우, like()나 in 등으로 우회 가능합니다.select id from prob_golem where id='guest' and pw=''||id like('admin')#'이런 식입니다.우회가 된 것을 확인할 수 있습니다.select id from prob_golem where id='guest' and pw=''||i.. 2026. 3. 10. [CTF] Lord of SQLInjection 10번 skeleton Write-Up los 10번 skeleton Write-Up 입니다.절대 이루어 질 수 없게 1=0을 붙여 놓았습니다.딱히 검열 당하는 중요 구문은 없어서, 쉽게 해결 가능 해 보입니다.select id from prob_skeleton where id='guest' and pw='' or id='admin'#' and 1=0다음과 같이 입력하면 앞의 조건은 무력화되고, admin을 선택하며, 뒤의 이상한 조건은 주석 처리가 됩니다.URL Encoding 후 데이터를 전달하면 문제가 정답처리 됩니다. 2026. 3. 10. [CTF] Lord of SQLInjection 9번 vampire Write-Up los 9번 vampire Write-Up 입니다.이번엔 admin을 str_replace()을 이용해 공백으로 치환하고 있습니다.사실 이 문제는 SQL Injection이라기 보다는 php의 str_replace() 취약점을 이용한다고 보는 게 맞을 것 같습니다.관련 글 : https://blog.spareone.io/51 [PHP] str_replace() 문자열 치환 함수 사용법과 우회 방법str_replace() 함수는 특정 문자열을 치환하는 함수입니다. 사용 방법은 str_replace([변경 대상 문자열], [변경할 문자열], [해당 문자열]) 입니다. 해당 예제는 "안녕하세요"를 "안녕안하세요"로 바꾸는blog.spareone.io admin 말고 adadminmin 이렇게 입력하면 문자열이.. 2026. 3. 10. [CTF] Lord of SQLInjection 8번 troll Write-Up los 8번 troll Write-Up 입니다.싱글쿼터(‘)와 admin 문자열이 filtering되고 있습니다.처음에는 ‘ 우회법을 찾아다녔다가, 한 가지 사실을 발견하게 됩니다.if(preg_match("/admin/", $_GET[id])) exit("HeHe");해당 코드는 소문자만 filtering이 가능합니다. (대소문자 모두 검열하려면 “/admin/i” 로 작성해야 함)select id from prob_troll where id='Admin'그냥 이렇게만 입력하면 검열을 통과합니다.mysql에서는 기본적으로 대소문자를 구분하지 않기에 가능합니다.Admin을 입력하면 문제가 정답처리 됩니다. 2026. 3. 10. [CTF] Lord of SQLInjection 7번 orge Write-Up los 7번 orge Write-Up 입니다.4번 문제랑 비슷한 코드를 가지고 있으며, or과 and가 검열되고 있습니다.Blind SQL Injection 문제입니다.select id from prob_orge where id='guest' and pw=''select pw from prob_orge where id='admin' and pw=''여기도 쿼리가 2개 있습니다.위 쿼리는 guest의 id, 아래 쿼리는 admin의 pw를 선택하는 구문입니다.select id from prob_orge where id='guest' and pw=''||id='admin'&&length(pw)=8#'첫 번째 쿼리가 guest로 박혀 있기 때문에 강제로 admin을 선택하도록 해야 합니다.이렇게 입력하여 pw.. 2026. 3. 10. 이전 1 2 다음