cookie注入
cookie注入原理:
修改cookie的值,使注入的值能够在拼接数据库查询语句从而获得信息,基本上与SQL注入中的get方式提交和post表单方式提交无区别。
cookie注入形成条件:
1、程序对get和post方式提交的数据进行了过滤,但未对cookie提交的数据库进行过滤。
2、在条件1的基础上还需要程序对提交数据获取方式是直接request(“xxx”)的方式,未指明使用request对象的具体方法进行获取,也就是说用request这个方法的时候获取的参数可以是在URL后面的参数也可以是cookie里面的参数这里没有做筛选,之后的原理就像我们的sql注入一样了。
cookie注入阶段:
1.判断是否存在cookie注入点
2.得到字段总数
3.查选表名
4.查选列名
5.得到列名的值
其过程和sql注入一致,简单来讲,cookie是sql注入中的一种。
设置cookie
1、设置cookie值,打开相关网址后,清空地址栏输入以下语句,就能设置cookie字段为id,值为284,设置完后,重新打开新网址,新网址是以设置的cookie值重新访问网站的。
javascript:alert(document.cookie="id="+escape("284"))
document.cookie:表示当前浏览器中的cookie变量
alert():表示弹出一个对话框,在该对话框中单击“确定”按钮确认信息。
escape():该函数用于对字符串进行编码。
cookie注入的原理在于更改本地的cookie,从而利用cookie来提交非法语句。
2、利用相关cookie设置工具
SQL-lab实战(less-21)
1.首先经过各种尝试对username、password注入无效,故根据题目提示考虑cookie注入,先抓包分析
经分析相关的表单提交字段为uname,passwd,和submit
2.根据题目提示,使用cookie注入,理解其原理,查看源码
if(isset($_POST['uname']) && isset($_POST['passwd']))
{
$uname = check_input($_POST['uname']);
$passwd = check_input($_POST['passwd']);
$sql="SELECT users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
$result1 = mysql_query($sql);
$row1 = mysql_fetch_array($result1);
if($row1)
{
echo '<font color= "#FFFF00" font size = 3 >';
setcookie('uname'