본문 바로가기

전체 글180

[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.
[CTF] Lord of SQLInjection 6번 darkelf Write-Up los 6번 darkelf Write-Up 입니다.이번엔 or, and가 filtering 되고 있습니다.하지만 or은 ||, and는 &&로 바꾸어 우회가 가능합니다. 심지어 이렇게 쓰면 앞 뒤 공백이 필요 없습니다.select id from prob_darkelf where id='guest' and pw=''||id='admin'이렇게 입력하면 됩니다.URL Encoding 후 데이터를 전달하면 문제가 정답처리 됩니다. 2026. 3. 10.
[CTF] Lord of SQLInjection 5번 wolfman Write-Up los 5번 wolfman Write-Up 입니다.이번엔 공백 문자가 filtering 되고 있습니다.여기서는 정직하게 공백( )만 잡아내고 있기 때문에 수월하게 우회가 가능합니다.select id from prob_wolfman where id='guest' and pw='' or id='admin'스페이스 바 공백 대신 tab 공백으로 해당 filter를 우회할 수 있습니다.이를 URL Encoding으로 표현하면 %09가 됩니다.URL Encoding하여 데이터를 전달하면 문제가 정답처리 됩니다. 2026. 3. 10.
[CTF] Lord of SQLInjection 4번 orc Write-Up los 4번 orc Write-Up 입니다.코드를 자세히 보면 쿼리가 2개 있습니다.select id from prob_orc where id='admin' and pw=''select pw from prob_orc where id='admin' and pw=''위는 id column를 선택, 아래는 pw column를 선택하는 쿼리입니다.id는 무난하게 통과가 될 수 있으나, pw의 경우 입력 값에 addslashes()가 되어 (‘ -> \’가 됨) 인젝션을 방해하고 있습니다.보기에는 addslashes()의 취약점을 이용하는 문제로 보이나… 사실 blind SQL Injection 문제입니다.select id from prob_orc where id='admin' and pw='' or id='ad.. 2026. 3. 10.