728x90
Lord of sql injection - Blue Dragon 풀이 |
los 27번 풀이 포스팅입니다. 이번에는 블루드래곤 !
문제 접근
처음 문제를 보고 뭔가 쉬워보였는데 다시 살펴보니 preg_match가 두 파트에 나누어서 위치해있다. 그리고 싱글쿼터는 입력에는 필터링이 안걸려있지만, 결과를 출력할때에 싱글쿼터를 필터링 하고 있다.
즉 내가 만약에 id나 pw에 싱글쿼터를 넣게되면
다음과 같이 쿼리는 출력되지만, select된 값을 출력할때 내가 id에 싱글쿼터를 입력했으므로 결과가 안보이게 되는것이다.
문제는 admin의 password를 알아야하는데, 싱글쿼터없이 admin의 pw를 확인할 수 있는 쿼리를 만들어보려다가 실패해서 그냥 time based sql injection을 이용하기로 했다. No Hack 이라는 결과가 나오더라도 조건이 참일때 지연시간이 있으므로 그것을 이용해서 풀이하면된다. 이렇게 방향을 잡고나니 쉽게 해결가능했다.
이미 이전의 문제들에서 time based sql injection은 if문의 조건에 패스워드를 탐색하기 위한 조건을 넣고, TRUE일때
sleep을 걸어주는 것으로 많이 연습했으므로 생략하겠다.
?pw=' or if(id='admin' and length(pw)=any number,sleep(3),1)%23 |
탐색된 비밀번호의 길이는 8이다.
?pw=' or if(id='admin; and ord(substr(pw,index,1))=any char,sleep(3),1)%23 |
password는 ')948b8a0' 인줄 알았으나..?
안돼서 sleep함수 시간을 5로 줬더니 처음 ) 문자가 d로 나왔다. 아마 내가 지금 접속해있는 환경문제때문에
지연시간 조건을 좀 더 확실하게 줘야하는거같다
최종 pw는 d948b8a0
풀이에 사용한 코드
clear!!
728x90
'개인 공부 > WEB' 카테고리의 다른 글
[웹해킹] LOS 29 - (Phantom) (0) | 2021.07.03 |
---|---|
[웹해킹] LOS 28 - (Frankenstein) (0) | 2021.07.03 |
[웹해킹] LOS 26 - (Red Dragon) (0) | 2021.07.03 |
[웹해킹] LOS 25 - (Green Dragon) (0) | 2021.07.03 |
[웹해킹] LOS 24 - (Evil_Wizard) (0) | 2021.07.03 |
댓글