Less-11

0x1 hackbar+sqlmap

1.打开页面是一个登陆框,试着输入Usernam=11,Password=11,结果如下

2.在hackbar中提交参数uname=11'&passwd=&submit=Submit,出现报错提示,

根据报错提示进行闭合'#,使用万能密钥or '1'='1'构造参数uname=11'or'1'='1'#&passwd=&submit=Submit,成功拿到一个用户名和密码,登陆成功

3.判断可注入类型,构造参数uname=11'or '1'='2'#&passwd=&submit=Submit,登陆失败,所以存在布尔型注入,接下来用sqlmap注入完事

Less-12/13/14

同Less-11一样的操作,只是分别用")#,')#,"#闭合而已

Less-15

1.打开页面一如既往是个登陆框,各种构造Username,加',",')等等都是同样的页面登陆失败,考虑使用sleep()函数或者万能密钥or '1'='1',果然构造Username=1'or'1'='1'#登录成功

2.知道了闭合方式,方法很多了,在Get篇有很多,咱就不写了,最简单的直接sqlmap

Less-16

同Less-15操作一样,闭合方式为")#,最简单也是sqlmap

Less-17(鉴于前几关没写其他方法,这里索性来种方法,让你爽到不想再注入…)

0x01 PHP代码分析

1.首先同上面几关一样进行注入,结果都是一张图,也没有报错提示

这不明摆着使用时间延迟盲注吗,但是不知道闭合方式啊,所以啊查看一手源码

$uname=check_input($con, $_POST['uname']);
$passwd=$_POST['passwd'];
$fp=fopen('result.txt','a');
fwrite($fp,'User Name:'.$uname."\n");
fwrite($fp,'New Password:'.$passwd."\n");
fclose($fp);
@$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";
$result=mysqli_query($con, $sql);
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
//echo $row;if($row){//echo '<font color= "#0000ff">';   $row1 = $row['username'];    //echo 'Your Login name:'. $row1;$update="UPDATE users SET password = '$passwd' WHERE username='$row1'";mysqli_query($con, $update);echo "<br>";if (mysqli_error($con)){echo '<font color= "#FFFF00" font size = 3 >';print_r(mysqli_error($con));echo "</br></br>";echo "</font>";}else{echo '<font color= "#FFFF00" font size = 3 >';//echo " You password has been successfully updated " ;       echo "<br>";echo "</font>";}echo '<img src="../images/flag1.jpg"   />';
.$row['password'];echo "</font>";}else  {echo '<font size="4.5" color="#FFFF00">';//echo "Bug off you Silly Dumb hacker";echo "</br>";echo '<img src="../images/slap1.jpg"   />';echo "</font>";  }
}

根据源码可知,当接收到unamePassword后,先用check_input()检查一遍uname后,再连接数据库根据unameunamepassword是否存在,若不存在,就回显那张打脸的图,若存在就可以正常报错了。

0x02 check_input()函数分析

上代码

