Lord of SQL_injection
-
[Lord of SQL_injection] #28 frankenstein$ 웹 해킹 $/los.rubiya.kr 2019. 10. 25. 22:42
문제를 보면 일단 if(mysqli_error($db)) exit("error"); 를 보면 결과가 나오지 않고 error 가 일어났을 때 에러가 출력되는 error base sql injection 문제입니다. union과 (, ) 가 필터링 되는 것으로 보아 if문을 이용한 union select 에러를 일으 킬수 없을 것 같아서 case when else ~ end 를 이용하기로 했습니다. 에러로 mysql 에서는 9e307*N의 형식으로 값을 넘기면 Logical Error 를 띄어서 error가 나게 됩니다. 페이로드 : ?pw=1' or case when id='admin' and pw like '[ ]%' then 9e307*2 else 0 end%23 https://los.rubiya.kr..
-
[Lord of SQL_injection] #27 blue_dragon$ 웹 해킹 $/los.rubiya.kr 2019. 10. 25. 22:41
문제를 보면 일단 필터링에 \ 와 ' 가 필터링 되고 있습니다. 하지만 쿼리문을 만들고 result 값을 만든 후에 필터링을 하기 때문에 No Hack ~_~을 띄워도 쿼리문을 실행 할 수 있습니다. sleep 함수를 이용해서 값을 구해 보겠습니다. sleep을 이용하기 위해서는 if 문을 이용해야 하는데 아래와 같습니다. if(조건문,참 반환값, 거짓 반환값) 을 이용하면 될 것 같습니다. https://los.rubiya.kr/chall/blue_dragon_23f2e3c81dca66e496c7de2d63b82984.php?pw=%27%20or%20id=%27admin%27%20and%20if(length(pw)%3E0,sleep(3),0)%23 No Hack이 떠도 3초동안 sleep 하였습니다. ..
-
[Lord of SQL_injection] #26 red_dragon$ 웹 해킹 $/los.rubiya.kr 2019. 10. 25. 22:40
id의 길이가 7이하이어야 하고, no에 값이 없으면 1이라는 값을 넣는다. 먼저 id에 참을 띄우고 no가 admin과 같은 데이터가 있으면 Hello admin이 나오게 됩니다. id에 %23 인 한줄 주석을 넣고 no에서 개행 문자를 넣어서 아래와 같이 쿼리문을 넣으려고 합니다. id='||no=#&no=%0a1 이라는 쿼리를 넣게 되면 id의 반환 데이터가 아래와 같이 됩니다. [id=''||no=1] 이 되고 참일 때 admin을 출력합니다. no 값을 변경하면서 admin에 있는 no 값을 정확히 맞추면 Hello admin이 뜰 것 입니다. 반복적인 쿼리문을 전송 해야 하기 때문에 python code를 작성해 보겠습니다. 값을 확인해 보면 다음과 같습니다.
-
[Lord of SQL_injection] #25 green_dragon$ 웹 해킹 $/los.rubiya.kr 2019. 10. 25. 22:38
문제를 보면 쿼리문이 2개 인것으로 보아 union select 를 이용해서 데이터를 넘겨야 할것 같습니다. 일단 이런 문제를 접했을때 필터링 값을 보면 '(싱글 쿼터)를 필터링 하고 있습니다. 그렇기 때문에 문자열을 넘길 수 없기 때문에 hex값으로 넘겨야 합니다. union select 로 받아야 하는 데이터는 2개 result['id']와 result['pw']이기 때문에 아래와 같이 첫번째 쿼리문을 우회 할 수 있습니다. https://los.rubiya.kr/chall/green_dragon_74d944f888fd3f9cf76e4e230e78c45b.php?id=\&pw=%20or%20id=0x61646d696e%20union%20select%201,2%23 이제 서브 쿼리에 값을 1,2 대신에..