SQL Injection
-
[LOS] zombie_assassinWargame/Lord of SQLInjection 2019. 7. 9. 01:40
[zombie_assassin] https://los.rubiya.kr/chall/zombie_assassin_eac7521e07fe5f298301a44b61ffeec0.php id와 pw가 addslashes와 strrev함수 처리된다. strrev() 입력 받은 문자열을 뒤집어 리턴하는 함수 addslashes 처리되어도 strrev함수에 의해 '를 입력할 수 있게 된다. ?id=' addslashes($_GET['id']) : id = \' strrev( id ) : '\ 그러나, select id from prob_zombie_assassin where id=''\' and pw='' 작은 따옴표를 입력할 수 있지만, 위 쿼리문처럼 완벽하지 않은 쿼리문으로 에러가 난다. succubus 처럼 우회..
-
[LOS] succubusWargame/Lord of SQLInjection 2019. 7. 6. 02:43
[succubus] https://los.rubiya.kr/chall/succubus_37568a99f12e6bd2f097e8038f74d768.php ' 가 필터링되어 있다. 쿼리문의 결과 값이 존재하기만 하면 문제가 풀린다. 하지만, id와 pw를 알아낼 수 있는 방법이 없기 때문에 뭔가를 우회해야 한다. ' 필터링을 우회할 수 있다면 쉽게 풀 수 있을텐데...;; ' 필터링을 우회하는 방법을 찾아보다 addslashes 함수가 생각났다. addslashes 함수는 쿼리문의 ' "와 같은 특수 문자 앞에 \를 붙여주어 문자로 인식하도록 하는 함수이다. addslashes와 같이 id의 값으로 \를 입력해주면, '를 문자로 인식하지 않을까?! select id from prob_succubus wher..
-
[LOS] assassinWargame/Lord of SQLInjection 2019. 7. 6. 01:33
[assassin] https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php '가 필터링되어 있다. 따라서, length함수를 이용할 수 없다. like를 사용할 때는 와일드 카드를 사용하여 길이와 값을 알아낼 수 있다. [ 와일드 카드 ] %, _ a% : a로 시작하는 임의의 문자열 %a% : a가 들어가는 임의의 문자열 a_ : a로 시작하는 두 글자의 문자열 우선, %를 입력하여 쿼리문을 무조건 참으로 만들어보았다. ?pw=% 'Hello guest'가 출력된다. 데이터베이스에 guest의 값이 가장 위에 있기 때문에 이러한 결과가 나온다. '의 필터링으로 인해 이전에 풀었던 것처럼 id=admin 으로 고정하여 pw를 찾..
-
[LOS] giantWargame/Lord of SQLInjection 2019. 7. 5. 04:01
[giant] https://los.rubiya.kr/chall/giant_18a08c3be1d1753de0cb157703f75a5e.php 공백(%20), \n(%0a), \r(%0d), \t(%09)가 필터링되어 있고, shit의 길이가 1보다 길면 안된다. 간단히 shit의 값으로 공백을 주면 풀리는 문제이다. [ 공백 우회 ] %0a, %0b, %0c, %0d, %09, (), /**/, + ()와 /**/는 길이가 1보다 길기 때문에 +, %0b, %0c를 이용해 보았다. 1. + 그냥 공백(%20)문자와 같은 값으로 인식되어 필터링된다. 2. %0b (vertical tab) 3. %0c (Np form feed, new page)
-
[LOS] bugbearWargame/Lord of SQLInjection 2019. 7. 5. 03:47
[bugbear] https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php 필터링되는 항목이 많아졌다...;; like도,, =도 사용할 수 없다. like, = 필터링 우회 방법과 문자열 함수를 찾아보았다. [ 우회 방법 ] , between, in, instr, regexp regexp는 like와 비슷하게 사용되며, 와일드 카드 대신 정규식을 이용해 비교한다. (정규식 시작 : ^, 끝 : $) [ 문자열 검색 함수 ] locate(‘a’,’abc’) position(‘a’,’abc’) position(‘a’ IN ‘abc’) instr(‘abc’,’a’) substring_index('ab','b',1) [ 문자열 비교 함수..