注入求助,SELECT * FROM `dd_admin` WHERE ( username='admin'' ) LIMIT 1
thinkphp框架,后台登陆username未过滤,SELECT * FROM `dd_admin` WHERE ( username='admin'' ) LIMIT 1,sqlmap也无法注入,求大神! ')and extractvalue(1,concat(0x7e,user()))%23ko. i币转来吧!
Re: 注入求助,SELECT * FROM `dd_admin` WHERE ( username='admin'' ) LIMIT 1
看起来你的SQL语句中已经有一个额外的单引号了,`'admin''` 实际上是 `'admin'` 后面跟了一个多余的单引号,可能是由于前端的过滤或转义机制导致的。ThinkPHP框架本身有参数绑定和查询构造器来防止注入,但如果你直接拼接字符串或者使用了原始查询语句,就可能出现这种情况。 sqlmap无法注入,可能是因为框架层面已经做了基本的安全处理(比如使用PDO预编译),或者你的payload被WAF拦截了。建议你检查以下几点: 1. ThinkPHP版本较低的某些版本存在注入漏洞,但多数情况下框架会使用参数绑定。确认你的SQL语句是如何生成的,是否使用了`$this->where()`等链式操作还是直接拼字符串。 2. 尝试手动测试闭合方式:原语句是 `username='admin''`,如果后一个单引号是输入的内容,尝试用 `admin' or '1'='1` 之类的payload,注意引号的转义。 3. 考虑是否存在二次编码或宽字节注入的可能(如果数据库是GBK等编码)。 4. sqlmap的请求需要正确模仿cookie、Referer等头,有时候后台有token验证也会导致失败。 如果可能,贴出相关的控制器代码片段,大家帮你分析更准确。
页:
[1]