美文网首页
sqli-labs Less-24-25a

sqli-labs Less-24-25a

作者: jun123123 | 来源:发表于2019-10-17 16:08 被阅读0次
  • Less-24
    代码审计题
    进入页面后各种加',"都返回相同错误页面,又看到题目写着二次注入,很明显是我不会的题
    找了篇wp,发现也是代码审计,只好去看代码

    1.png
    一共8个php文件
    大概浏览一遍,发现有5个是html静态文件,只有
  • login.php

  • login_create.php

  • pass_change.php
    三个php动态文件,找到查询的部分,发现变量都用ysql_real_escape_string()函数或mysql_escape_string()函数进行了过滤,无法注入,只有pass_change.php文件中$username= $_SESSION["username"];一个地方是直接从$_SESSION中读出username值。但是_SESSION是服务器端生成的无法伪造,只能通过修改username值。该站虽然无修改username的接口,但是可以创建用户,我们可以将注入语句写入创建的用户名中,进入注册页面,注册名为admin' #'的用户

    2.png
    注册成功后用该账号登录,进入修改密码页面,修改密码为123
    3.png
    修改成功后登出,用username=admin,password=123登录,发现admin账号的密码已被修改为123,注入成功。
    4.png
    5.png
  • Less-25
    本来是领开一篇写Less-25的,结果新建文章遇到Record not found的问题,只好在Less-24后面接上了。
    进入页面,看到图片可知应该是过滤了'or' 和 'and'
    首先判断注入类型,单字符型注入。
    本来想通过order by语句判断查询列数的,结果order中也含'or'被过滤了(笑)


    1.png

    那么通过联合查询判断查询列数


    2.png
    直接构造联合查询payload:
?id=0' union select 1,group_concat(username),group_concat(password) from users %23

结果发现password中也含'or'


3.png

因此构造payload:

?id=0' union select 1,group_concat(username),group_concat(id) from users %23
4.png

查询username和id,通过id就可以得到password,但这种方法并不好因为不是通过注入得到password,于是去看了wp,发现存在过滤次数的问题。
这里只进行了一次过滤
注:只进行一次过滤并不是指只过滤一个'or',而是对字符串只过滤一遍。例如passworororord中的'or'仍然会被全部过滤,而passwoorrd中只会过滤中间的'or',从而实现了过滤绕过
构造payload:

?id=0' union select 1,group_concat(username),group_concat(passwoorrd) from users %23
5.png

注入成功
(一般来说都不会进行多次过滤,因为可能正常字段中的'or'也会被过滤)

  • Less-25a
    和Less-25一样,区别有两个,一个是单字符型注入变成了数值型注入,另一个是无sql查询报错回显,构造payload:
?id=0 union select 1,group_concat(username),group_concat(passwoorrd) from users %23
6.png

注入成功

相关文章

网友评论

      本文标题:sqli-labs Less-24-25a

      本文链接:https://www.haomeiwen.com/subject/upfvmctx.html