来源:http://bbs.ichunqiu.com/thread-9193-1-1.html?from=ch
WEB安全系列之如何挖掘sql注入漏洞(二次注入)
0x01 前言
讲讲二次注入,不要理解错了,二次注入不是注入两次的意思~
0x02 什么是二次注入
黑客通过构造数据的形式,在浏览器或者其他软件中提交HTTP数据报文请求到服务端进行处理,提交的数据报文请求中可能包含了黑客构造的SQL语句或者命令信息。
0x03 二次注入的危害
跟sql注入相同(请看第一篇)
0x04 实战案例
这次拿tipask问答系统来讲讲
/htdocs/tipask/model/answer_comment.class.php
在评论的时候,评论内容直接拼接到sql语句中。
[AppleScript] [color=rgb(51, 102, 153) !important]纯文本查看[color=rgb(51, 102, 153) !important]复制代码
[color=white !important]
[color=white !important]?
1
2
3
4
function add($answerid, $conmment,$authorid,$author) {
$this->db->query('INSERT INTO `' . DB_TABLEPRE . "answer_comment`(`aid`,`authorid`,`author`,`content`,`time`) values ($answerid,$authorid,'$author','$conmment'," . $this->base->time . ")");
$this->db->query("UPDATE " . DB_TABLEPRE . "answer SET comments=comments+1 WHERE `id`=$answerid");
}
找到调用此函数的地方,共两处
1./htdocs/tipask/control/question.php
255行:
[AppleScript] [color=rgb(51, 102, 153) !important]纯文本查看[color=rgb(51, 102, 153) !important]复制代码
[color=white !important]
[color=white !important]?
1
$_ENV['answer_comment']->add($aid, $comment, $question['authorid'], $question['author']);
2./htdocs/tipask/control/answer.php
70行:
[AppleScript] [color=rgb(51, 102, 153) !important]纯文本查看[color=rgb(51, 102, 153) !important]复制代码
[color=white !important]
[color=white !important]?
1
$_ENV['answer_comment']->add($answerid, $content, $this->user['uid'], $this->user['username']);
利用过程。
1,注册账号test\
2.随便找个问题,评论内容:,user(),111)-- 1
3.评论后,立刻出来user()的结果
4.查看数据库,user()成功插入
0x05 修复建议
过滤危险字符,使用预编译进行增删改查