查看: 2822|回复: 4

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

[复制链接]
发表于 2014-3-1 16:19:22 | 显示全部楼层 |阅读模式
悬赏5i币未解决
今天逛了一个站,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站手工注入过
回复

使用道具 举报

发表于 2014-3-1 22:02:18 | 显示全部楼层

  1. --
复制代码

点评

90大大 这个当然试过了。。 留下来的sql语句不知道怎么在后面跟上sql语句了。。 select * from hxcms_news where classid=456 这里加上order by 不行的。。  详情 回复 发表于 2014-3-1 22:19
回复

使用道具 举报

 楼主| 发表于 2014-3-1 22:19:03 | 显示全部楼层
90_ 发表于 2014-3-1 22:02

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

使用道具 举报

发表于 3 天前 | 显示全部楼层

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`
回复

使用道具 举报

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

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

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

官方核心成员

关注微信公众号

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

GMT+8, 2026-5-24 08:33 , Processed in 0.022881 second(s), 15 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部