问题出在\hdwiki\control\user.php下
最新版HDWIKI 5.1 GBK版本
HDWIKI全局过滤,但是面对宽字节注入,就容易出问题了
关键代码是
HDWIKI在大部分编码转换之后的地方都会addslashes
这里我们跟进这个函数set_profile()
进入mysql前并没有进行addslashes
而且我们有$location,$signature
思路是让location引入\注释后面的单引号 由signature来注入
由于没有开display_error ,我们延时看看

我们就能盲注查询管理员密码
但是有时候密码是破不出来的,怎么办呢
我们其实可以替换管理员密码
先说说HDWKI的表构造
由于管理员和普通的账号都存储在wiki_user下,所以这里由于是update的是这个表
但是问题来了
我们引入password的时候 格式一般都是
但是这里是无法引入单引号的(会被addslashes),而不打单引号又会被当成表名,不被识别为value。
这里用要一个小技巧
MYSQL对十六进制是能够自动识别 转换的。
比如

这样我们就能绕过单引号而update管理员密码了
我们先本地用脚本转换ascii为hex
然后向http://localhost/hdwiki/index.php?user-editprofile
post
成功修改密码
