los
-
전 문제인 Hell Fire 문제의 코드와 별다른 차이점이 없는 것 같다. 다만 차이점이라면 첫번째 쿼리문 옆에 주석으로 ‘same with hell_fire? really?’라는 문구가 있었다. 정말 Hell Fire와 같을 것 같냐는 문구를 보니, 뭔가 DBMS에서 설정을 한 것으로 보인다. 일단 Hell Fire에서 시도하였던 것들과 비교하여 차이점을 찾아보겠다. 다른 방법들도 비교를 해봤지만 별차이가 없는 것 같았다. import requests, string url = 'https://los.rubiya.kr/chall/evil_wizard_32e3d35835aa4e039348712fb75169ad.php' headers = {'Cookie': 'PHPSESSID=6pcue41grdd15c632..
[Lord of SQLInjection] Evil Wizard Write UP전 문제인 Hell Fire 문제의 코드와 별다른 차이점이 없는 것 같다. 다만 차이점이라면 첫번째 쿼리문 옆에 주석으로 ‘same with hell_fire? really?’라는 문구가 있었다. 정말 Hell Fire와 같을 것 같냐는 문구를 보니, 뭔가 DBMS에서 설정을 한 것으로 보인다. 일단 Hell Fire에서 시도하였던 것들과 비교하여 차이점을 찾아보겠다. 다른 방법들도 비교를 해봤지만 별차이가 없는 것 같았다. import requests, string url = 'https://los.rubiya.kr/chall/evil_wizard_32e3d35835aa4e039348712fb75169ad.php' headers = {'Cookie': 'PHPSESSID=6pcue41grdd15c632..
2021.08.10 -
새로운 문제 유형이 나왔다. 공격 백터는 order, email 입력 값에 대한 검증은 밑과 같다. order 필터링 : prob, _, ., proc, union email addslashes() : ', ", \, null 바이트 -> \', \", \\, \null 바이트 문제를 클리어하기 위해선 admin의 email 값을 알아내야한다. 첫번째 쿼리문은 select id,email,score from prob_hell_fire where 1 order by {$_GET[order]}로 order by를 이용하여 정렬을 시켜서 반환 값을 표로 출력한다. Order by 절의 기본 구조 SELECT * FROM table_name ORDER BY column_name (ASC, DESC) 데이터를 지..
[Lord of SQLInjection] Hell Fire Write UP새로운 문제 유형이 나왔다. 공격 백터는 order, email 입력 값에 대한 검증은 밑과 같다. order 필터링 : prob, _, ., proc, union email addslashes() : ', ", \, null 바이트 -> \', \", \\, \null 바이트 문제를 클리어하기 위해선 admin의 email 값을 알아내야한다. 첫번째 쿼리문은 select id,email,score from prob_hell_fire where 1 order by {$_GET[order]}로 order by를 이용하여 정렬을 시켜서 반환 값을 표로 출력한다. Order by 절의 기본 구조 SELECT * FROM table_name ORDER BY column_name (ASC, DESC) 데이터를 지..
2021.08.08 -
공격 백터는 pw 파라미터 하나다. pw 파라미터의 검증은 prob, _, ., (), col, if, case, when, sleep, benchmark를 필터링하고 있으며, 두번째 쿼리에는 addslashes 함수를 사용하여 쿼리문에 넣어지고 있다. 필터링 목록에 있는 함수들은 정리하였다. col 이것은 함수가 아니고, column이라는 단어을 막기 위해 목록에 넣는 것으로 판단이 된다. if IF(requested, A, B)으로 사용 가능하며 requested가 True일 때 A가 반환되며, False일 때 B을 반환하다. case, when CASE WHEN 조건1 THEN A WHEN 조건2 THEN B ELSE C END 으로 사용 가능하며 조건1일 때 A를 반환, 조건2일 때 B를 반환, ..
[Lord of SQLInjection] Dark Eyes Write UP공격 백터는 pw 파라미터 하나다. pw 파라미터의 검증은 prob, _, ., (), col, if, case, when, sleep, benchmark를 필터링하고 있으며, 두번째 쿼리에는 addslashes 함수를 사용하여 쿼리문에 넣어지고 있다. 필터링 목록에 있는 함수들은 정리하였다. col 이것은 함수가 아니고, column이라는 단어을 막기 위해 목록에 넣는 것으로 판단이 된다. if IF(requested, A, B)으로 사용 가능하며 requested가 True일 때 A가 반환되며, False일 때 B을 반환하다. case, when CASE WHEN 조건1 THEN A WHEN 조건2 THEN B ELSE C END 으로 사용 가능하며 조건1일 때 A를 반환, 조건2일 때 B를 반환, ..
2021.08.07 -
공격 백터는 pw 파라미터 하나 뿐이다. pw 파라미터의 검사는 prob, _, ., (), sleep, benchmark가 필터링 되며, addslashes 함수에 들어가기 때문에 ’, “, \, Null 바이트가 \', \", \\, \Null 바이트로 치환이 된다. Sleep 함수와 Benchmark 함수는 Time-Based Blind Injection에 사용되는 함수이다. Blind Injection은 응답의 참과 거짓을 구분할 수 없을 때 사용되는 기법인데, Time-Based는 지체되는 시간에 따라 참과 거짓을 구별하는 것이다. 현재 문제에선 내가 입력한 쿼리에 대한 결과를 얻을 수 없기 때문에 Blind Injection을 시도해야하는데, Sleep 함수와 Benchmark 함수가 필터링 ..
[Lord of SQLInjection] Iron Golem Write UP공격 백터는 pw 파라미터 하나 뿐이다. pw 파라미터의 검사는 prob, _, ., (), sleep, benchmark가 필터링 되며, addslashes 함수에 들어가기 때문에 ’, “, \, Null 바이트가 \', \", \\, \Null 바이트로 치환이 된다. Sleep 함수와 Benchmark 함수는 Time-Based Blind Injection에 사용되는 함수이다. Blind Injection은 응답의 참과 거짓을 구분할 수 없을 때 사용되는 기법인데, Time-Based는 지체되는 시간에 따라 참과 거짓을 구별하는 것이다. 현재 문제에선 내가 입력한 쿼리에 대한 결과를 얻을 수 없기 때문에 Blind Injection을 시도해야하는데, Sleep 함수와 Benchmark 함수가 필터링 ..
2021.08.07 -
공격 백터는 pw 파라미터이며, pw 파라미터에 대한 검증은 prob, _, ., ()을 필터링하고 있다. 하지만 이 문제의 가장 큰 문제점은 select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'로 입력된 pw가 id 뒤로 넣어지게 되는데, id 뒤부터는 #로부터 주석처리가 된다는 것이다. 이 문제를 클리어하기 위해선 #를 무력화 시켜야하는 문제로 보인다. 위와 같이 URL 인코딩의 줄바꿈인 %0A 로 입력하여, 주석을 우회하려고 했지만 실패하였다. 혹시 내가 사용한 방법이 틀렸는지 확인하기 위해서 인터넷에 sqli %0a로 검색해보니, 내가 틀린 방법으로 하고 있었다. 원리는 밑과 같다. SELECT id FROM prob_dragon W..
[Lord of SQLInjection] Dragon Write UP공격 백터는 pw 파라미터이며, pw 파라미터에 대한 검증은 prob, _, ., ()을 필터링하고 있다. 하지만 이 문제의 가장 큰 문제점은 select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'로 입력된 pw가 id 뒤로 넣어지게 되는데, id 뒤부터는 #로부터 주석처리가 된다는 것이다. 이 문제를 클리어하기 위해선 #를 무력화 시켜야하는 문제로 보인다. 위와 같이 URL 인코딩의 줄바꿈인 %0A 로 입력하여, 주석을 우회하려고 했지만 실패하였다. 혹시 내가 사용한 방법이 틀렸는지 확인하기 위해서 인터넷에 sqli %0a로 검색해보니, 내가 틀린 방법으로 하고 있었다. 원리는 밑과 같다. SELECT id FROM prob_dragon W..
2021.08.07 -
이번 문제의 공격 백터는 pw 파라미터 하나뿐이다. pw의 필터링 목록을 살펴보자면, prob, _, ., (), regex, like가 있다. 또한 addslashes 함수를 사용하기 때문에 ', ", \, Null 바이트를 직접적인 공격에 사용을 못할 듯 싶다. regex은 mysql 내장함수로 쿼리문에서 다양한 정규식을 사용할 수 있는 함수이다. 아마 정규식을 사용해서 pw을 알아내는 것을 방지하지 위해서 필터링을 건 듯 하다. 쿼리문을 살펴보면 select id from prob_xavis where id='admin' and pw=''이라서, Orc 문제처럼 LENGTH 함수와 SUBSTR 함수를 이용하면 손 쉽게 admin의 pw를 획득할 수 있을거 같다. LENGTH 함수를 이용하여 admi..
[Lord of SQLInjection] Xavis Write UP이번 문제의 공격 백터는 pw 파라미터 하나뿐이다. pw의 필터링 목록을 살펴보자면, prob, _, ., (), regex, like가 있다. 또한 addslashes 함수를 사용하기 때문에 ', ", \, Null 바이트를 직접적인 공격에 사용을 못할 듯 싶다. regex은 mysql 내장함수로 쿼리문에서 다양한 정규식을 사용할 수 있는 함수이다. 아마 정규식을 사용해서 pw을 알아내는 것을 방지하지 위해서 필터링을 건 듯 하다. 쿼리문을 살펴보면 select id from prob_xavis where id='admin' and pw=''이라서, Orc 문제처럼 LENGTH 함수와 SUBSTR 함수를 이용하면 손 쉽게 admin의 pw를 획득할 수 있을거 같다. LENGTH 함수를 이용하여 admi..
2021.08.07