Wargame/Lord of SQLInjection
-
[LOS] xavisWargame/Lord of SQLInjection 2020. 3. 19. 22:45
[xavis] https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php 다른 문제들과는 다르게 쿼리문의 결과를 두 번으로 나누어 처리한다. 첫 번째 쿼리문의 결과를 이용하여 pw의 길이와 값을 알아낼 수 있다. 하지만 admin의 pw와 입력한 값이 같은지 비교하기 때문에 admin pw를 알아내야 한다. 별다른 필터링이 없어 쉽게 pw를 알아낼 수 있을 것 같다. 그래서 아래의 코드를 이용하여 pw를 찾아보았다. [ 소스 코드 ] #!/usr/bin/python import requests cookies = {'PHPSESSID':'km06aus2loj9joi3vgak9i580i'} url = 'https://los.rubiya.kr..
-
[LOS] nightmareWargame/Lord of SQLInjection 2019. 7. 13. 02:33
[nightmare] https://los.rubiya.kr/chall/nightmare_be1285a95aa20e8fa154cb977c37fee5.php 주석으로 사용하였던 #, -가 필터링되어 있고, pw의 길이가 6이하로 제한되어 있다. 쿼리문의 결과 값이 존재하기만 하면 된다. select id from prob_nightmare where pw=('')||true#') and id !='admin' 위와 같이 쿼리문을 만들어주면, 참이 되어 결과 값이 존재할 것이다. 주석 우회 #, --, ;%00, /**/ ;%00 MySQL은 쿼리를 읽을 때 null을 만나면 멈춘다. select id from prob_nightmare where pw=('')||1;%00') and id !='admin'..
-
[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를 찾..