function check_input($con, $value){if(!empty($value)){// truncation (see comments)$value = substr($value,0,15);}// Stripslashes if magic quotes enabledif (get_magic_quotes_gpc()){$value = stripslashes($value);}// Quote if not a numberif (!ctype_digit($value)){$value = "'" . mysqli_real_escape_string($con, $value) . "'";}else{$value = intval($value);}return $value;}

分析该代码,先知晓其中的函数






  1. uname非空,截取它的前15个字符。
  2. php环境变量magic_quotes_gpc打开,去除转义的反斜杠\
  3. uname字符串非数字,将其中特殊字符转义;为数字则将其转为数字类型。
    所以我们几乎不可能在uname处注入,唯一的注入点在passwd处。

0x03 时间延迟型盲注

1.根据上述分析,本关不能采用布尔型盲注,因为uname存在才能返回MySQL报错,所以得先猜出uname,比如admin,dumb等,而且uname 不能进行注入,所以只有考虑password进行注入,果然admin存在,登陆成功

构造passwd='sleep(5)报错,

2.再跟据报错构造'#进行闭合,再进行是否存在时间延长型盲注,构造password='or sleep(5)#,页面加载很慢,存在时间延迟盲注。
3.sqlmap跑咯
构造py -2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-17/" --data "uname=admin&passwd=&submit=Submit" --technique T -dbs --batch
跑出数据库

其他就是参数改改参数了,不写了

0x04 extractvalue()注入

extractvalue()函数:对XML文档进行查询的函数
语法:extractvalue(目标xml文档,xml路径)
第二个参数是可以注入的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
正常查询 第二个参数的位置格式 为 /xxx/xx/xx/xx ,即使查询不到也不会报错,所以故意写入语法错误,使其返回我们想要知道的内容,一般用extractvalue(1,concat('~',(想要知道的内容))),还有一点该函数能查询的消息最大长度为32位,所以有时候还需要substr()函数,extractvallue(1,concat('~',substr((select database())1,5)))(查询数据库名称前五位)。
1.由时间盲注我们已经知道了闭合方式,所以可以直接开始注入,构造uname=admin&passwd='or extractvalue(1,concat('~',(database())))#&submit=Submit,成功爆出库名
2,其他爆表,爆字段采用相应的语句就好了,在Get篇都有

0x05 updatexml()注入

updatexml()函数与extractvalue()类似,是更新xml文档的函数。
语法:updatexml(目标xml文档,xml路径,更新的内容)
报错方式相同:
select username from security.user where id=1 and (updatexml(‘anything’,concat(‘~’,(select database())),’anything’))
注入过程同extractvalue()注入一样

0x06 双查询注入

这里主要想强调两个东西:
一.or/and后跟双查询注入的时候应该使用派生表,即select 1 from(select count(*),concat((查询语句),floor(rand()*2))as x from information_schema.tables)as a
而使用union时,需要满足两个select列数相同的条件。
(这都是笔者亲自做实验的结论)
二.后台为select时要用union(也可以用and,or);后台为update/delete/insert时要用or
开始注入(这里笔者使用burp,也可以用hackbar,直接在登陆框注入也可以),
1.爆库
2.使用burp直接爆破出所有库

3.爆表,表列字段也一样,这里说一下如何使用burp爆破吧
1)将拦截到的数据包发送到Repeater,然后在Repeater中清除掉默认爆破点,再自己添加爆破点

2.在载荷里面选着爆破参数,这里参数的选择如图

然后就可以开始攻击了。
3.爆破完后就可以查看结果了

sqli-labs(11-17)相关推荐

  1. SQLi LABS Less 17 报错注入

    第十七关单引号字符型注入 ,推荐使用报错注入. 一.功能分析 这关是一个修改密码的功能,先查询用户名是否正确. 如果用户名正确,后台就修改密码,并提示修改成功: 如果用户名错误,页面就直接返回修改失败 ...

  2. Interview:算法岗位面试—11.17下午上海某网**软件公司(上市)技术面之比赛考察、目标检测算法、视频分析算法考点

    Interview:算法岗位面试-11.17下午上海某网**软件公司(上市)技术面之比赛考察.目标检测算法.视频分析算法考点 导读:邀约的下午14.30,到的时候前边有两个学生在等待,当轮到我的时候, ...

  3. SQLi LABS Less 27a 联合注入+布尔盲注+时间盲注

    第27a关是双引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.布尔盲注.时间盲注三种解题方式. 其他 SQLi LABS 靶场的解题步 ...

  4. SQLi LABS Less 27 联合注入+报错注入+布尔盲注+时间盲注

    第27关是单引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.报错注入.布尔盲注.时间盲注四种解题方式. 其他 SQLi LABS 靶场 ...

  5. SQLi LABS Less 26a 联合注入+布尔盲注

    第26a关是单引号+括号的字符型注入: 后台过滤了关键字( and  or ),注释(/*  #  --  /),空格: 这篇文章提供联合注入.布尔盲注.两种解题方式. SQLi LABS其他关卡可以 ...

  6. SQLi LABS Less 25 联合注入+报错注入+布尔盲注

    第二十五关单引号字符型注入: 过滤了关键字(and.or),可以使用双写绕过: 这篇文章提供了联合注入.报错注入.布尔盲注三种解题方法. SQLi LABS 其余关卡可参考我的专栏:SQLi-LABS ...

  7. Linux异常 时间戳 2018-10-08 11:17:22 是未来的 5288025.776562967 秒之后

    Linux异常 时间戳 2018-10-08 11:17:22 是未来的 5288025.776562967 秒之后 参考文章: (1)Linux异常 时间戳 2018-10-08 11:17:22 ...

  8. 11.9 至 11.17 四道典型题记录: Counter 弹出 | map函数 | 子集求取 | 有序字符桶分装

    11.9 至 11.17 四道典型题记录: Counter 弹出 | map函数 | 子集求取 | 有序字符桶分装    昨天休息的时候一直在想应该学习哪种语言,我想这也是好多人发愁无法下手的原因之一 ...

  9. dom更新到底在javascript事件循环的哪个阶段?「前端每日一题v22.11.17」

    dom更新到底在javascript事件循环的哪个阶段?「前端每日一题v22.11.17」 昨天写了一篇文章,是javascript的事件循环机制,然后在某乎上也发了,在发的时候看到了一个问题,dom ...

  10. 预习:11.16/11.17 Apache默认虚拟主机-11.24 静态元素过期时间

    预习: 11.16/11.17 Apache默认虚拟主机 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 11.22 访问日志不记录静态文件 11 ...

最新文章

  1. FAT32转换NTFS格式的命令
  2. tp剩余未验证内容-8
  3. Server2003PDC迁移到Server2008R2BDC
  4. 在tsx中引入less会提示模块找不到,但是可以运行
  5. 使用Spring AOP进行面向方面的编程
  6. 工作184:自定义事件
  7. Codeforces Round #558 Div.2 - C2 - Power Transmission (Hard Edition)
  8. 遗传算法工具箱_含约束条件的遗传算法在连续催化重整优化操作中的应用
  9. Unreal Engine 4 系列教程 Part 8:粒子系统教程
  10. mac关闭自动更新提示
  11. C盘爆满,电脑卡顿,笔记本电脑一键重置,让电脑运行重新变快!
  12. 带有分销体系的开源知识付费系统——cremb
  13. 如何安装VCC++6.0并创建第一个项目
  14. python中重采样的时间间隔与等距,resample,periods
  15. 切勿忽视晶振的选型设计!
  16. Android — jimu Mirror
  17. linux磁盘检测工具
  18. 51单片机74ls273并行输出地址c语言程序,51单片机I/O口的扩展问题:使用 锁存器74LS273连接后还是只有8个端口,为什么说是扩展呢?...
  19. 10.配置Elasticsearch
  20. 狠!删库跑路!一行代码蒸发10亿人民币!

热门文章

  1. access 调用 webbrowser_函数调用过程与栈帧结构 - wuli涛涛
  2. CSDN 第一篇随笔
  3. 清华计算机系分数线2018四川,四川多少分能上清华?附清华大学在四川的录取分数线...
  4. Fibonacci 斐波那契数列的R语言实现
  5. tx2上装scikit-image
  6. 中美计算机软件著作权登记差异与比较
  7. 【2019.05】腾讯防水墙滑动验证码破解 python + selenium + OpenCV
  8. gyp ERR! stack Error: Can't find Python executable python, you can set the PYT HON env variable.
  9. 100-1000的水仙花数 有哪些?
  10. 制作ZedBoard-linaro-desktop-ubuntu全过程之运行linaro系统