对于XSS的学习过程,已经更新在CSDN博客

题目分析

这道题目告诉我们flag在admin.php中,只有admin才能获取它,我们点击进去之后发现并没有flag,这是为什么呢?因为我们不是admin,因此,我们必须伪装成admin。
题目的下面有一行代码,substr((md5(‘proof of work’),0,6) === ‘4b3392’)
这一行代码的意思是截取经过MD5编码的工作量的前6个数字。
proof of work百度的是区块链中的工作量证明:在区块链中,Pow代表的是一种运作机制,这种机制强制要求财富的获取方式只能是通过劳动所得,也就是算力运算-挖矿。我的理解就是得到的结果是通过大量的运算得来的。
这块也是参考了很多的资料,因为对这一部分不是特别的理解。
在这里插入图片描述
这块是随机的,我们接下里破解一下

  • 尝试使用proofofwork这个软件破解来着,但是没有安装成功。(明天更新了python在试一下)
  • itertools暴力解决
1
2
3
4
5
6
7
8
9
10
11
12
import hashlib
from itertools import count

mes = 'admin'
for i in count():
md = hashlib.md5()
str1 = str(i)
md.update(str1.encode('utf-8'))
hashid = md.hexdigest()
if hashid.startswith('384216'):
print(str1)
break

将跟随机产生的字符串能匹配上的字符串打印出来,输入到MD5的输入框里面
就显示,提交成功了。
但是点击之后是空白的界面。
在这里插入图片描述

  • token了解
    token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。
    当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。
    简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。
  • 获取token
    通过在线注册XSS平台,在怀疑会出现XSS的地方植入代码,获得token信息。
  • 假冒admin,更改cookie的信息

    通过使用burp抓包

    使用过程简略,找到cookie之后,我们要在把token的值拼接上去,forward就可以了,在admin界面中就会出现Cookie的值。