0x03-Web第二天

web感悟

  • 也是逆向的过程,猜测服务的代码逻辑
  • 出题也是一种学习
  • 理解机制,有理可循

SQL注入

\$user = \$_POST['username'];
\$pwd=md5(\$_POST['password']);
\$query="select * from admin where \$username == \$password "

union注入

  • 有回显。
  • 猜字段数。
  • 最方便的注入。
  • 可以填充查询结果,并额外执行一次。

缺点:很多时候不是select注入,不存在union注入。union关键词经常被过滤。

报错注入

  • 页面输出sql报错
  • 注入效率高
  • 利用SQL语句使数据库报错
  • 报错信息里包含SQL执行结果

1.常见报错注入函数

floor
extractvalue
updatexml
EXP
UTL_INADDR

boolean盲注

  • 没有数据回显情况下,存在不同界面内容回显。
  • 逐个爆破猜解,效率偏低
  • 利用回显不同推测SQL语句执行结果真或者假

截取字符串相关函数

  1. left(a,b)
  2. substr(a,b,c)
  3. mid(a,b,c)
  4. regexp
  5. if

timing盲注

  • 不存在不同回显,但SQL语句被执行
  • 逐个爆破+时间延迟,效率最低
  • 利用if(query=true) delay(1000);else pass;的逻辑。观察是否睡眠推断是否正确。

SQL注入进一步利用

  • mysql的Information_schema数据库存储了数据库的结构信息,放在Information_schema.tables以及Information_schema.columns中。

爆数据库名:id=200’ union select 1,2,database()# 爆表名:id=200’ union select

文件读写

  • 读取关键文件 select LOADFILE(‘/etc/passwd’);
  • 写入shell select ‘’ into dumpfile ‘/var/www/html/1.php’

命令执行

  • 利用数据库对服务器写脚本

WAF绕过

  • 双写关键字 SelselectecT
  • 大小写绕过 SeLeCt Or
  • 编码绕过
    1. ascii char(97)+char(100)+char(109)=adm
    2. 16进制 extractvalue(0x3C613E61646D696E3c2F613E,0x2f61)
    3. unicode编码 单引号 %u0027 %u02b9 %u02bc %u02c8 %u2032 %uff07
    4. url编码 or 1=1 %6f%72%20%31%3d%31 数字可以先转16%再转Url
    5. or   and &&
    6. 空格绕过select(username)from(admin)
    7. 科学计算法绕过where username=1e1union select
    8. =><绕过where id in(1,2) where id between 1 and 3 like
    9. access使用dlookup绕过select from
      • (user=12’,info=dlookup(‘[user]’,’userinfo’,’[id]=1’)%00)
    10. 空格替换:/**/ %a0 %0a %0d %09 tab ……
    11. 内联注释 select 1 from /*!admin*/ /*!union*/ select 2,
  • 变换姿势绕过
  • 特殊字符

http://58.154.33.13:8001/login.php

username=admin'/**/and/**/password<'52806'#&password=

http://58.154.33.13:8003/?order=if(database(),price,name)

二次注入

将恶意SQL插入到数据库,程序对输出的数据过于信任。

插入超长的数据,导致之后的被截断,剩下的就可能造成注入。

宽字节注入

数据库使用了宽字符集(GBK)。将一些两个字符当作一个字符。如:0xbf27\0xbf5c

反斜杠是0x5c,输入0xbf27转义后成为0xbf5c27,

Access偏移注入

万能密码

构造永真条件,得到条目。

mysql过长截断

防御文件上传

  1. 客户端javascript校验
  2. 检查扩展名
  3. 检查mime类型
  4. 随机文件名
  5. 隐藏路径
  6. 重写内容
  7. 检查内容是否合法
    • php3\php5\phtml\PHP\pHP\phtm
    • jsp\jspx\jspf
    • asp\asa\cer\aspx
    • exe\exee

白名单绕过

  • 截断绕过
  • 解析漏洞
    • iis解析漏洞
    • apache解析漏洞
    • nginx解析漏洞

软连接骚操作

压缩解压后软连接不会消失,导致可以读取有权限读取的任意文件。

ln -s index.php test.txt
tar cvf test.tar test.txt

server: Set–Cookie:user=bob

  • 通过诱导受害者访问http得到cookie,然后利用此cookie访问https。cookie同源策略比较松。
  • 带有Secure属性的session只能在https中传输。
    • 覆盖cookie,用自己的cookie,session=attacker;domain=.bank.com。服务器会按照cookie出现的先后顺序来读。一般来说更长path更早创建的cookie被读取。
  • 同一个页面由几个不同的cookie请求组成。

空格+admin复写admin账户 admin+空格复写 123’,’../../../../../../../../../etc/passwd’)# 类似二次注入

转载请注明:碎雪的小屋 » 0x03-Web第二天

Show Disqus Comments

Search

    Table of Contents