$ 웹 해킹 $/los.rubiya.kr
-
[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 대신에..
-
[Lord of SQL_injection] #24 evil_wizard$ 웹 해킹 $/los.rubiya.kr 2019. 5. 28. 13:00
바로 전 단계의 문제인 hell_fire 문제와 쿼리문도 일치 합니다. 하지만 주석 처리된 부분을 보면 같다고 생각하는가 라고 질문을 던집니다. 무엇이 바꼈는지를 확인해 보겠습니다. 모든 칼럼의 정렬후 내용이 전부 일치 합니다. 그렇다면 order by ‘’ 를 이용해서 정렬을 안 한 모습의 테이블을 확인해 보겠습니다. 전과는 다른 모습의 테이블이 출력이 되는 것으로 보아 이를 이용하면 될 것 같습니다. Email : aasup3r_secure_email@emai1.com
-
[Lord of SQL_injection] #23 hell_fire$ 웹 해킹 $/los.rubiya.kr 2019. 5. 28. 12:55
문제를 보면 새로운 유형의 문제가 나온 것 같습니다. Order by를 이용한 sql injection 인 것 같습니다. https://los.rubiya.kr/chall/hell_fire_309d5f471fbdd4722d221835380bb805.php?order=1 를 입력 하면 id를 기준으로 내림차순이 일어납니다. https://los.rubiya.kr/chall/hell_fire_309d5f471fbdd4722d221835380bb805.php?order=2 를 입력 하면 email을 기준으로 내림차순이 일어납니다. https://los.rubiya.kr/chall/hell_fire_309d5f471fbdd4722d221835380bb805.php?order=3 를 입력 하면 score를 기준으..
-
[Lord of SQL_injection] #22 dark_eyes$ 웹 해킹 $/los.rubiya.kr 2019. 5. 28. 12:53
해당 문제를 보면 저번 21번 문제와 거의 비슷하지만 필터링이 더 들어가 있는 것을 확인해 볼 수 있습니다. 21번 문제에서는 if문을 이용한 error based sql injection을 했지만 이번에는 if 와 case가 필터링 되어 있기 때문에 다른 방법을 찾아 보겠습니다. 우회 방법을 찾던중 출력하는 필드 수의 차이를 이용한 방법을 찾게 되었습니다. select 1 union select [조건] 의 형태의 우회 방법인데 이렇게 조건을 걸었을 때 조건이 참이라면 1을 반환해서 1개의 필드가 되고, 조건이 거짓이라면 0을 반환하게 되어서 2개의 필드로 인식을 하게 되는 것입니다. 저는 조건이 거짓일 때 에러를 띄우기 위해서 select 1 union select [거짓 조건] 의 형식으로 접근을 ..
-
[Lord of SQL_injection] #21 iron_golem$ 웹 해킹 $/los.rubiya.kr 2019. 4. 6. 01:03
이번 문제부터는... Hello admin이 출력하지 않습니다. 출력해주는것은 mysql_error()났을때 나오는 것입니다. mysql_error()을 일으키는법은 서브쿼리를 이용해서 단일행 서브쿼리, 다중행 서브쿼리, 다중열 서브쿼리 이라는 것이 있는데 다중행 서브쿼리에 단일행 서브쿼리 를 서브쿼리로 넣으면 다르기 때문에 에러가 난다고 합니다. if문을 이용한 서브쿼리 , case를 이용한 서브쿼리 등을 이용하면 에러를 만들수 있습니다. ?pw=' or id='admin' and if(length(pw)=길이 값,(select 1 union select 2),1)%23이라고 작성을 하면 됩니다. 여기서 select 1 union select 2는 2개의 필드를 출력하는 것인데 에러에 출력되는 값을 보..