[Lord of SQL Injection] umaru solving..
말그대로 umaru 문제를 풀면서 작성하는 글
진짜로 말 그대로 umaru문제를 풀면서 작성하는 /tmp/ 스러운 포스팅입니다.
사실 방금 대단한 것을 발견했어요. Time Based SQL Injection이죠.
mysql> update login set no=0 where id='admin' and sleep(ord(mid(pw,1,1))=80);
Query OK, 0 rows affected (1.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
update 문을 공략할 수 있다는 거죠. (이 mysql은 localhost입니다.)
sleep() 함수의 리턴값은 0이기 때문에 and 연산으로는 무조건 거짓이 되게 됩니다.
하지만 sleep()함수 자체의 프리징은 아무런 변화없이 실행됩니다. 따라서 문제를 풀 수 있을 것 같습니다.
특히 where 문이 sleep()과 and로 거짓이 되면서 값이 바뀌지 않으니까 확실히 되겠네요. 감잡았습니다. 이제 파이썬 스크립트를 짜러 갈꺼에요.
친구가 update문을 사용하지 못하게 하라고 하네요. 뭔소린지 대체 모르겠지만, 일단은 실행시키지 않으려면 where 문을 이상하게 고치거나, 오류가 나게 해야할 것 같네요.
그래서 브라우저 console 창에서
document.cookie="PHPSESSID=asdfas";
이렇게 고쳤더니 다시 로그인하래요.
그렇게 곰곰히 생각해봤는데 첫번째 update문이 아닌 두번째 update문을 공략해야할 것 같아요.
제 생각에는 prob_rubiya 에 flag가 저장되어있는 것 같습니다.
===2017.02.22===
일단 세션 변수를 사용하는 쿼리는 조작할 수 없는 것 같다. 그래서 $_GET[flag]를 사용하는 쿼리에 집중해야겠다.
===2017.03.05===
일단 3월로 넘어왔다ㅋㅎ
prob_umaru하고 prob_rubiya의 flag들이 같을까 같으면 대충 blind sqli로 풀겠는데 다르다면 푸는 데 꽤 골치 아플 것 같다.
mysql> update test set no=(select ord(substr(id,1,1))=97);
Query OK, 0 rows affected (0.01 sec)
Rows matched: 1 Changed: 0 Warnings: 0
http://los.eagle-jump.org/umaru_6f977f0504e56eeb72967f35eadbfdf5.php?flag=(select%20sleep(10))
http://los.eagle-jump.org/gremlin_bbc5af7bed14aa50b84986f2de742f31.php?id=%27||sleep(10)%2B1%23
'write-ups > Lord of SQL Injection' 카테고리의 다른 글
Lord of SQL Injection alien write-up (0) | 2020.03.11 |
---|---|
LoS 올클했씁미다 (0) | 2017.03.05 |
[los] DB가 바뀌고 나서의 xavis write up (2) | 2016.12.26 |
[Lord of SQL Injection] Assassin Zombie 풀이 (0) | 2016.11.08 |
[Lord of SQL Injection] Assassin 풀이 (0) | 2016.11.08 |