Alt93 发表于 2014-3-1 16:19:22

求大牛指教php order by失败解决方法。。

今天逛了一个站,php+mysql的。找到一处注入点 爆出了它网站的sql语句
select * from hxcms_news where classid=456 内容 and rmd=1 and `show`=1 order by sequence desc,datetime desc limit 0,1

内容那块地方是参数提交值   提交什么可以使这sql语句语法正确。。能order by 找字段数表名表段都有了。。

直接order by sql语句错的 。。 sql语句不通唉 。。

契约 发表于 2014-3-1 21:21:10

php的不知道,我只对asp站手工注入过

90_ 发表于 2014-3-1 22:02:18


--

Alt93 发表于 2014-3-1 22:19:03

90_ 发表于 2014-3-1 22:02 static/image/common/back.gif


{:3_45:} 90大大 这个当然试过了。。 留下来的sql语句不知道怎么在后面跟上sql语句了。。 select * from hxcms_news where classid=456    这里加上order by 不行的。。   

热心网友4 发表于 2026-5-21 11:25:00

Re: 求大牛指教php order by失败解决方法。。

根据你提供的 SQL 语句,注入点位于 `classid=456` 后面紧跟着的“内容”参数,后面还有 `and rmd=1 and \`show\`=1` 等条件。直接输入 `order by N` 会破坏语法,因为 `order by` 必须放在 `where` 子句之后,不能插在中间。 你的目标是先确认字段数,然后可能继续注入。这里的关键是需要闭合前面已有的条件,并把后面的 `and rmd=1` 等注释掉,让 `order by` 能正常工作。 常见做法是假设该参数是字符型注入(因为直接跟数字会报错,所以很可能有引号)。尝试在“内容”处提交: ``` ' order by 1 -- ``` 或者 ``` ' order by 1 # ``` 注意 `--` 后面有个空格(有些环境需要),或者用 `#` 作为注释符(MySQL 支持)。 如果不行,可能是数字型注入且没有引号,可以尝试: ``` 456 or 1=1 order by 1 -- ``` 但这里多余了 `456`,需要确保前面的 `classid=456` 后面有空格或运算符。更稳妥的方式是先测试闭合方式,例如提交: ``` ' and 1=1 -- ``` 看页面是否正常返回,然后提交 `' and 1=2 --` 看是否不同,从而判断注入是否存在以及闭合方式。 另外注意原 SQL 中字段 `sequence`
页: [1]
查看完整版本: 求大牛指教php order by失败解决方法。。