第十一关
这里首先要明确一个概念:GET和POST的数据交流方式
GET是从服务器上获取数据,POST是向服务器传送数据。
从第十一关开始就是POST方式交互数据,也就是向服务器传送数据


先分析源代码:







这里咱们的注入点就是通过
预先写好的SQL语句模板

即吧后半段密码匹配语句直接忽略掉即可注入
第十二关:

双引号出现报错,但是”#无反应,继续尝试


第十三关:
这个闭合有点恶心就不试了直接看源码

通过闭合构造出了一个永远正确的用户名
但是这一关貌似只能登陆进去,不能爆出其他的用户名,因为:

没有回显,输出的东西被注释掉了
这一关不用报错语句只能登陆进去,不过现实中渗透的情况用admin登陆进去基本上也是管理员权限的账户了,也蛮好
第十四关:
闭合“”双引号,用报错语句

获取了数据库名,同理如是的渗透爆破
AND(SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT(SELECT CONCAT(CAST(table_name AS CHAR),0x7e)) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=0x7365637572697479 LIMIT 3,1),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a)
表名,修改limit的值 一个个找
第十五关:

这里报错信息也被注释掉了,所以报错是不行了,只能上盲注,并且是基于时间的盲注,因为返回结果都是一样的
闭合为单引号 ’
admin' and if(1=1,sleep(5),1)# 用来测试闭合,要是闭合正确就会延时5秒钟
盲注有关于原理详见less-9的攻略,理论都是一样的,实在太麻烦了,就要知道他们的原理就可以了,具体实施还是利用SQLmap比较好一点
第十六关:

为此种闭合
第十七关:
为修改密码的关卡
首先看源码:

这个value值就是
uname提交的值,这个uname应该是没希望搞进去了,太恶心了...

再看几个陌生的函数:









给value值增加..防止数据库攻击;

很明显,在这里使用password字段进行注入是最好的选择
报错注入,爆出数据库名:

第十八关:

会返现出我的ip,应该是有个函数,可以尝试从这边注入,看看源码:


那IP地址去哪儿了?



直接调用请求包数据,
将其视为一个变量;

注意,此处输出的ip与数据库没有半点关系!!!
注意,此处有一个INSERT INTO插入信息语句

这里的ip使用的是remote_ip也就是路由ip,来自于更底层的协议数据,而user_agent使用的就是包头文件中的数据


但是,观察一下源码:

也就是说,只有在数据库查询匹配的情况下,才会想web网页echo我的uagent信息
emmmmmm..........
有点苛刻

就是这样子
也就是说,这里涉及到的http包头注入,只有在攻击者了解数据库部分内容,才能进行攻击(现实中碰到这种网站,其实也就是注册一个用户的问题而已),想数据库插入已知数据,便可以进行注入了;
观察源码,为单引号和单括号注入

这样就成功绕过了后续的语句,sql错误被输出
再次构造语句:User-Agent: 1',2,3')#
相当于sql语句为:


熟悉的报错场景
基于插件
:

extractvalue(1,concat(0x7e,version())) //爆出版本
AND(SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT(SELECT CONCAT(CAST(DATABASE() AS CHAR),0x7e)) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=DATABASE() LIMIT 0,1),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) //爆出数据库名称

User-Agent: 1'
报错型注入位置 and '1' )#

这里无非就是把逗号
,换成了
and 然后在2回显点进行http包头注入,把原本需要写进数据库里面的插入SQL语句替换成我们需要执行的语句
这里需要注意的是,源码中
的部分数据带有单引号被括了起来,我们在sql注入语句使用的时候也要把相应的注入部分给同样的方式括起来,才能达到同样的执行效果

第十九关
首先输入正确的账号和密码,可以发现回显出的是

referer字段,也就是请求包中的:


在这儿被调用

此处被插入sql语句和echo出来
在插入处构造注入点:

1'
报错型注入点 )#

这里就是爆了一个数据库名出来就行了,意思一样的
第二十关:

我们发现只要成功登陆过一回之后,凡是进入less-20就会跳到这个界面
——说明我们的cookie被存储到了数据库之中
先删掉我们的cookie,重新登陆一次,把每个包都抓下来:

第一个包是登录验证的请求包,将cookie存储在服务器同时在本地留下session信息

第二个包直接验证cookie,相互匹配,然后直接返回这个界面:

直接在第二个请求包下直接添加单引号测试闭合:


这一段直接出现报错
添加#闭合后:

到order by 4 开始报错,即为三列:

进来了:

爆了个库名:


自己整的我这关居然没看源码?!
嘻嘻嘻
疫情期间学习真的需要毅力,
但是,真的真的,
很适合学习