sqli-labs(11-17)
Less-11
0x1 hackbar+sqlmap
1.打开页面是一个登陆框,试着输入Usernam
=11,Password
=11,结果如下
2.在hackbar中提交参数uname=11'&passwd=&submit=Submit
,出现报错提示,
根据报错提示进行闭合'#
,使用万能密钥or '1'='1'
构造参数uname=11'or'1'='1'#&passwd=&submit=Submit
,成功拿到一个用户名和密码,登陆成功
3.判断可注入类型,构造参数uname=11'or '1'='2'#&passwd=&submit=Submit
,登陆失败,所以存在布尔型注入,接下来用sqlmap注入完事
Less-12/13/14
同Less-11一样的操作,只是分别用")#
,')#
,"#
闭合而已
Less-15
1.打开页面一如既往是个登陆框,各种构造Username
,加'
,"
,')
等等都是同样的页面登陆失败,考虑使用sleep()
函数或者万能密钥or '1'='1'
,果然构造Username
=1'or'1'='1'#
登录成功
2.知道了闭合方式,方法很多了,在Get篇有很多,咱就不写了,最简单的直接sqlmap
Less-16
同Less-15操作一样,闭合方式为")#
,最简单也是sqlmap
Less-17(鉴于前几关没写其他方法,这里索性来种方法,让你爽到不想再注入…)
0x01 PHP代码分析
1.首先同上面几关一样进行注入,结果都是一张图,也没有报错提示
这不明摆着使用时间延迟盲注吗,但是不知道闭合方式啊,所以啊查看一手源码
$uname=check_input($con, $_POST['uname']);
$passwd=$_POST['passwd'];
$fp=fopen('result.txt','a');
fwrite($fp,'User Name:'.$uname."\n");
fwrite($fp,'New Password:'.$passwd."\n");
fclose($fp);
@$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";
$result=mysqli_query($con, $sql);
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
//echo $row;if($row){//echo '<font color= "#0000ff">'; $row1 = $row['username']; //echo 'Your Login name:'. $row1;$update="UPDATE users SET password = '$passwd' WHERE username='$row1'";mysqli_query($con, $update);echo "<br>";if (mysqli_error($con)){echo '<font color= "#FFFF00" font size = 3 >';print_r(mysqli_error($con));echo "</br></br>";echo "</font>";}else{echo '<font color= "#FFFF00" font size = 3 >';//echo " You password has been successfully updated " ; echo "<br>";echo "</font>";}echo '<img src="../images/flag1.jpg" />';
.$row['password'];echo "</font>";}else {echo '<font size="4.5" color="#FFFF00">';//echo "Bug off you Silly Dumb hacker";echo "</br>";echo '<img src="../images/slap1.jpg" />';echo "</font>"; }
}
根据源码可知,当接收到uname
和Password
后,先用check_input()
检查一遍uname
后,再连接数据库根据uname
看uname
和password
是否存在,若不存在,就回显那张打脸的图,若存在就可以正常报错了。
0x02 check_input()函数分析
上代码
function check_input($con, $value){if(!empty($value)){// truncation (see comments)$value = substr($value,0,15);}// Stripslashes if magic quotes enabledif (get_magic_quotes_gpc()){$value = stripslashes($value);}// Quote if not a numberif (!ctype_digit($value)){$value = "'" . mysqli_real_escape_string($con, $value) . "'";}else{$value = intval($value);}return $value;}
分析该代码,先知晓其中的函数
- 若
uname
非空,截取它的前15个字符。 - 若
php
环境变量magic_quotes_gpc
打开,去除转义的反斜杠\
。 - 若
uname
字符串非数字,将其中特殊字符转义;为数字则将其转为数字类型。
所以我们几乎不可能在uname
处注入,唯一的注入点在passwd
处。
0x03 时间延迟型盲注
1.根据上述分析,本关不能采用布尔型盲注,因为uname
存在才能返回MySQL
报错,所以得先猜出uname
,比如admin
,dumb
等,而且uname
不能进行注入,所以只有考虑password
进行注入,果然admin
存在,登陆成功
构造passwd
='sleep(5)
报错,
2.再跟据报错构造'#
进行闭合,再进行是否存在时间延长型盲注,构造password
='or sleep(5)#
,页面加载很慢,存在时间延迟盲注。
3.sqlmap跑咯
构造py -2 sqlmap.py -u "http://127.0.0.1/sqlilabs/Less-17/" --data "uname=admin&passwd=&submit=Submit" --technique T -dbs --batch
跑出数据库
其他就是参数改改参数了,不写了
0x04 extractvalue()注入
extractvalue()
函数:对XML文档进行查询的函数
语法:extractvalue(目标xml文档,xml路径)
第二个参数是可以注入的地方,xml
文档中查找字符位置是用 /xxx/xxx/xxx/
…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
正常查询 第二个参数的位置格式 为 /xxx/xx/xx/xx
,即使查询不到也不会报错,所以故意写入语法错误,使其返回我们想要知道的内容,一般用extractvalue(1,concat('~',(想要知道的内容)))
,还有一点该函数能查询的消息最大长度为32位,所以有时候还需要substr()
函数,extractvallue(1,concat('~',substr((select database())1,5)))
(查询数据库名称前五位)。
1.由时间盲注我们已经知道了闭合方式,所以可以直接开始注入,构造uname=admin&passwd='or extractvalue(1,concat('~',(database())))#&submit=Submit
,成功爆出库名
2,其他爆表,爆字段采用相应的语句就好了,在Get篇都有
0x05 updatexml()注入
updatexml()
函数与extractvalue()
类似,是更新xml
文档的函数。
语法:updatexml(目标xml文档,xml路径,更新的内容)
报错方式相同:
select username from security.user where id=1 and (updatexml(‘anything’,concat(‘~’,(select database())),’anything’))
注入过程同extractvalue()
注入一样
0x06 双查询注入
这里主要想强调两个东西:
一.or
/and
后跟双查询注入的时候应该使用派生表,即select 1 from(select count(*),concat((查询语句),floor(rand()*2))as x from information_schema.tables)as a
而使用union
时,需要满足两个select
列数相同的条件。
(这都是笔者亲自做实验的结论)
二.后台为select
时要用union
(也可以用and
,or
);后台为update/delete/insert
时要用or
开始注入(这里笔者使用burp,也可以用hackbar,直接在登陆框注入也可以),
1.爆库
2.使用burp直接爆破出所有库
3.爆表,表列字段也一样,这里说一下如何使用burp爆破吧
1)将拦截到的数据包发送到Repeater
,然后在Repeater
中清除掉默认爆破点,再自己添加爆破点
2.在载荷里面选着爆破参数,这里参数的选择如图
然后就可以开始攻击了。
3.爆破完后就可以查看结果了
sqli-labs(11-17)相关推荐
- SQLi LABS Less 17 报错注入
第十七关单引号字符型注入 ,推荐使用报错注入. 一.功能分析 这关是一个修改密码的功能,先查询用户名是否正确. 如果用户名正确,后台就修改密码,并提示修改成功: 如果用户名错误,页面就直接返回修改失败 ...
- Interview:算法岗位面试—11.17下午上海某网**软件公司(上市)技术面之比赛考察、目标检测算法、视频分析算法考点
Interview:算法岗位面试-11.17下午上海某网**软件公司(上市)技术面之比赛考察.目标检测算法.视频分析算法考点 导读:邀约的下午14.30,到的时候前边有两个学生在等待,当轮到我的时候, ...
- SQLi LABS Less 27a 联合注入+布尔盲注+时间盲注
第27a关是双引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.布尔盲注.时间盲注三种解题方式. 其他 SQLi LABS 靶场的解题步 ...
- SQLi LABS Less 27 联合注入+报错注入+布尔盲注+时间盲注
第27关是单引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.报错注入.布尔盲注.时间盲注四种解题方式. 其他 SQLi LABS 靶场 ...
- SQLi LABS Less 26a 联合注入+布尔盲注
第26a关是单引号+括号的字符型注入: 后台过滤了关键字( and or ),注释(/* # -- /),空格: 这篇文章提供联合注入.布尔盲注.两种解题方式. SQLi LABS其他关卡可以 ...
- SQLi LABS Less 25 联合注入+报错注入+布尔盲注
第二十五关单引号字符型注入: 过滤了关键字(and.or),可以使用双写绕过: 这篇文章提供了联合注入.报错注入.布尔盲注三种解题方法. SQLi LABS 其余关卡可参考我的专栏:SQLi-LABS ...
- Linux异常 时间戳 2018-10-08 11:17:22 是未来的 5288025.776562967 秒之后
Linux异常 时间戳 2018-10-08 11:17:22 是未来的 5288025.776562967 秒之后 参考文章: (1)Linux异常 时间戳 2018-10-08 11:17:22 ...
- 11.9 至 11.17 四道典型题记录: Counter 弹出 | map函数 | 子集求取 | 有序字符桶分装
11.9 至 11.17 四道典型题记录: Counter 弹出 | map函数 | 子集求取 | 有序字符桶分装 昨天休息的时候一直在想应该学习哪种语言,我想这也是好多人发愁无法下手的原因之一 ...
- dom更新到底在javascript事件循环的哪个阶段?「前端每日一题v22.11.17」
dom更新到底在javascript事件循环的哪个阶段?「前端每日一题v22.11.17」 昨天写了一篇文章,是javascript的事件循环机制,然后在某乎上也发了,在发的时候看到了一个问题,dom ...
- 预习:11.16/11.17 Apache默认虚拟主机-11.24 静态元素过期时间
预习: 11.16/11.17 Apache默认虚拟主机 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 11.22 访问日志不记录静态文件 11 ...
最新文章
- FAT32转换NTFS格式的命令
- tp剩余未验证内容-8
- Server2003PDC迁移到Server2008R2BDC
- 在tsx中引入less会提示模块找不到,但是可以运行
- 使用Spring AOP进行面向方面的编程
- 工作184:自定义事件
- Codeforces Round #558 Div.2 - C2 - Power Transmission (Hard Edition)
- 遗传算法工具箱_含约束条件的遗传算法在连续催化重整优化操作中的应用
- Unreal Engine 4 系列教程 Part 8:粒子系统教程
- mac关闭自动更新提示
- C盘爆满,电脑卡顿,笔记本电脑一键重置,让电脑运行重新变快!
- 带有分销体系的开源知识付费系统——cremb
- 如何安装VCC++6.0并创建第一个项目
- python中重采样的时间间隔与等距,resample,periods
- 切勿忽视晶振的选型设计!
- Android — jimu Mirror
- linux磁盘检测工具
- 51单片机74ls273并行输出地址c语言程序,51单片机I/O口的扩展问题:使用 锁存器74LS273连接后还是只有8个端口,为什么说是扩展呢?...
- 10.配置Elasticsearch
- 狠!删库跑路!一行代码蒸发10亿人民币!
热门文章
- access 调用 webbrowser_函数调用过程与栈帧结构 - wuli涛涛
- CSDN 第一篇随笔
- 清华计算机系分数线2018四川,四川多少分能上清华?附清华大学在四川的录取分数线...
- Fibonacci 斐波那契数列的R语言实现
- tx2上装scikit-image
- 中美计算机软件著作权登记差异与比较
- 【2019.05】腾讯防水墙滑动验证码破解 python + selenium + OpenCV
- gyp ERR! stack Error: Can't find Python executable python, you can set the PYT HON env variable.
- 100-1000的水仙花数 有哪些?
- 制作ZedBoard-linaro-desktop-ubuntu全过程之运行linaro系统