less-11

uname和passwd直接带入查询,万能密码

sqlmap自动搜索表单,或者抓包后用-r参数


less-12

post数据用小括号进行包裹,构造万能密码") or 1=1 #


less-13

将mysql_error()返回前端,且用‘)包裹,构造') or 1=1 #


less-14

post的数据用双引号包裹,构造万能密码"or 1=1 #


less-15

报错不返回前端,考虑布尔和时间盲注


less-16

与15思路相同,但是由小括号,双引号包裹


less17

这里是更新用户的密码。

加入了过滤函数,只将uname带入查询,并对uname进行处理

 1 function check_input($value)
2 {
3 if(!empty($value)) //不能为空
4 {
5 // truncation (see comments)
6 $value = substr($value,0,15); //只获取前15位字符串
7 }
8
9 // Stripslashes if magic quotes enabled
10 if (get_magic_quotes_gpc()) 如果开启了gpc
11 {
12 $value = stripslashes($value); 用这个函数处理
13 }
14
15 // Quote if not a number
16 if (!ctype_digit($value))如果不是数字的话,对特殊字符进行转义,并包裹单引号
17 {
18 $value = "'" . mysql_real_escape_string($value) . "'";
19 }
20
21 else
22 {
23 $value = intval($value);
24 }
25 return $value;
26 }

但是,防御函数只处理了uname变量,并未对passwd处理。


less-18

这里提示了IP,可能是xxf注入

通过分析源码,这里对uname和passwd参数进行了处理,但是还有两个新的全局变量可控,ip和user-agent

 1 function check_input($value)
2 {
3 if(!empty($value))
4 {
5 // truncation (see comments)
6 $value = substr($value,0,20);
7 }
8
9 // Stripslashes if magic quotes enabled
10 if (get_magic_quotes_gpc())
11 {
12 $value = stripslashes($value);
13 }
14
15 // Quote if not a number
16 if (!ctype_digit($value))
17 {
18 $value = "'" . mysql_real_escape_string($value) . "'";
19 }
20
21 else
22 {
23 $value = intval($value);
24 }
25 return $value;
26 }
27
28
29
30 $uagent = $_SERVER['HTTP_USER_AGENT'];
31 $IP = $_SERVER['REMOTE_ADDR'];
32 echo "<br>";
33 echo 'Your IP ADDRESS is: ' .$IP;
34 echo "<br>";
35 //echo 'Your User Agent is: ' .$uagent;
36 // take the variables
37 if(isset($_POST['uname']) && isset($_POST['passwd']))
38
39 {
40 $uname = check_input($_POST['uname']);
41 $passwd = check_input($_POST['passwd']);
42
43 /*
44 echo 'Your Your User name:'. $uname;
45 echo "<br>";
46 echo 'Your Password:'. $passwd;
47 echo "<br>";
48 echo 'Your User Agent String:'. $uagent;
49 echo "<br>";
50 echo 'Your User Agent String:'. $IP;
51 */
52
53 //logging the connection parameters to a file for analysis.
54 $fp=fopen('result.txt','a');
55 fwrite($fp,'User Agent:'.$uname."\n");
56
57 fclose($fp);
58
59
60
61 $sql="SELECT users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
62 $result1 = mysql_query($sql);
63 $row1 = mysql_fetch_array($result1);
64 if($row1)
65 {
66 echo '<font color= "#FFFF00" font size = 3 >';
67 $insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
68 mysql_query($insert);
69 //echo 'Your IP ADDRESS is: ' .$IP;
70 echo "</font>";
71 //echo "<br>";
72 echo '<font color= "#0000ff" font size = 3 >';
73 echo 'Your User Agent is: ' .$uagent;
74 echo "</font>";
75 echo "<br>";
76 print_r(mysql_error());
77 echo "<br><br>";
78 echo '<img src="../images/flag.jpg" />';
79 echo "<br>";
80
81 }
82 else
83 {
84 echo '<font color= "#0000ff" font size="3">';
85 //echo "Try again looser";
86 print_r(mysql_error());
87 echo "</br>";
88 echo "</br>";
89 echo '<img src="../images/slap.jpg" />';
90 echo "</font>";
91 }
92
93 }

当–level参数设定为3或者是3以上时,会尝试对User-Agent进行注入测试

