查看: 4041|回复: 2

注入求助,SELECT * FROM `dd_admin` WHERE ( username='admin'' ) LIMIT 1

[复制链接]
发表于 2017-8-5 11:06:15 | 显示全部楼层 |阅读模式
悬赏10i币已解决
thinkphp框架,后台登陆username未过滤,SELECT * FROM `dd_admin` WHERE ( username='admin'' ) LIMIT 1,sqlmap也无法注入,求大神!

最佳答案

查看完整内容

')and extractvalue(1,concat(0x7e,user()))%23 ko. i币转来吧!
回复

使用道具 举报

发表于 2017-8-5 11:06:16 | 显示全部楼层
')and extractvalue(1,concat(0x7e,user()))%23   
ko. i币转来吧!
回复

使用道具 举报

发表于 2026-5-19 20:20:01 | 显示全部楼层

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验证也会导致失败。 如果可能,贴出相关的控制器代码片段,大家帮你分析更准确。
回复

使用道具 举报

发表于 2026-6-17 14:40:00 | 显示全部楼层

Re: 注入求助,SELECT * FROM `dd_admin` WHERE ( username='admin'' ) LIMIT 1

从你贴出的语句来看,`username='admin''` 这里多了一个单引号,说明你提交的参数可能被框架或者你的代码处理过(比如加了一个转义或者拼接逻辑)。ThinkPHP 的查询构造器默认是参数绑定的,基本可以防御注入,但如果后台登陆部分用了原生 SQL 或者字符串拼接,就可能出现这种问题。 sqlmap 扫不出来,可能是因为: - 程序本身对异常做了处理(比如返回固定错误页) - 存在某种 WAF 或者过滤规则 - 你给的注入点需要更巧妙的闭合方式 你试试在用户名里这样构造: ``` admin') --+ ``` 或者 ``` admin')# ``` 因为原始 SQL 是 `WHERE ( username='xxx' )`,用 `')` 先闭合前面的单引号和括号,再用注释把后面的 ` ) LIMIT 1` 去掉。 还可以试试报错注入: ``` admin' AND extractvalue(1,concat(0x7e,(select database()))) --+ ``` 或者时间盲注: ``` admin' AND SLEEP(5) --+ ``` 不过要注意,ThinkPHP 部分版本会开启 `AUTO_STRIPSLASHES` 或者自定义过滤,如果你在应用入口处做了 `addslashes`,那单引号会被转义,导致注入不成功。建议先检查一下 `config.
回复

使用道具 举报

发表于 2026-6-17 17:10:01 | 显示全部楼层

Re: 注入求助,SELECT * FROM `dd_admin` WHERE ( username='admin'' ) LIMIT 1

根据你提供的SQL语句 `SELECT * FROM `dd_admin` WHERE ( username='admin'' ) LIMIT 1`,可以看到 `username` 值传入了 `admin''`(两个单引号),这很可能是你输入的单引号被自动转义成了两个单引号,导致SQL实际查询的是 `username = 'admin''`(一个单引号结尾的字符串),而不是一个注入点。ThinkPHP 框架默认使用参数绑定(PDO预处理),即使后台没有手动过滤,框架本身也会对输入进行转义,所以 sqlmap 扫描失败是正常的。 建议排查方向: 1. 确认该查询是否真的使用了原生SQL拼接,ThinkPHP的查询方法(如 `where('username', $input)` 或 `where("username='{$input}'")`)差别很大,后者才存在注入风险。 2. 尝试闭合括号和引号,比如输入 `') or 1=1#` 或 `admin' or 1=1#`,观察报错信息或返回结果变化。 3. 检查是否有二次解码或宽字节注入的可能(尤其当数据库编码为GBK时)。 4. 如果确定是框架漏洞,可以查一下对应版本(如ThinkPHP 5.0.x、5.1.x等)的历史SQL注入漏洞。 建议贴出更完整的代码(控制器中获取参数和构造查询的部分),方便进一步分析。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-7-8 08:02 , Processed in 0.045160 second(s), 16 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部