NJCTF2017线上赛web题解ByAssassin Login
打开以后出现⼀个登陆页⾯,下⾯有⼀个注册⽤户的链接。
打开申请界⾯
看着申请的密码还有要求不知道是不是题⽬的关键点。
我们先申请⼀个账号登陆⼀下看看,发现是这样的
尝试申请⼀下admin发现已经存在了
那么本题的知识点是mysql变量名在输⼊太长的时候会被截断!!那么我们就可以构造不是admin但是阶段后是admin的⽤户名
这是登陆的截断,就相当于我们修改了admin的密码⼀样,然后⽤账号admin和密码123QWEasd登陆
就可以成功了!
Get Flag 开始是上传⼀个⽂件⽐如1.jpg可以得到⼀个图⽚,然后我们随便输⼊⼀个东西,⽐如说123,然后我们可以得到如下的东西
payload :
username =admin a
pass =123QWEasd
然后是⼀个base64解码嘛,然后解密⼀下发现是这样的
然后我们发现就是cat查询,中间使⽤bash的通配符!然后可以控制命令⾏。有什么; * ,等都被过滤了,但是&没有被过滤,所以可以通过这个加⼊命令,不断⽤ls得到⽬录,当前没有,向上⽬录搜索,在构造11.jpg&ls ../../../ 解码时时候发现如下:估计就是第⼀个了,于是我们构造11.jpg&cat ../../../9iZM2qTEmq67SOdJp%!oJm2%M4!nhS_thi5_flag 在解码后得到答案!
cat: images/123: No such file or directory
cat: images/11.jpg: No such file or directory
9iZM2qTEmq67SOdJp%!oJm2%M4!nhS_thi5_flag
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
值得⼀提的是,学习⼀发bash的通配符吧
Chall I
google真是个好东西,搜索⼀下hack nodejs就到了⼀篇思路相似的⽂章 基本上思路完全相同,真是学习到了!
⾸先线下的⽹址是 看到的就是两个页⾯⽽已,然后我们观察源码根本什么都没有。然后打开F12看⼀下返回值。既然是讲js的,我们可以看到有angular.js和main.js,打开看⼀看第⼀个似乎是配置⽂件,和我们登陆的系列流程没有什么关系,但是我们再看main.js如下
var passwordApp = dule('passwordApp', []);
$scope.password = '';
$scope.login = {};
$_password = function() {
$http.post('/login', {password: $scope.password}).then(function(response) {
console.log(response.data);
if(response.data.status === 'ok') {
$window.location.href = "/admin";
}
$scope.login = response.data;
}, function(response) {
console.log(response.data);
$scope.login = response.data;
});
}
$scope.logout = function() {
$('/logout').then(function(response) {
if(response.data.status === 'ok') {
$window.location.href = "/admin";
}
}, function(response) { });
}
});
js代码加密软件然后我们似乎到了其他的页⾯吧!
访问⼀下可以看到
尝试登陆⼀下看看效果,登陆后network中多了⼀个login,打开看⼀下
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论