sqlilab less11-less18的更多相关文章

  1. 【sqli-labs】Less18~Less22

    Less18: User-Agent注入,有错误回显 感叹一句,越来越难了.现在只能先看代码再分析怎么注入了..... 通过代码,发现username和password均做了校验.但是会有一个插入us ...

  2. 【sqli-labs】Less11~Less16

    学习sqli-labs的笔记,前面的笔记内容比较详细.后面的只记录关键点了. Less11: POST注入, 有回显,有错误提示 从11题起是POST注入,发现有两个输入框.用firefox的F12查 ...

  3. sqli-labs Less-11 and Less-12

    这关是post注入的世界,post注入就是表单中填好数据通常会被送到服务器,然后由服务器将其发送到它要去的地方(比如,送到一个服务器网关程序中,然后由这个程序对其进行处理). 不显示东西,那么加引号等 ...

  4. sqli-labs less-11 --> less-12

    Less-11(报错注入POST方式) 1.判断是否存在注入点 因为是POST 方式的与GET方式稍有不同,可以选择使用burp suite以及火狐的hackbar进行操作,直接在输入框usernam ...

  5. sqli-lab 第一题 单引号 error based single quotes

    一.第一次见面 1.初识 http://localhost/Less-1/ 提示输入id,因此访问http://localhost/Less-1/?id=1 可以继续测试id=2.3.4等的情况,会输 ...

  6. 【sqli-labs】 less18 POST - Header Injection - Uagent field - Error based (基于错误的用户代理,头部POST注入)

    这次username和password都进行了输入校验 但是ip和uagent没有校验 当我们用admin admin登陆成功后,就会一条插入语句 由于程序无条件的信任了浏览器的header信息,那么 ...

  7. 【sqli-labs】 less11 POST - Error Based - Single quotes- String (基于错误的POST单引号字符型注入)

    查看源码,用户名和密码通过post提交 加单引号提交 出现报错,推测对应的SQL语句 , 直接使用or构造永真登录 成功,注意此处登录的用户为表中的第一个用户 需要改变用户可以通过改变筛选条件实现 作 ...

  8. less11 属性合并

    less //+ 合并以后,以逗号分割属性值 .mixin() { box-shadow+: inset 0 0 10px #555 ; } .myclass { .mixin(); box-shad ...

  9. 2019-10-24:渗透测试,sqli-labe,less18,19关

    less19基于错误_POST_Referer_请求头注入 查看关键源码,跟18关不一样的只是,回显的是Referer不是User-Agent,判断INSERT语句结构:INSERT INTO tab ...

随机推荐

  1. python 实现多层列表拆分成单层列表

    有个多层列表:[1, 2, 3, 4, [5, 6, [7, 8]], ['a', 'b', [2, 4]]],拆分成单层列表 使用内置方法 结果和原列表顺序不同 def split(li): pop ...

  2. Camera2使用textureView支持

    SurfaceView 绘制会有独立窗口, TextureView 没有独立的窗口,可以像普通的 View 一样,更高效更方便 public class MainActivity extends Ap ...

  3. js 值类型与引用类型

    说明之前先提一个提问题,看一下你是怎么理解的 1. 值类型 简单的数据类型,存放在栈中 var num = 100; var num2 = num; num += 100; console.log(n ...

  4. Intellij IDEA创建Maven Web项目(带有webapp文件夹目录的项目)

    每日技术点记录一下https://blog.csdn.net/mawei7510/article/details/83089268

  5. c库中sprintf

    用法:sprintf指的是字符串格式化命令,主要功能是把某个数据写入某个字符串中: 我的理解就是,将某个其它类型的数据按着某一格式写入char *a,因此叫格式化命令: 语法: #include< ...

  6. 专攻知识小点——回顾JavaWeb中的servlet(三)

    HttpSession基本概述 ** ** 1.HttpSession:是服务器端的技术.和Cookie一样也是服务器和客户端的会话.获得该对象是通过HTTPServletRequest的方法getS ...

  7. 牛客1029A 袜子分配

    题面传送门 没学过数论的蒟蒻第一次做出数学题, 这是一种乱搞的复杂做法 先来看个简单的问题, 数字1-10取1个,问包含1的方案有多少种.显然,每一个数字取到的概率是同样的, 方案数为    , su ...

  8. python实现非常有趣的数学问题

    1.无重复数字的三位数 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? import itertools ret = [] for i in range(1, 5) ...

  9. 用GitHub Pages搭建博客(三)

    本篇介绍通过git工具替换网站主题,并发布 Jekyll和Hexo的简要介绍   GitHub Pages是基于Jekyll构建的,Jekyll 是一个简单的博客形态的静态站点生产工具,它有一个模版目 ...

  10. Git的全局及单个仓库配置

    我们先来了解一下在git中的配置文件路径: /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置. 如果在执行 git config 时带上 --system 选项,那么它就 ...