sql注入原理
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询。
在于用户交互的过程中,用户的输入拼接到SQL语句中,执行与原定计划不同的行为,从而产生了sql注入漏洞。
造成sql注入的核心就是:把用户输入的数据当做代码执行了。
比如一个登陆框的sql语句为:
select * from admin where username=‘用户输入的用户名’ and password=‘用户名的密码’
用户输入的内容可由用户自行控制,列如可以输入’ or 1=1 --空格
SQL语句:select *from admin where username =’ ’ or 1=1 – ’ and password =‘用户输入的密码’
其中or 1=1 永远为真 ,–注释后面的内容就不会在执行,因此会返回admin表中的所有内容
post注入万能密码靶场
第一题
随便输入登录密码错误
使用万能密码’ or 1=1 #
成功登录
第二题
这里使用的是("")闭合,那么就可使用 “)将前面闭合,最后语句会变为(”")") or 1=1 # 这样就把前面闭合了,然后就会执行sql语句
输入万能密码 ") or 1=1 #
成功登录
使用burp爆破的方法:
首先网上查找万能密码把万能密码复制到txt文件中
抓取登录的数据包
放到爆破模块中,把输入的账号选中
放入保存好的字典
开始爆破
就可以看到使用各个万能密码返回的状态
git传参sql注入
url栏中带有?号的就是Git传参
这是一个带有Git传参的新闻页面
怎么知道存在sql注入呢?
使用
’
and 1=1
and 1=2
and -1=-1
and -1=-2
and sleep(5)
等等,有很多种方法
这里
使用and 1=1 and 1=2 测试
and 1=1 页面正常
and 1=2
页面不正常没有回显,可以看到输入的数据跟数据库进行了交互,然后数据库没有查到,返回的页面就会异常,证明存在sql注入
使用sqlmap寻找sql注入
sqlmap是检测和利用SQL注入漏洞的一款强大工具
登录注入演示
首先抓取一个登录的数据包,把里面的内容保存到txt文件中,放到sqlmap目录下
打开sqlmap
输入命令sqlmap.py -r 1.txt -p username --dbs,就会开始查找是否有注入
演示git传参注入
先复制url栏里的地址
使用命令sqlmap.py -u “要查找注入的url地址” --dbs
就可以查找到是否存在注入